Container Service Kubernetes 版支援兩種容器網路外掛程式:Terway與Flannel。本文主要對比了兩種容器網路外掛程式的功能及適用情境。
Terway是阿里雲自研的網路外掛程式,通過ENI實現Pod的網路通訊,提供了基於eBPF的網路加速、NetworkPolicy和Pod層級交換器/安全性群組等能力,適用於對節點規模、網路效能和安全等有較高需求的高效能運算、遊戲、微服務等情境。
Flannel是社區開源的網路外掛程式,在ACK中採用了阿里雲VPC專用網路模式,報文經過VPC路由表直接轉寄,適用於節點規模較小、需要簡化網路設定、無需對容器網路進行自訂控制的情境。
容器網路外掛程式需要在建立叢集時進行安裝,且叢集建立後不支援更改。
使用Flannel時,ALB Ingress僅支援將請求轉寄到NodePort與LoadBalancer類型的Service,不支援ClusterIP類型。
對比項 | Terway | Flannel |
網路效能 |
說明 在DataPath V2模式下,容器網路的串連跟蹤(conntrack)資訊通過eBPF map進行儲存。與Linux系統原生的conntrack機制類似,eBPF conntrack基於LRU(最近最少使用)演算法實現,當map容量達到上限時,會自動淘汰最舊的串連記錄以儲存新串連,您需要根據實際業務規模合理配置相關參數,以防串連數超出限制。請參考最佳化Terway模式下conntrack配置。 | |
節點配額 | 使用Terway時節點數量上限依賴於單叢集容量限制。
| 使用Flannel時節點數量上限依賴於VPC路由表條目數和單叢集容量限制。 VPC路由表條目數:預設支援200個條目,申請配額後最大支援1000個條目。叢集中一個節點對應一個條目,即最大支援1000個節點。
|
節點Pod數量 | Pod使用節點ENI,單節點Pod數量由節點的規格和指標資料(ENI數量、單網卡私人IPv4地址數)決定。
以上圖一個計算型c7、ecs.c7.4xlarge、16 vCPU 32 GiB規格的ECS執行個體為例:
雖然計算型c6與計算型c7執行個體擁有相同的ENI數量,但是單網卡私人IPv4地址數指標上的差別使得計算型c6在多IP模式下最多能容納140個Pod。關於詳細的計算方法,請參見節點Pod限額計算方法。 | 單節點Pod數量依賴於配置容器網段時設定的節點Pod數量和子網路遮罩位。
以上圖為例,在ACK託管叢集Pro版當前Pod網路CIDR(172.16.0.0/20)配置下,每個節點最多容納256個Pod,叢集內最多可允許部署16個節點。 重要 Flannel建立成功後不能修改最大節點數量。 |
容器網段 |
|
|
網路安全 |
|
|
IPv4/IPv6雙棧 | 支援雙棧。 | 不支援雙棧。 說明 ACK使用的是經過修改以適配阿里雲雲上環境的Flannel外掛程式,並不與開源社區保持完全同步。ACK Flannel的更新記錄,請參見Flannel。 |
固定Pod IP | 支援為Pod配置固定IP。 | 不支援為Pod配置固定IP。 |
會話保持 | 負載平衡後端直接對接Pod,依託會話保持能力,可以實現在後端Pod發生變化時服務無中斷。 | 負載平衡後端使用NodePort串連Pod,在Pod發生變化時,流量會中斷,可能導致業務上的重試。 |
多叢集互訪 | 多個叢集的Pod之間只要設定安全性群組開放連接埠就可以互相通訊。 | 無法支援。 |
Pod源IP保留 | Pod訪問VPC內其他端點,所使用的源IP都是Pod IP,便於審計。 | Pod訪問VPC內其他端點,所使用的源IP是節點IP,Pod IP無法保留。 |
後續步驟
在建立叢集後,為Pod、Service、節點分配的網段無法修改。網段的大小決定這三種資源的數量上限,可能會對您的業務部署產生影響。規劃不同的網段可以實現資源在網路邏輯上的隔離,以便於您實現存取控制、定製化路由等操作。因此推薦您在建立叢集前完成網段規劃,詳細內容請參見ACK託管叢集網路規劃。
完成網段規劃後:
如果您計劃使用Terway,請參見使用Terway網路外掛程式在建立叢集時安裝Terway。
如果您計劃使用Flannel,請參見使用Flannel網路外掛程式在建立叢集時安裝Flannel。

