從CNCF基金會的成立,到Kubernetes社群蓬勃發展,曆經6載,17年異軍突起,在mesos、swarm等項目角逐中,拔得頭籌,繼而一統容器編排,其成功的關鍵原因可概括為以下幾點:
- 項目上司者們的堅守與遠見
- 社群的良好的運作與社群文化
- 社群與企業落地的正回報
今天zouyee為大家帶來《一文搞懂Kubernetes網絡政策(下)》,其中《kuberneter排程由淺入深:架構》正在編寫中,敬請期待,目前涉及版本均為
1.20.+
。
四、NetworkPolicy 開發
實作一個支援 Network Policy 的網絡擴充需要至少包含兩個元件
- CNI 網絡插件:負責給 Pod 配置網絡接口
- Policy controller:監聽 Network Policy 的變化,并将 Policy 應用到相應的網絡接口
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-LM10DPQi-1610629792292)(https://github.com/feiskyer/kubernetes-handbook/raw/master/plugins/images/policy-controller.jpg)]
性能測試
下圖基于Kubernetes 1.19版本測試了以下特性:
1)MTU auto config
2) 帶寬性能: Pod to Pod、Pod to Service(TCP、UDP)
3)資源消耗: Pod to Pod、Pod to Service(TCP、UDP)
4)安全特性:Network Policies、 Encryption等

calico其他詳細的能力說明,可參看官網。
五、未來展望
a. SCTP特性
支援版本:
Kubernetes v1.19 [beta]
作為一個 Beta 特性,SCTP 預設是被啟用的。 要在叢集層面禁用 SCTP,需要為
kube-apiserver
關閉特性
--feature-gates=SCTPSupport=false,...
以禁用
SCTP
。 啟用該特性後,使用者可以将 NetworkPolicy 的
protocol
字段設定為
SCTP
。
⚠️ CNI插件需要支援SCTP協定
b. 待開發
截止Kubernetes v1.20 ,NetworkPolicy API 還不支援下述功能。
- 強制叢集内部流量經過某公用網關(可通過服務網格或其他代理來實作)
- 與 TLS 相關的場景(可使用服務網格或者 Ingress 控制器)
- 實作适用于所有名字空間或 Pods 的預設政策(如calico)
- 進階的政策查詢或者政策驗證相關工具(如calico)
- 在同一政策聲明中選擇目标端口範圍的能力
- 生成網絡安全事件日志的能力(例如,被阻塞或接收的連接配接請求)
- 禁止本地回路或指向宿主的網絡流量(Pod 目前無法阻塞 localhost 通路, 它們也無法禁止來自所在節點的通路請求)。
上述需求可以通過作業系統元件(如 SELinux、OpenVSwitch、IPTables 等) 或者七層技術(Ingress 控制器、服務網格實作)及準入控制器進行功能增強,當然有興趣的可以參考calico及OPA項目。
六、參考文檔
- Kubernetes network policies
- Declare Network Policy
- Kubernetes Network Policy Recipes
- fesikyer network policy