Terway網路情境下,當虛擬交換器(vSwitch)IP資源不足時,或者您需要添加新的vSwitch(Pod 網段)時,您需要對vSwitch擴容。本文介紹如何新增虛擬交換器以增加新的IP地址資源供ACK叢集使用。
使用限制
請確保您添加的vSwitch包含節點的可用性區域,如果節點的可用性區域不在vSwitch列表中,則將使用主網卡對應的vSwitch。
對已經建立的彈性網卡(ENI),您無法修改vSwitch配置,建議您在調整Pod虛擬交換器後新增節點使用。
修改 Pod 交換器配置的生效條件
存量節點(已有節點)
Terway 僅在建立新 ENI 時,才會應用新的交換器配置。因此,在以下兩種情況下,存量節點上的新配置不會立即生效:
ENI 正在被使用:若現有 ENI 上仍有 Pod 在運行,或該 ENI 為 Trunk 類型,Terway 不會刪除或替換該 ENI。
ENI 數量已達上限:節點所在執行個體的 ENI 數量已達到機型支援的最大值,無法建立新的 ENI。
建立節點
對於新加入叢集的節點,Terway 將根據當前配置(叢集/節點/Pod 維度)選擇對應的交換器來建立 ENI,新配置可立即生效。
交換器選擇策略與 IP 資源均衡
當一個可用性區域配置了多個交換器時,Terway 提供不同的交換器選擇策略,以控制 ENI 建立時的 vSwitch 分配行為。配置項請參考自訂Terway配置參數。
預設策略:ordered
Terway 按照各交換器的剩餘 IP 數量降序排序,優先選擇 IP 最充足的交換器。這種模式對大部分情境適用。
邊界問題:在突發大量 Pod 建立(觸發 ENI 大量建立)的情境下,所有新 ENI 可能集中分配到同一個 IP 最多的交換器,短時間內 IP 資源分布不均,甚至耗盡單個交換器的 IP。
解決方案
為實現多個交換器之間的 IP 消耗均衡,推薦以下任一方法:
方案一:切換為 random 策略
將交換器選擇策略修改為
random(隨機模式)。Terway 將從可用交換器列表中隨機播放一個用於建立 ENI,有助於分散 IP 使用壓力。
方案二:按節點池劃分交換器
利用節點維度網路設定,將節點劃分為多個節點池。
每個節點池內,為每個可用性區域綁定唯一的 Pod 交換器。
虛擬交換器vSwitch的IP資源不足特徵
Terway網路情境下,vSwitch IP資源不足的特徵如下:
如果您發現Pod建立不成功,且狀態顯示為
ContainerCreating,執行以下命令查看Pod所在節點的Terway的日誌。kubectl logs --tail=100 -f terway-eniip-***** -n kube-system -c terway若系統輸出類似以下錯誤資訊,說明該節點的Terway所使用的vSwitch沒有空餘的IP地址,Pod會因為沒有IP資源而一直處於
ContainerCreating狀態。time="20**-03-17T07:03:40Z" level=warning msg="Assign private ip address failed: Aliyun API Error: RequestId: 2095E971-E473-4BA0-853F-0C41CF52651D Status Code: 403 Code: InvalidVSwitchId.IpNotEnough Message: The specified VSwitch \"vsw-***\" has not enough IpAddress., retrying"登入專用網路管理主控台,在控制台左側導覽列中,單擊交換器查看該vSwitch的可用IP數為0。
修改Pod虛擬交換器vSwitch
使用控制台方式新增vSwitch較為簡便,因此建議您將Terway組件升級到最新版本後在控制台上配置Pod虛擬交換器。
Terway v1.4.4及以上版本支援使用控制台和kubectl兩種方式配置Pod虛擬交換器。
Terway v1.4.4以下版本僅支援kubectl方式配置Pod虛擬交換器。
控制台方式
在專用網路管理主控台建立新的vSwitch,該vSwitch必須與IP資源不足的vSwitch在同一個地區。具體關於如何建立vSwitch,請參見建立和管理交換器。
說明因Pod密度越來越大,為了滿足Pod對IP地址日益增長的需求,建議您建立用於Pod使用的vSwitch的網路位小於等於19,即網段中至少包含8192個IP地址。
登入Container Service管理主控台,在左側導覽列單擊叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
在組件管理頁面,單擊網路頁簽,選擇需要升級的目標Terway組件,單擊升級,將組件升級至最新版本後,單擊配置。
若無升級按鈕,說明Terway組件已升級至最新版本。
說明除此配置方式之外,通過其他方式對已部署組件所做的修改,將在組件重新部署後被覆蓋。

在terway-eniip 參數配置頁面的PodVswitchId地區,選擇您所需的vSwitch,其他參數選擇預設即可。
參數配置完成後,單擊確認。
kubectl方式
在專用網路管理主控台建立新的vSwitch,該vSwitch必須與IP資源不足的vSwitch在同一個地區。具體關於如何建立vSwitch,請參見建立和管理交換器。
說明因Pod密度越來越大,為了滿足Pod對IP地址日益增長的需求,建議您建立用於Pod的vSwitch的網路位小於等於19,即網段中至少包含8192個IP地址。
執行以下命令,添加vSwitch到Terway的ConfigMap配置中。
kubectl edit cm eni-config -n kube-system添加vSwitch具體範例如下:
eni_conf: | { "version": "1", "max_pool_size": 25, "min_pool_size": 10, "vswitches": {"cn-shanghai-f":["vsw-AAA", "vsw-BBB"]}, "service_cidr": "172.21.0.0/20", "security_group": "sg-CCC" }範例中添加
vsw-BBB到vSwitches部分,其中vsw-AAA是已經存在的且IP資源不足的vSwitch。執行以下命令刪除全部Terway Pod後,系統將自動重建全部Terway Pod。
針對ENI多IP情境,執行以下命令刪除全部Terway Pod:
kubectl delete -n kube-system pod -l app=terway-eniip針對ENI單IP情境,執行以下命令刪除全部Terway Pod:
kubectl delete -n kube-system pod -l app=terway-eni
執行以下命令檢查全部Terway Pod是否成功建立。
kubectl get pod -n kube-system | grep terway建立Pod,驗證新建立的Pod是否可以從新添加的vSwitch成功分配到IP地址。
說明修改虛擬交換器配置後,新配置僅對建立的ENI生效,已建立的ENI將使用原有配置。您可以通過輪轉節點的方式使配置生效。
常見問題
Terway網路下,增加虛擬交換器(vSwitch)後,為何不能正常訪問公網?
問題現象:在Terway網路下,因Pod沒有IP資源而手動增加虛擬交換器,在增加虛擬交換器後,發現叢集不能正常訪問公網。
問題原因:Pod IP所屬的虛擬交換器不具備公網訪問的能力。
解決方案:您可以通過NAT Gateway的SNAT功能,為Pod IP所屬的虛擬交換器配置公網SNAT規則。更多資訊,請參見為叢集開啟訪問公網的能力。
Pod分配的IP不在虛擬交換器網段中怎麼辦?
問題現象:在Terway網路下,建立的Pod IP不在配置的虛擬交換器網段內。
問題原因:Pod IP來源於VPC地址,並且通過ENI分配給容器使用。只有在建立ENI時,才可以配置虛擬交換器。如果ENI已經建立,則Pod IP將繼續從該ENI對應的虛擬交換器中分配。通常以下兩個使用情境會遇到該問題:
將一個節點納管到叢集內,但這個節點之前在其他叢集使用過,且刪除節點時沒有排空節點上的Pod。這種情況下節點上可能殘留之前叢集使用的ENI資源。
手動增加、修改Terway使用的虛擬交換器配置,由於節點上可能還存在原有配置的ENI,因此建立的Pod將可能繼續使用原有ENI上的IP。
解決方案:您可以通過建立節點、輪轉老節點的方式來確保設定檔在新節點上生效。
配置多個交換器後,交換器IP消耗不均衡?
問題現象:在 Terway 網路外掛程式環境下,當為同一可用性區域(AZ)配置多個 Pod 交換器(Pod vSwitch)後,各交換器的 IP 位址消耗出現明顯不均衡現象——部分交換器 IP 資源迅速耗盡,而其他交換器仍有大量空閑 IP。
問題原因:Terway 在建立彈性網卡(ENI)時才會選擇 Pod 交換器。一旦 ENI 建立完成,其所屬交換器即被固定,後續在該 ENI 上分配的 Pod IP 均來自該交換器,不再重新選擇。
在建立 ENI 的情境中,Terway 預設採用ordered交換器選擇策略,即優先選擇當前剩餘 IP 數量最多的交換器。
然而,在短時間內大規模擴容 Pod(例如大量建立節點或部署大量副本)時,多個並發的 ENI 建立請求可能幾乎同時執行交換器選擇邏輯。由於此時各交換器的剩餘 IP 數量尚未顯著變化,這些請求很可能集中選中同一個交換器,導致 IP 分配不均。
解決方案:根據業務情境不同,可採取以下策略:
針對存量節點(已有節點池)
若已存在 IP 分配不均且部分交換器 IP 即將耗盡:手動輪轉(滾動重啟)部分存量節點,釋放其綁定的 ENI;
釋放 ENI 後,IP將歸還到對應交換器,有助於均衡 IP 使用。
針對建立節點或新部署情境
將 Terway 的交換器選擇策略
vswitch_selection_policy從ordered修改為random,此策略將在建立 ENI 時隨機播放可用交換器,有效避免熱點交換器問題。詳細操作,請參見自訂Terway配置參數。追求確定性與隔離性
若需嚴格控制網路資源分配,可為每個節點池(Node Pool)單獨配置節點維度網路設定,確保每個可用性區域內僅關聯 一個 Pod 交換器。這樣可實現交換器與節點池的一一映射,徹底規避 IP 分配競爭問題。