全部產品
Search
文件中心

Container Service for Kubernetes:使用Terway網路外掛程式

更新時間:Dec 28, 2024

Terway是阿里雲開源的基於Virtual Private Cloud的容器網路介面CNI(Container Network Interface)外掛程式,支援基於Kubernetes標準的網路原則來定義容器間的存取原則。

閱讀前提示

為了讓您能更好地瞭解Terway的工作模式,建議您在使用Terway網路外掛程式前閱讀本文檔。

閱讀本文前,推薦您參見網路概述Terway與Flannel的對比文檔瞭解容器網路外掛程式的基本概念並完成容器網路外掛程式選型。

建立叢集前需要對叢集中的網段進行規劃,具體操作請參見Kubernetes叢集網路規劃

費用說明

使用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限額是由節點規格決定的固定值。修改maxPods隻影響使用hostNetwork的Pod限額。

0

共用ENI模式+Trunk ENI

單節點Trunk Pod限額:

ECS規格支援的總網卡數-ECS規格支援的彈性網卡數。

EniTotalQuantity-EniQuantity

獨佔ENI模式

ECS規格支援的ENI數量-1。

EniQuantity-1

說明

單節點的Pod限額必須>6才能加入叢集。

以通用型執行個體規格類型系列g7的ecs.g7.4xlarge規格為例。該規格執行個體支援8個ENI。單節點Pod限額為(8-1)=7個Pod。

ECS規格支援的ENI數量-1。

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網路外掛程式,已建立的叢集不支援修改網路外掛程式類型。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊建立叢集

  3. 為Terway網路外掛程式配置叢集網路的關鍵參數。關於建立叢集的其他參數,請參見建立ACK託管叢集

    配置項

    說明

    IPv6雙棧

    勾選開啟後,會為叢集開啟雙棧,同時支援IPv4與IPv6地址。

    公測中,請前往配額平台申請

    開啟IPv6雙棧後,將建立雙棧叢集。

    重要
    • 僅1.22及以上版本的叢集支援IPv6雙棧功能。

    • Worker節點與控制面之間的通訊使用IPv4地址。

    • 需要使用Terway容器網路外掛程式。

    • 使用Terway共用ENI模式時,ECS的規格需要支援IPv6地址,且支援的IPv4地址數量與IPv6地址數量相同,才能正常加入叢集。ECS規格的詳細資料請參見執行個體規格類型系列

    • 叢集使用的VPC及ECS需要支援IPv6雙棧。

    • 叢集使用eRDMA功能需要關閉IPv6雙棧。

    專用網路

    叢集所使用的VPC。

    網路外掛程式

    選擇Terway

    DataPath V2

    勾選後,會使用DataPathv2加速模式。選擇加速模式後,Terway會採取不同於共用ENI常規模式的流量轉寄鏈路,實現更快的網路通訊。此模式的具體特性,請參見網路加速

    說明

    開啟後,Terway policy容器預計會在每個Worker節點上多佔用0.5核512MB的資源,此消耗會隨著叢集規模增大而增大。在Terway預設配置中,policy容器的CPU上限為1核,記憶體無限制。

    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 CIDR

    Service所使用的網段,不能與節點及Pod的網段重合。

    IPv6 Service CIDR

    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使用情境。

這種模式中網路效能更接近於傳統虛擬機器,適合對網路效能有較高要求的情境,比如需要高網路輸送量或低延遲的應用。

網路加速

支援DadaPathv2網路加速,具體資訊請參見網路加速

不支援網路加速,但Pod獨佔ENI資源,已經提供了極佳的網路效能。

NetworkPolicy支援

支援Kubernetes原生的NetworkPolicy,提供了基於策略的存取控制能力。

不支援NetworkPolicy

存取控制

開啟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及後續版本中建立的叢集。

網路架構

加速資料鏈路

  • Pod訪問Service時,會使用eBPF將Service位址解析為Service後端某個Pod的地址。

  • Pod訪問不同節點的Pod時,會使用eBPF繞過雙方的節點網路通訊協定棧。

  • Pod訪問同節點的Pod時,不但可以繞過節點協議棧,而且訪問流量無需離開節點,直接在節點內部完成轉寄。

效能最佳化

  • 簡化了Pod的網路在宿主機上的轉寄流程,讓Pod的網路效能幾乎與宿主機的效能無異,延遲相對常規模式降低了30%。

  • Service的網路採用eBPF替換原有的kube-proxy模式,繞過節點上的iptables或者IPVS轉寄,請求延遲大幅降低。網路效能在大規模叢集中受到的影響更小,擴充性更優。

  • Pod的網路原則(NetworkPolicy)也採用eBPF替換掉原有的iptables的實現,不需要在宿主機上產生大量的iptables規則,降低網路原則對網路效能的影響。

使用方法

在建立叢集時,為網路外掛程式選擇Terway後,勾選DataPath V2選項。

注意事項

  • 僅支援Alibaba Cloud Linux作業系統鏡像。

  • 尚未支援安全沙箱運行時。

  • 網路原則(NetworkPolicy)實現和原有Terway有差異:

    • CIDR選取器優先順序低於Pod選取器。如果CIDR包含Pod網段,則需要額外增加Pod選取器。

    • 對CIDR選取器中的except關鍵字支援不佳,不建議使用except關鍵字。

    • 使用Egress類型的NetworkPolicy會導致訪問叢集中Host網路類型的Pod和叢集中節點的IP失敗。

  • 叢集內部訪問對外暴露的LoadBalancer類型Service對應的SLB時可能存在迴環問題而導致網路不通。更多資訊,請參見為什麼無法訪問負載平衡

在更早建立的叢集中,您可能選擇了IPvlan+eBPF加速模式,您可以參照下方的說明瞭解其特點。

IPvlan+eBPF加速模式

IPvlan+eBPF特點

說明

適用Terway版本

Terway V1.7.0及更早版本中建立的叢集。

網路架構

加速資料鏈路

  • Pod訪問Service時,會使用eBPF在Pod網路命名空間內將Service位址解析為Service後端某個Pod的地址。

  • Pod訪問其他Pod時,會利用IPvlan虛擬網路技術,繞過雙方的節點網路通訊協定棧。

使用方法

在建立叢集時,為網路外掛程式選擇Terway後,勾選Pod IPvlan選項。

存取控制

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組件。