配置 Kube-OVN 网络以支持 Pod 多网络接口(Alpha)
使用 Multus CNI,可以为 Pod 添加多个连接到不同网络的网络接口。使用 Kube-OVN 网络的 Subnet 和 IP CRD 进行高级 IP 管理,实现子网管理、IP 保留、随机分配、固定分配等功能。
从 ACP 4.5 开始,Alauda Container Platform Networking for Multus 更名为 Alauda Container Platform Multi-Network。从 Customer Portal 下载插件时,请搜索 Alauda Container Platform Multi-Network。更名前发布的插件包上传后,在平台中仍显示为 Alauda Container Platform Networking for Multus。
安装 Multus CNI
部署 Multus CNI 插件
-
前往 管理员。
-
在左侧导航栏中,点击 Marketplace > 集群插件。
-
在搜索栏中输入“multus”,查找 Multus CNI 插件。
-
在列表中找到 “Alauda Container Platform Multi-Network” 插件(更名前发布的插件包显示为 “Alauda Container Platform Networking for Multus”)。
-
点击插件条目旁的三点图标 (⋮),然后选择 安装。
-
插件将部署到集群。你可以在 状态 列中查看安装状态。
Multus CNI 插件充当其他 CNI 插件与 Kubernetes 之间的中间件,使 Pod 能够拥有多个网络接口。
创建子网
按照以下示例创建 attachnet 子网:network-attachment-definition.yml。
配置中的 provider 格式为 <NAME>.<NAMESPACE>.ovn,其中 <NAME> 和 <NAMESPACE> 分别是此 NetworkAttachmentDefinition CR 的名称和命名空间。
创建后,应用该资源:
按照以下示例为第二个网络接口创建 Kube-OVN 子网:subnet.yml。
spec.provider必须与 NetworkAttachmentDefinition 中的 provider 一致。- 如果需要使用 Underlay 子网,请将子网的
spec.vlan设置为要使用的 VLAN CR 名称。根据需要配置其他子网参数。
创建后,应用该资源:
创建具有多个网络接口的 Pod
按照以下示例创建 Pod。
metadata.annotations必须包含键值对k8s.v1.cni.cncf.io/networks=default/attachnet,其值的格式为<NAMESPACE>/<NAME>,其中<NAMESPACE>和<NAME>分别是 NetworkAttachmentDefinition CR 的命名空间和名称。- 如果 Pod 需要三个网络接口,请将
k8s.v1.cni.cncf.io/networks的值配置为default/attachnet,default/attachnet2。
Pod 成功创建后,使用命令 kubectl exec pod1 -- ip a 查看 Pod 的 IP 地址。
验证双网络接口创建
使用以下命令验证双网络接口是否已成功创建:
其他功能
固定 IP
-
主网络接口(第一个接口):如果需要固定主网络接口的 IP,方法与单网络接口使用固定 IP 的方法相同。向 Pod 添加注解
ovn.kubernetes.io/ip_address=<IP>。 -
次要网络接口(第二个或其他接口):基本方法与主网络接口类似,不同之处在于,Annotation Key 中的
ovn要替换为相应的 NetworkAttachmentDefinition provider。例如:attachnet.default.ovn.kubernetes.io/ip_address=172.170.0.101。
其他路由
从 1.8.0 版本开始,Kube-OVN 支持为次要网络接口配置其他路由。使用此功能时,请将 routers 字段添加到 NetworkAttachmentDefinition 中的配置,并填入需要配置的路由。例如: