文档首页/ 云容器实例 CCI/ 最佳实践/ 负载管理/ 配置Pod使用多网卡多EIP功能
更新时间:2025-08-12 GMT+08:00

配置Pod使用多网卡多EIP功能

应用场景

当Pod需要创建多张网卡管理网络流量时,可使用CCI服务多网卡多EIP功能。多网卡多EIP功能允许客户在同一命名空间下创建多个network,并通过Pod中annotation字段配置各个网卡使用的network和EIP。

功能说明

  • 创建多个network时,必须指定命名空间下某一个network为默认网络(spec.defaultNetwork为true),如果命名空间下仅有一个network,该network被识别为默认网络。
  • 命名空间存在多个network时,默认网络不能更改成非默认网络。
  • 命名空间存在多个network时,可以删除默认网络配置,但是需要删除后重新配置新的默认网络,否则网络功能异常。
  • 创建多个network时,network之间的子网不能重复,并且所有的network配置的子网必须都在同一个VPC下。
  • 多网卡多EIP功能禁止在Deployment上使用,仅支持在Pod上使用。
  • Pod上可以通过yangtse.io/multi-eip-ids和k8s.v1.cni.cncf.io/networks两种annotation进行配置,但不可同时配置。
  • 多网卡多EIP功能仅允许计费类型为通用型(轻享)(即general-computing-lite类型)的Pod使用。
  • 单个Pod最多可以配置5张网卡。
  • 单个Pod配置多张网卡时,Pod IP只会展示主网卡的IP(status.podIP和status.podIPs展示的是第一张网卡的IP信息)。

约束与限制

  • 使用多网卡的Pod在启动速度上会略微变慢,请合理规划使用。
  • 多网卡多EIP配置,仅支持IPv4协议。
  • Pod配置多网卡多EIP时,网络将默认使用主网卡,需要把其他网卡的特殊配置(例如EIP访问公网、安全组网段放通等)同步到主网卡上,否则可能出现镜像拉取失败、挂卷失败等问题。
  • Pod配置多网卡多EIP时,不支持配置自动创建镜像快照cci.io/image-snapshot-create-if-not-present annotation功能。
  • Pod配置多网卡多EIP时,不支持配置单个EIP annotation功能(包括yangtse.io/eip-bandwidth-id、yangtse.io/eip-bandwidth-size、yangtse.io/eip-network-type、yangtse.io/eip-charge-mode、yangtse.io/eip-bandwidth-name、yangtse.io/pod-with-eip、yangtse.io/eip-id)。
  • 当主network下subnet IP耗尽时,不会选择非主network。

操作步骤

  1. 访问CCI API设置默认网络,并创建多个Network。
    apiVersion: yangtse/v2
    kind: Network
    metadata:
      name: test-network
      namespace: test
    spec:
      defaultNetwork: true           // defaultNetwork配置为true表示该network为默认网络
      networkType: underlay_neutron
      subnets:
      - subnetID: ${subnet1}
      - subnetID: ${subnet2}
  2. 登录云容器实例 CCI2.0控制台。
  3. 左侧导航栏中选择“负载管理 > 容器组”,单击“YAML创建”。

  4. 配置Pod代码,示例如下所示:

    本示例以k8s.v1.cni.cncf.io/networks字段配置为例,如需使用yangtse.io/multi-eip-ids字段,使用方法请参见表1

    kind: Pod
    apiVersion: cci/v2
    metadata:
      name: pod-muti-eip-test
      annotations:
        k8s.v1.cni.cncf.io/networks: '[{"name":"second-network","interface":"eth0"},{"name":"default-network","interface":"eth1"},{"name":"default-network","interface":"eth2"},{"name":"second-network","interface":"eth3"}]'
        resource.cci.io/instance-type: general-computing-lite
        resource.cci.io/pod-size-specs: 0.25_0.5
    spec:
      containers:
        - name: init-myservice
          image: nginx:latest
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: Default
      securityContext: {}
      imagePullSecrets:
        - name: imagepull-secret
    表1 yangtse.io/multi-eip-ids和k8s.v1.cni.cncf.io/networks字段说明

    字段名称

    类型

    格式

    说明

    示例

    yangtse.io/multi-eip-ids

    String

    eip-id1,eip-id2,eip-id3,eip-id4

    • EIP的ID值,以","分割,单个ID使用EIP服务未绑定EIP资源的ID且EIP的ID不重复。

    yangtse.io/multi-eip-ids: eip-id1,eip-id2,eip-id3,eip-id4

    k8s.v1.cni.cncf.io/networks

    String

    [

    {

    "name": "second-network",

    "interface": "eth1",

    "eip": {

    "id": "eip-id",

    "bandwidth-size": "5",

    "network-type": "5_g-vm",

    "charge-mode": "bandwidth",

    "bandwidth-name": "eip-myself",

    "bandwidth-id": "bandwidth-id"

    }

    }

    ]

    • name:非必填,默认值为"",不填使用默认network。network必须提前创建。
    • interface:非必填,默认值为"",不填按照数组顺序构造网卡名。如数组的第一个元素,网卡名为 eth0,Pod内网卡的名称,请务必按照网卡顺序配置为eth0、eth1。
    • eip:非必填,不填表示该网卡不需要配置EIP,Pod该网卡关联的EIP信息,一张网卡只能绑定一个EIP的ID,多张网卡不能绑定同一个EIP的ID。
    • id:非必填,填写要求为已创建且未绑定的EIP的ID,不填表示不使用已有的EIP的ID。填写该字段后,bandwidth-id、bandwidth-size、bandwidth-name、network-type、charge-mode均无效。
    • bandwidth-id:非必填,填写共享带宽ID表示使用该共享带宽自动创建EIP;不填写,表示使用独享带宽创建EIP。填写该字段后,bandwidth-size、bandwidth-name、charge-mode均无效。
    • bandwidth-size:非必填,默认值为5,独享带宽大小,单位为Mbit/s。填写后将按照带宽大小创建独享带宽的EIP,和network-type、charge-mode、bandwidth-name一起使用。具体配置大小以各区域配置为准,详情请参见弹性公网IP控制台的购买页面。
    • network-type:非必填,默认值为5_bgp,公网IP类型。填写后将按照公网IP类型创建EIP,和bandwidth-size、charge-mode、bandwidth-name一起使用。具体类型以各区域配置为准,详情请参见弹性公网IP控制台的购买页面。例如,“华东-上海一”区域支持以下类型:
      • 5_bgp:全动态BGP
      • 5_sbgp:静态BGP
    • charge-mode:非必填,计费类型。填写后将按照计费类型创建EIP,和bandwidth-size、network-type、bandwidth-name一起使用。默认值以各区域配置为准,配置参考:
      • bandwidth:按带宽计费
      • traffic:按流量计费
    • bandwidth-name:非必填,默认值随机生成,独享带宽名称。填写后将按照名称创建独享带宽,和bandwidth-size、network-type、charge-mode一起使用。配置参考:
      • 1-64个字符,开头结尾仅支持使用数字、字母,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)。
      • 最小长度:1
      • 最大长度:64

    k8s.v1.cni.cncf.io/networks: [{"name":"default-network","interface":"eth0","eip":{"id":"eip-id"}},{"name":"second-network","interface":"eth1","eip":{"bandwidth-size":"5","network-type":"5_g-vm","charge-mode":"bandwidth","bandwidth-name":"eip-myself"}},{"name":"third-network","interface":"eth2","eip":{"bandwidth-id":"bandwidth-id"}},{"name":"network-no-eip","interface":"eth3"}]

  5. 单击“确定”。