全部產品
Search
文件中心

Container Service for Kubernetes:擴容Terway情境下的Pod虛擬交換器

更新時間:Jun 19, 2024

Terway網路情境下,當虛擬交換器(vSwitch)IP資源不足時,或者您需要添加新的vSwitch(Pod 網段)時,您需要對vSwitch擴容。本文介紹如何新增虛擬交換器以增加新的IP地址資源供ACK叢集使用。

使用限制

  • 請確保您添加的vSwitch包含節點的可用性區域,如果節點的可用性區域不在vSwitch列表中,則將使用主網卡對應的vSwitch。

  • 對已經建立的彈性網卡(ENI),您無法修改vSwitch配置,建議您在擴容Pod虛擬交換器後新增節點使用。

虛擬交換器vSwitch的IP資源不足特徵

Terway網路情境下,vSwitch IP資源不足的特徵如下:

  • 如果您發現Pod建立不成功,且狀態顯示為ContainerCreating,執行以下命令查看Pod所在節點的Terway的日誌。

    kubectl logs --tail=100 -f terway-eniip-zwjwx -n kube-system -c terway

    若系統輸出類似以下錯誤資訊,說明該節點的Terway所使用的vSwitch沒有空餘的IP地址,Pod會因為沒有IP資源而一直處於ContainerCreating狀態。

    time="2020-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-AAA\" has not enough IpAddress., retrying"
  • 登入專用網路管理主控台,在控制台左側導覽列中,單擊交換器查看該vSwitch的可用IP數為0。

新增虛擬交換器vSwitch

使用控制台方式新增vSwitch較為簡便,因此建議您將Terway組件升級到最新版本後在控制台上配置Pod虛擬交換器。

Terway v1.4.4及以上版本支援使用控制台和kubectl兩種方式配置Pod虛擬交換器;Terway v1.4.4以下版本僅支援kubectl方式配置Pod虛擬交換器。

方式一:控制台操作指導

  1. 專用網路管理主控台建立新的vSwitch,該vSwitch必須與IP資源不足的vSwitch在同一個地區。具體關於如何建立vSwitch,請參見建立和管理交換器

    說明

    因Pod密度越來越大,為了滿足Pod對IP地址日益增長的需求,建議您建立給Pod使用的vSwitch的網路位小於等於19,即網段中至少包含8192個IP地址。

  2. 登入Container Service管理主控台,在左側導覽列單擊叢集

  3. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  4. 組件管理頁面,單擊網路頁簽,選擇需要升級的目標Terway組件,單擊升級,將組件升級至最新版本後,單擊配置

    若無升級按鈕,說明Terway組件已升級至最新版本。

    說明

    除此配置方式之外,通過其他方式對已部署組件所做的修改,將在組件重新部署後被覆蓋。

    配置

  5. terway-eniip 參數配置頁面的PodVswitchId地區,選擇您所需的vSwitch,其他參數選擇預設即可,如下所示。

    參數

    說明

    取值

    TerwayMemoryRequest

    Terway容器記憶體請求

    100Mi

    TerwayMemoryLimit

    Terway容器記憶體限制

    256Mi

    TerwayCpuLimit

    Terway容器CPU限制

    100m

    TerwayCpuRequest

    Terway容器CPU請求

    100m

    PolicyMemoryRequest

    Policy容器記憶體請求

    250m

    PolicyCpuRequest

    Policy容器CPU請求

    100m

    PolicyMemoryLimit

    Policy容器記憶體限制

    無限制

    PolicyCpuLimit

    Policy容器CPU限制

    1

    NetworkPolicy

    啟用NetworkPolicy

    開啟

    PodVswitchId

    Terway Pod虛擬交換器

    請確保Pod虛擬交換器可用性區域包含節點所在可用性區域。

  6. 參數配置完成後,單擊確定

方式二:kubectl操作指導

  1. 專用網路管理主控台建立新的vSwitch,該vSwitch必須與IP資源不足的vSwitch在同一個地區。具體關於如何建立vSwitch,請參見建立和管理交換器

    說明

    因Pod密度越來越大,為了滿足Pod對IP地址日益增長的需求,建議您建立給Pod使用的vSwitch的網路位小於等於19,即網段中至少包含8192個IP地址。

  2. 執行以下命令,添加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-BBBvSwitches部分,其中vsw-AAA是已經存在的且IP資源不足的vSwitch。

  3. 執行以下命令刪除全部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
  4. 執行以下命令檢查全部是否成功建立Terway Pod。

    kubectl get pod -n kube-system  | grep terway
  5. 建立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。

解決方案:您可以通過建立節點、輪轉老節點的方式來確保設定檔在新節點上生效。