跳转至

工作负载使用 IP 池

本章节主要介绍结合 Spiderpool 及 Multus CR 管理,为工作负载 Pod 配置多网卡,并通过 Spiderpool 进行 Underlay 网络的 IP 的分配和固定。主要介绍内容如下:

  1. Pod 设置多容器网卡
  2. 工作负载使用 IP 池
  3. 工作负载使用固定 IP 池
  4. 工作负载使用自动创建固定 IP 池
  5. 工作负载使用默认 IP 池

前提条件

  1. SpiderPool 已成功部署。
  2. 如使用手动选择 IP 池,请提前完成创建 IP 子网和 IP 池。如使用自动创建固定 IP 池,请提前完成创建 IP 池。
  3. 如果使用默认 IP 池,请提前完成创建 IP 子网和 IP 池。并在容器网络 Multus CNI 配置中,配置好带有默认 IP 池的网卡。
  4. 对应使用的Multus CR 已创建。

界面操作

  1. 登录平台 UI,在左侧导航栏点击容器管理->集群列表,找到对应集群。然后,在左侧导航栏选择无状态负载,点击镜像创建。

    镜像创建

  2. 在创建无状态负载页面,完成基本信息、容器配置、服务配置页面的信息输入。然后,进入高级配置,点击配置容器网卡。

    容器网卡

  3. 进入容器网卡配置页面,完成以下参数的配置:

    • 网卡信息: 若创建的应用容器需要使用多张网卡(如一张东西向通信,一张南北向通信),可以添加多网卡。

      • eth0(默认网卡):默认为 Overlay CNI,可选 Calico/Cilium/Macvlan CR,设置前请确认Multus CR 已创建。当 eth0(默认网卡)设置为 Underlay CNI,如 Macvlan 时,net1,net2 等新增网卡只能选择 Underlay CNI。

      • net1: 可选择 Underlay CNI 配置,如 Macvlan/SR-IOV ,本文示例为 Macvlan。

    • IP 池配置:Underlay CNI IP 分配的规则。

      • 创建固定 IP 池: 开启后,只需要为新增的容器网卡(net1、net2、net3)选择对应子网,工作负载在部署时会自动创建固定 IP 池,部署后容器网卡仅能使用此 IP 池中的地址。

      • 弹性 IP: 开启后,IP 池中的 IP 数量会根据设置的弹性 IP 数量变动。最大可用 IP 数等于 Pod 副本数 + 弹性 IP 数量。Pod 扩容时IP 池也随之进行扩容。

      • 自定义路由:当应用创建有特殊路由需求时,可添加自定义路由。

      • 网卡 IP 池:选择对应网卡待使用的子网或对应 IP 池。

      • 使用默认 IP 池:开启后,会为新增的容器网卡(eth0、net1、net2)全部选择好默认的 IP 池。

    工作负载使用 IP 池有如下两种方式,两种方式的使用场景及流程差异可参考:IP 池的使用说明

    手动选择已有的 IP 池

    手动选择 IP 池需要提前创建 IP 池,可选择 IP 池范围为: 已关联所选择 的Multus CNI 配置的 IPPool ,可以是:共享 IP 池,以及添加了当前应用亲和性、 命名空间亲和性、节点亲和性的 IP 池。

    手动选择

    注意:如果 所选择的 IP 池创建时 加了节点亲和性如:zone:beijing,请在创建工作负载时,加上对应的标签 zone:beijing。使用说明zone-beijing

    自动创建固定 IP 池

    仅需要选择对应的子网,即可自动创建固定 IP 池。

    自动创建

    使用默认 IP 池

    提前创建好 IP 池,并在 Multus CNI 配置中,选择带有默认 IP 池的网卡,即可使用默认 IP 池功能。详情请参考:创建 Multus CR 默认IP池

  4. 创建完工作负载后,可点击对应工作负载 test01 查看工作负载 Pod 使用的 IP。

    工作负载 IP

    工作负载 IP

YAML 使用

  1. 使用 Pod 注解 ipam.spidernet.io/ippool 选择从 IP 池 testingippool 分配 IP,创建以下 Deployment:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: workload01
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: workload01
      template:
        metadata:
          annotations:
            ipam.spidernet.io/ippool: |-
              {
                "ipv4": ["testingippool"]
              }
          labels:
            app: workload01
        spec:
          containers:
          - name: workload01
            image: busybox
            imagePullPolicy: IfNotPresent
            command: ["/bin/sh", "-c", "trap : TERM INT; sleep infinity & wait"]
    
  2. 由 Deployment workload01 所控制的 Pod 均从 IP 池 testingippool 分配 IP 地址且成功运行。

    kubectl get se
    NAME                                      INTERFACE   IPV4POOL               IPV4              IPV6POOL   IPV6   NODE            CREATETION TIME
    workload01-6967dcd8df-8b6zp   eth0        standard-ipv4-ippool   172.18.41.47/24                     spider-worker   7s
    standard-ippool-deploy-6967dcd8df-cvq79   eth0        standard-ipv4-ippool   172.18.41.50/24                     spider-worker   7s
    standard-ippool-deploy-6967dcd8df-s58x9   eth0        standard-ipv4-ippool   172.18.41.41/24                     spider-worker   7s
    

评论