工作负载使用 IP 池¶
本章节主要介绍结合 Spiderpool 及 Multus CR 管理,为工作负载 Pod 配置多网卡,并通过 Spiderpool 进行 Underlay 网络的 IP 的分配和固定。主要介绍内容如下:
- Pod 设置多容器网卡
- 工作负载使用 IP 池
- 工作负载使用固定 IP 池
- 工作负载使用自动创建固定 IP 池
- 工作负载使用默认 IP 池
前提条件¶
- SpiderPool 已成功部署。
- 如使用手动选择 IP 池,请提前完成创建 IP 子网和 IP 池。如使用自动创建固定 IP 池,请提前完成创建 IP 池。
- 如果使用默认 IP 池,请提前完成创建 IP 子网和 IP 池。并在容器网络 Multus CNI 配置中,配置好带有默认 IP 池的网卡。
- 对应使用的Multus CR 已创建。
界面操作¶
-
登录平台 UI,在左侧导航栏点击
容器管理->集群列表,找到对应集群。然后,在左侧导航栏选择无状态负载,点击镜像创建。
-
在
创建无状态负载页面,完成基本信息、容器配置、服务配置页面的信息输入。然后,进入高级配置,点击配置容器网卡。
-
进入
容器网卡配置页面,完成以下参数的配置:-
网卡信息: 若创建的应用容器需要使用多张网卡(如一张东西向通信,一张南北向通信),可以添加多网卡。-
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。使用场景请参考:IP 池的使用说明
自动创建固定 IP 池
仅需要选择对应的子网,即可自动创建固定 IP 池。

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

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

YAML 使用¶
-
使用 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"] -
由 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