配置 Kube-OVN 网络以支持 Pod 多网卡(Alpha)
通过使用 Multus CNI,您可以为 Pod 添加多个不同网络的网络接口。利用 Kube-OVN 网络的 Subnet 和 IP CRD 进行高级 IP 管理,实现子网管理、IP 预留、随机分配、固定分配等功能。
安装 Multus CNI
部署 Multus CNI 插件
-
进入 管理员。
-
在左侧导航栏点击 Marketplace > Cluster Plugins。
-
在搜索框中输入 “multus” 查找 Multus CNI 插件。
-
在列表中找到 "Alauda Container Platform Networking for Multus" 插件。
-
点击插件条目旁的三点(⋮),选择 安装。
-
插件将部署到您的集群中,您可以在 状态 列中监控安装进度。
Multus CNI 插件作为其他 CNI 插件与 Kubernetes 之间的中间件,使 Pod 能够拥有多个网络接口。
创建子网
根据以下示例创建 attachnet 子网:network-attachment-definition.yml。
config 中的 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>。 -
副网卡(第二个或其他网卡):基本方法与主网卡类似,区别是注解键中的
ovn替换为对应的 NetworkAttachmentDefinition provider。例如:attachnet.default.ovn.kubernetes.io/ip_address=172.170.0.101。
额外路由
从 1.8.0 版本开始,Kube-OVN 支持为副网卡配置额外路由。使用该功能时,在 NetworkAttachmentDefinition 的 config 中添加 routes 字段,填写需要配置的路由。示例: