在ENS邊緣情境中,如果ACK Edge叢集使用Terway Edge外掛程式,當虛擬交換器的IP不足或者需要擴充Pod網段時,您可以通過新增Pod虛擬交換器來增加IP地址資源供ACK Edge叢集使用。
前提條件
使用ENS作為邊緣節點。
新增虛擬交換器
如果發現Pod虛擬交換器的IP資源不足,您可以通過以下方式新增虛擬交換器以供ACK Edge叢集使用。
在ENS對應的網路內建立交換器。
登入ENS控制台,在左側導覽列選擇網路管理 > 交換器。
在交換器頁面,單擊建立交換器,填寫相關內容後,單擊建立。
節點:選擇ENS節點。
網路:選擇ENS對應的網路。
名稱:新增交換器的名稱。
IPv4網段:ENS的網路所在的網段。
將新增的虛擬交換器添加到Terway Edge的ConfigMap中。
kubectl edit cm privateip-config -n kube-system樣本輸出如下,您可以在
vswitches下配置新增的虛擬交換器,可配置多個。其中n-xxx表示ENS中的網路ID,["vsw-xxx", "vsw-xxxx"]表示在該網路中的交換器ID,可配置多個,請勿刪除已有的交換器ID。apiVersion: v1 kind: ConfigMap metadata: annotations: helm.sh/hook: pre-install name: privateip-config namespace: kube-system data: privateip_conf: | { "vswitches": { "n-xxx": ["vsw-xxx", "vsw-xxxx"], "n-xxx": ["vsw-xxx", "vsw-xxxx"] }, "vswitch_selection_policy": "most" }說明Pod的IP地址預設從預先購買的ENI所在虛擬交換器中分配,新增的Pod虛擬交換器可以與ENS執行個體以及ENI執行個體位於不同的交換器下。
如何判斷Pod虛擬交換器的IP資源不足?
在Terway Edge網路情境下,如果您發現Pod建立失敗,且狀態顯示為ContainerCreating,您可以通過以下方式確認虛擬交換器IP資源是否不足。
查看Pod所在節點的ENS節點。
kubectl get pod -o wide預期輸出:
NAME READY STATUS RESTARTS AGE IP NODE cube-1 0/1 ContainerCreating 0 41s <none> node-1 cube-2 0/1 ContainerCreating 0 41s <none> node-1查看ENS節點資源的相關資訊。
kubectl describe ensnodes node-1預期輸出:
Name: node-1 Namespace: Labels: name=node-1 API Version: network.alibabacloud.com/v1beta1 .... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning AllocIPFailed 1m ens-multi-ip-node [SDKError] API: AssignPrivateIpAddresses, ErrorCode: InvalidVSwitchId.IpNotEnough, RequestId: xxxxxxx, Message: Don't have enough private IPs in this switch. Warning AllocIPFailed 1m ens-multi-ip-node [SDKError] API: AssignPrivateIpAddresses, ErrorCode: InvalidVSwitchId.IpNotEnough, RequestId: xxxxxxx, Message: Don't have enough private IPs in this switch.若輸出Events資訊中包含
ErrorCode:InvalidVSwitchId.IpNotEnough,則表明Pod虛擬交換器IP資源不足。