全部產品
Search
文件中心

Container Service for Kubernetes:容器網路外掛程式Terway與Flannel對比

更新時間:Jul 01, 2025

Container Service Kubernetes 版支援兩種容器網路外掛程式:Terway與Flannel。本文主要對比了兩種容器網路外掛程式的功能及適用情境。

  • Terway是阿里雲自研的網路外掛程式,通過ENI實現Pod的網路通訊,提供了基於eBPF的網路加速、NetworkPolicy和Pod層級交換器/安全性群組等能力,適用於對節點規模、網路效能和安全等有較高需求的高效能運算、遊戲、微服務等情境。

  • Flannel是社區開源的網路外掛程式,在ACK中採用了阿里雲VPC專用網路模式,報文經過VPC路由表直接轉寄,適用於節點規模較小、需要簡化網路設定、無需對容器網路進行自訂控制的情境。

重要
  • 容器網路外掛程式需要在建立叢集時進行安裝,且叢集建立後不支援更改。

  • 使用Flannel時,ALB Ingress僅支援將請求轉寄到NodePort與LoadBalancer類型的Service,不支援ClusterIP類型。

對比項

Terway

Flannel

網路效能

  • Terway在TCP RR、UDP PPS、Bandwidth頻寬、Latency延遲這四個方面的效能都領先於社區版Flannel。

    說明

    測試資料為基於ecs.ebmg5s.24xlarge執行個體的理論值,實際資料以您的作業環境為準。更多詳細內容,請參見Alibaba Cloud Native Community

  • Terway支援獨佔ENI模式:Pod獨佔ENI,擁有極高的網路效能,適用於高效能運算、遊戲、微服務等情境。

  • Terway支援共用ENI DataPath V2加速模式:DataPath V2是IPVLAN方案的升級版,Pod訪問叢集內的端點時支援通過eBPF繞過節點網路通訊協定棧,加速網路訪問。

說明

在DataPath V2模式下,容器網路的串連跟蹤(conntrack)資訊通過eBPF map進行儲存。與Linux系統原生的conntrack機制類似,eBPF conntrack基於LRU(最近最少使用)演算法實現,當map容量達到上限時,會自動淘汰最舊的串連記錄以儲存新串連,您需要根據實際業務規模合理配置相關參數,以防串連數超出限制。請參考最佳化Terway模式下conntrack配置

節點配額

使用Terway時節點數量上限依賴於單叢集容量限制。

  • ACK託管叢集Pro版:預設支援5,000個節點,最大支援15,000個節點。

  • ACK託管叢集基礎版:10個節點。

使用Flannel時節點數量上限依賴於VPC路由表條目數和單叢集容量限制。

VPC路由表條目數:預設支援200個條目,申請配額後最大支援1000個條目。叢集中一個節點對應一個條目,即最大支援1000個節點。

  • ACK託管叢集Pro版:預設支援200個節點,最大支援1,000個節點。

  • ACK託管叢集基礎版:10個節點。

節點Pod數量

Pod使用節點ENI,單節點Pod數量由節點的規格和指標資料(ENI數量單網卡私人IPv4地址數)決定。

image

以上圖一個計算型c7、ecs.c7.4xlarge、16 vCPU 32 GiB規格的ECS執行個體為例:

  • 多IP模式(共用ENI)下最多容納210個Pod。

  • 獨佔模式下最多容納7個Pod。

雖然計算型c6計算型c7執行個體擁有相同的ENI數量,但是單網卡私人IPv4地址數指標上的差別使得計算型c6在多IP模式下最多能容納140個Pod。關於詳細的計算方法,請參見節點Pod限額計算方法

單節點Pod數量依賴於配置容器網段時設定的節點Pod數量和子網路遮罩位。

image

以上圖為例,在ACK託管叢集Pro版當前Pod網路CIDR(172.16.0.0/20)配置下,每個節點最多容納256個Pod,叢集內最多可允許部署16個節點。

重要

Flannel建立成功後不能修改最大節點數量。

容器網段

  • 容器網段從VPC網段中分配,因此對VPC的地址消耗較高,建議在使用前規劃充足的VPC網段。

  • 容器網段(VPC網段)、Service網段互相獨立,不能重合,網段無法修改。

  • 支援通過新增虛擬交換器(vSwitch)的方式對容器網段進行擴容。

  • 容器網段獨立於VPC網段。Flannel會為叢集中的每個節點從已配置的容器網段中分配一個子網網段subnet,節點內所有Pod的IP地址都將從subnet中分配。

  • 容器網段、節點網段(VPC網段)、Service網段互相獨立,不能重合,網段無法修改。

  • 不支援容器網段擴容。

網路安全

  • 支援為Pod配置獨立的虛擬交換器與安全性群組。

  • 支援Kubernetes原生網路原則NetworkPolicy,可以自訂容器間的存取控制。

  • 不支援為Pod配置獨立的虛擬交換器與安全性群組。

  • 不支援NetworkPolicy。

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託管叢集網路規劃

  • 完成網段規劃後:

相關文檔

  • 關於叢集內節點數量的限制與配額提升方式,請參見配額與限制

  • 關於在使用容器網路時遇到的常見問題,請參見容器網路FAQ