Terway是阿里雲開源的基於Virtual Private Cloud的容器網路介面CNI(Container Network Interface)外掛程式,支援基於Kubernetes標準的網路原則來定義容器間的存取原則。
閱讀前提示
為了讓您能更好地瞭解Terway的工作模式,建議您在使用Terway網路外掛程式前閱讀本文檔。
閱讀本文前,推薦您參見網路、容器網路外掛程式Terway與Flannel對比文檔瞭解容器網路外掛程式的基本概念並完成容器網路外掛程式選型。
建立叢集前需要對叢集中的網段進行規劃,具體操作請參見ACK託管叢集網路規劃。
費用說明
使用Terway外掛程式並不收費,但在每個節點上都會部署Terway所使用的Pod,這些Pod會佔用少量節點資源。關於ACK的雲產品資源計費資訊,請參見雲產品資源費用。
節點Pod限額計算方法
使用Terway網路外掛程式時,單節點支援的最大數量基於節點使用的ECS規格支援的ENI數量。Terway對單節點的Pod限額有最低限制,單節點支援的Pod限額需要滿足限制才能正常加入叢集。詳細資料請參見下表:
Terway模式 | 單節點Pod限額 | 樣本值 | 單節點支援固定IP、獨立虛擬交換器、獨立安全性群組功能的Pod數量 |
共用ENI模式 | (ECS規格支援的ENI數量-1)×單個ENI支援的私人IP數。 (EniQuantity-1)×EniPrivateIpAddressQuantity 說明 單節點的Pod限額必須>11才能加入叢集。 | 以通用型執行個體規格類型系列g7的ecs.g7.4xlarge規格為例。該規格執行個體支援8個ENI,單個ENI支援30個私人IP。單節點Pod限額為(8-1)×30=210個Pod。 重要 使用節點ENI的Pod限額是由節點規格決定的固定值。修改 | 0 |
共用ENI模式+Trunk ENI | 單節點Trunk Pod限額: ECS規格支援的總網卡數-ECS規格支援的彈性網卡數。 EniTotalQuantity-EniQuantity | ||
獨佔ENI模式 | ECS 執行個體: EniQuantity-1 靈駿執行個體: 建立及管理靈駿彈性網卡-1。 LeniQuota-1 說明 單節點的Pod限額必須>6才能加入叢集。 | 以通用型執行個體規格類型系列g7的ecs.g7.4xlarge規格為例。該規格執行個體支援8個ENI。單節點Pod限額為(8-1)=7個Pod。 | EniQuantity-1 說明 靈駿執行個體不支援。 |
在Terway v1.11.0及之後的版本中,Terway支援為節點池選擇獨佔ENI模式或共用ENI模式,在單個叢集中可同時存在兩種節點池,更多資訊請參見Terway發布記錄。
查看節點支援的最大容器網路Pod數量
方式一:建立節點池時,在執行個體規格地區,通過Terway相容性(可支援 Pod 數量)查看某一執行個體規格支援的Pod數量。
方式二:先參考下列方式擷取計算資料,然後手動計算ECS規格支援的Pod數量。
通過執行個體規格類型系列文檔查詢ECS執行個體支援的彈性網卡數量。
通過OpenAPI進行查詢,通過指定已有節點的執行個體規格
InstanceTypes,單擊發起調用,傳回值中EniQuantity表示執行個體規格支援的彈性網卡上限,EniPrivateIpAddressQuantity表示單個彈性網卡支援的私人IP數量。EniTotalQuantity表明執行個體規格支援的總網卡數量。
在建立叢集時安裝Terway網路外掛程式
您需要在建立叢集時安裝Terway網路外掛程式,已建立的叢集不支援修改網路外掛程式類型。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊建立叢集。
為Terway網路外掛程式配置叢集網路的關鍵參數。關於建立叢集的其他參數,請參見建立ACK託管叢集。
配置項
說明
IPv6雙棧
勾選開啟後,會為叢集開啟雙棧,同時支援IPv4與IPv6地址。
專用網路
叢集所使用的VPC。
網路外掛程式
選擇Terway。
DataPath V2
勾選後,會使用DataPathv2加速模式。選擇加速模式後,Terway會採取不同於共用ENI常規模式的流量轉寄鏈路,實現更快的網路通訊。此模式的具體特性,請參見網路加速。
說明建立叢集初始版本為Kubernetes 1.34或更高,且選擇DataPath V2的情況下,Terway節點將不再運行kube-proxy。
此模式下預設支援portmap,無需配置portmap外掛程式,配置自訂CNI Chain。
DataPath V2僅支援下列作業系統鏡像,且要求Linux核心版本為5.10或更高:
Alibaba Cloud Linux 3(所有版本)
ContainerOS
Ubuntu
開啟後,Terway policy容器預計會在每個Worker節點上多佔用0.5核512MB的資源,此消耗會隨著叢集規模增大而增大。在Terway預設配置中,policy容器的CPU上限為1核,記憶體無限制。
在DataPath V2模式下,容器網路的串連跟蹤(conntrack)資訊通過eBPF map進行儲存。與Linux系統原生的conntrack機制類似,eBPF conntrack基於LRU(最近最少使用)演算法實現,當map容量達到上限時,會自動淘汰最舊的串連記錄以儲存新串連,您需要根據實際業務規模合理配置相關參數,以防串連數超出限制。請參考最佳化Terway模式下conntrack配置。
NetworkPolicy 支援
勾選後,則會支援Kubernetes原生的
NetworkPolicy。說明從Terway v1.9.2開始,建立叢集NetworkPolicy由eBPF的實現提供,資料面會開啟DataPathv2功能。
通過控制台管理
NetworkPolicy的功能正在公測中,如果您希望使用,請在配額平台提交申請。
Trunk ENI 支援
勾選後,會啟用Trunk ENI模式,可以為每個Pod配置固定IP、獨立的虛擬交換器、安全性群組。
說明ACK託管叢集無需申請即可選擇Trunk ENI選項。如果您希望在ACK專有叢集中開啟Trunk ENI,請先在配額平台提交申請。
從Kubernetes 1.31開始,建立的ACK託管叢集會自動啟用Trunk ENI功能,無需手動進行選擇。
交換器
叢集中節點所使用的虛擬交換器網段。建議選擇來自3個及以上不同可用性區域的交換器,以達到更高叢集可用性等級。
Pod 交換器
Pod所使用的虛擬交換器網段,可以與節點虛擬交換器網段重合。
服務網段
Service所使用的網段,不能與節點及Pod的網段重合。
IPv6 服務網段
IP在啟用IPv6雙棧後可配置。
Terway工作模式參考資訊
您可參照下方的詳細介紹,瞭解Terway多種模式具體的對比以及工作原理。
共用ENI模式與獨佔ENI模式
為Pod分配IP地址時,Terway有兩種模式:共用ENI模式和獨佔ENI模式。
在Terway v1.11.0及之後的版本中,Terway在單個叢集中支援為單個節點池選擇共用ENI或獨佔ENI模式,在建立叢集時不再支援勾選。
節點上的主彈性網卡被分配給節點OS,其餘彈性網卡會被Terway託管用於配置Pod網路,因此請勿手動設定這些彈性網卡。如果您需要自行管理部分彈性網卡,請參見為彈性網卡(ENI)配置白名單。
對比項 | 共用ENI模式 | 獨佔ENI模式 | |
Pod IP地址管理 | ENI分配方式 | 多個Pod共用一個ENI。 | 每個Pod在其節點上獨佔一個ENI。 |
Pod部署密度 | Pod部署密度較高。單個節點可支援數百個Pod。 | Pod部署密度較低。常用規格的節點只支援個位元的Pod。 | |
網路架構 | |||
資料鏈路 | Pod訪問其他Pod,或作為Service後端被訪問時,流量都會經過節點的網路通訊協定棧。 | Pod訪問Service時,流量仍舊會經過節點作業系統的協議棧。但當Pod訪問其他Pod,或作為Service後端被訪問時,會直接使用掛載的ENI繞過節點網路通訊協定棧,以此獲得更高的效能。 | |
適用情境 | 常規的Kubernetes使用情境。 | 這種模式中網路效能更接近於傳統虛擬機器,適合對網路效能有較高要求的情境,比如需要高網路輸送量或低延遲的應用。 | |
網路加速 | 支援DataPathv2網路加速,具體資訊請參見網路加速。 | 不支援網路加速,但Pod獨佔ENI資源,已經提供了極佳的網路效能。 | |
NetworkPolicy支援 | 支援Kubernetes原生的 | 不支援 | |
節點維度網路設定 | 支援。請參見節點維度網路設定。 | 支援。請參見節點維度網路設定。 | |
存取控制 | 開啟Trunk ENI配置後,支援為Pod配置固定IP、獨立的安全性群組和虛擬交換器,具體資訊請參見為Pod配置固定IP、獨立虛擬交換器與安全性群組。 | 支援為Pod配置固定IP、獨立的安全性群組和虛擬交換器。 | |
網路加速
使用Terway共用ENI模式時,可以選擇開啟網路加速模式。選擇開啟加速模式後,Terway會採取不同於常規共用ENI模式的流量轉寄路徑,以達成更高的效能。Terway目前支援DataPathv2加速模式,請參考下方的說明瞭解DataPathv2的特點。
DataPathv2是更早的IPvlan+eBPF加速模式的升級版。在Terway V1.8.0及更晚的版本中,建立叢集並安裝Terway外掛程式時只支援選擇DataPathv2加速。
DataPathv2加速模式與IPvlan+eBPF加速模式僅適用於共用ENI節點池,不影響獨佔ENI節點池。
DataPathv2特點 | 說明 |
適用Terway版本 | Terway V1.8.0及後續版本中建立的叢集。 |
網路架構 | |
加速資料鏈路 |
|
效能最佳化 |
|
使用方法 | 在建立叢集時,為網路外掛程式選擇Terway後,勾選DataPath V2選項。 |
注意事項 |
|
在更早建立的叢集中,您可能選擇了IPvlan+eBPF加速模式,您可以參照下方的說明瞭解其特點。
存取控制
Terway共用ENI模式通過對NetworkPolicy的支援和Trunk ENI選項,允許對叢集內的網路流量進行更精細化的管理。Terway獨佔ENI模式同樣支援一部分流量控制能力。
NetworkPolicy支援
Terway獨佔ENI節點池不支援
NetworkPolicy。Terway共用ENI節點池支援Kubernetes原生的
NetworkPolicy功能,它通過使用者定義的規則來控制Pod之間的網路流量。在建立叢集時,如果為網路外掛程式選擇Terway後,勾選NetworkPolicy 支援選項,即可使叢集支援
NetworkPolicy。詳細資料,請參見在ACK叢集使用網路原則。說明通過控制台管理
NetworkPolicy的功能正在公測中,如果您希望使用,請在配額平台提交申請。
為Pod配置固定IP、獨立虛擬交換器與安全性群組
Terway獨佔ENI節點池預設支援為每個Pod配置固定IP、獨立的虛擬交換器及安全性群組,能提供精細化流量管理、流量隔離、網路原則配置和IP管理能力。
Trunk ENI是Terway共用ENI節點池的一種選項。開啟Trunk ENI後,可以為每個Pod配置固定IP、獨立的虛擬交換器、安全性群組。
在建立叢集時,網路外掛程式選擇Terway後,勾選Trunk ENI 支援選項。詳細資料,請參見為Pod配置固定IP及獨立虛擬交換器、安全性群組。
說明ACK託管叢集無需申請即可選擇Trunk ENI選項。如果您希望在ACK專有叢集中開啟Trunk ENI,請先在配額平台提交申請。
從Kubernetes 1.31開始,建立的ACK託管叢集會自動啟用Trunk ENI功能,無需手動進行選擇。
開啟Trunk ENI模式後,會安裝terway-eniip與terway-controlplane組件。
常見問題
如何區分Terway是獨佔ENI模式還是共用ENI模式?
在Terway v1.11.0及以上的版本中,Terway預設使用共用ENI模式,支援通過為節點池配置獨佔ENI網路模式開啟獨佔ENI模式。
在Terway v1.11.0之前的版本中,建立叢集時可以單獨選擇獨佔ENI模式或者共用ENI模式。叢集建立之後可以使用以下方式區分:
獨佔ENI模式: 在kube-system命名空間下Terway守護進程DaemonSet的名字是
terway-eni。共用ENI模式: 在kube-system命名空間下Terway守護進程DaemonSet的名字是
terway-eniip。
已經建立的ACK叢集是否支援切換網路外掛程式?
網路外掛程式類型(Terway和Flannel)僅支援在叢集建立階段選擇,叢集建立後不支援修改。如需切換,請重新建立叢集,具體操作,請參見建立ACK託管叢集。