全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:修改Pod虚拟交换机

更新时间:Dec 23, 2025

Terway网络场景下,当虚拟交换机(vSwitch)IP资源不足时,或者您需要添加新的vSwitch(Pod 网段)时,您需要对vSwitch扩容。本文介绍如何新增虚拟交换机以增加新的IP地址资源供ACK集群使用。

使用限制

  • 请确保您添加的vSwitch包含节点的可用区,如果节点的可用区不在vSwitch列表中,则将使用主网卡对应的vSwitch。

  • 对已经创建的弹性网卡(ENI),您无法修改vSwitch配置,建议您在调整Pod虚拟交换机后新增节点使用。

修改 Pod 交换机配置的生效条件

存量节点(已有节点)

Terway 仅在创建新 ENI 时,才会应用新的交换机配置。因此,在以下两种情况下,存量节点上的新配置不会立即生效:

  1. ENI 正在被使用:若现有 ENI 上仍有 Pod 在运行,或该 ENI 为 Trunk 类型,Terway 不会删除或替换该 ENI。

  2. 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虚拟交换机。

控制台方式

  1. 专有网络管理控制台创建新的vSwitch,该vSwitch必须与IP资源不足的vSwitch在同一个区域。具体关于如何创建vSwitch,请参见创建和管理交换机

    说明

    因Pod密度越来越大,为了满足Pod对IP地址日益增长的需求,建议您创建用于Pod使用的vSwitch的网络位小于等于19,即网段中至少包含8192个IP地址。

  2. 登录容器服务管理控制台,在左侧导航栏单击集群列表

  3. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  4. 组件管理页面,单击网络页签,选择需要升级的目标Terway组件,单击升级,将组件升级至最新版本后,单击配置

    若无升级按钮,说明Terway组件已升级至最新版本。

    说明

    除此配置方式之外,通过其他方式对已部署组件所做的修改,将在组件重新部署后被覆盖。

    配置

  5. terway-eniip 参数配置页面的PodVswitchId区域,选择您所需的vSwitch,其他参数选择默认即可。

  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网关的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 分配不均。

解决方法:根据业务场景不同,可采取以下策略:

  1. 针对存量节点(已有节点池)
    若已存在 IP 分配不均且部分交换机 IP 即将耗尽:

    • 手动轮转(滚动重启)部分存量节点,释放其绑定的 ENI;

    • 释放 ENI 后,IP将归还到对应交换机,有助于均衡 IP 使用。

  2. 针对新建节点或新部署场景

    将 Terway 的交换机选择策略vswitch_selection_policy从 ordered 修改为 random,此策略将在创建 ENI 时随机选择可用交换机,有效避免热点交换机问题。详细操作,请参见自定义Terway配置参数

  3. 追求确定性与隔离性
    若需严格控制网络资源分配,可为每个节点池(Node Pool)单独配置节点维度的网络配置,确保每个可用区内仅关联 一个 Pod 交换机。这样可实现交换机与节点池的一一映射,彻底规避 IP 分配竞争问题。