6.4. 关于 all-multicast 模式
启用 all-multicast 模式(特别是在无根应用程序上下文中)非常重要。如果没有启用此模式,则需要为 Pod 的安全上下文约束(SCC )授予 NET_ADMIN
功能。如果您要允许 NET_ADMIN
功能授予 pod 权限,以便更改超出其特定要求的更改,您可能会暴露安全漏洞。
tuning CNI 插件支持更改几个接口属性,包括 all-multicast 模式。通过启用此模式,您可以在 SR-IOV 网络设备上配置的虚拟功能 (VF) 上运行的应用程序从其他 VF 上的应用程序接收多播流量,无论是附加到同一还是不同的物理功能。
6.4.1. 在 SR-IOV 网络中启用 all-multicast 模式 复制链接链接已复制到粘贴板!
您可以通过以下方法在 SR-IOV 接口中启用 all-multicast 模式:
-
在
SriovNetwork
资源的metaPlugins
参数中添加调优配置 在调优配置中将
allmulti
字段设置为true
注意确保创建启用了信任的虚拟功能 (VF)。
SR-IOV Network Operator 管理额外网络定义。当您指定要创建的额外 SR-IOV 网络时,SR-IOV Network Operator 会自动创建 NetworkAttachmentDefinition
自定义资源(CR)。
不要编辑 SR-IOV Network Operator 所管理的 NetworkAttachmentDefinition
自定义资源。这样做可能会破坏额外网络上的网络流量。
按照本指南,在 SR-IOV 网络中启用 all-multicast 模式。
先决条件
- 已安装 OpenShift Container Platform CLI (oc)。
-
以具有
cluster-admin
权限的用户身份登录 OpenShift Container Platform 集群。 - 已安装 SR-IOV Network Operator。
-
您已配置了适当的
SriovNetworkNodePolicy
对象。
流程
使用以下设置创建一个 YAML 文件,为 Mellanox ConnectX-5 设备定义
SriovNetworkNodePolicy
对象。将 YAML 文件保存为sriovnetpolicy-mlx.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:如果支持 SR-IOV 的集群节点还没有标记,请添加
SriovNetworkNodePolicy.Spec.NodeSelector
标签。有关标记节点的更多信息,请参阅"了解如何更新节点上的标签"。 运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f sriovnetpolicy-mlx.yaml
$ oc create -f sriovnetpolicy-mlx.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置更新后,
sriov-network-operator
命名空间中的所有 pod 会自动进入Running
状态。运行以下命令来创建
enable-allmulti-test
命名空间:oc create namespace enable-allmulti-test
$ oc create namespace enable-allmulti-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为额外 SR-IOV 网络附加创建
SriovNetwork
自定义资源 (CR) 并插入metaPlugins
配置,如下例所示,并将该文件保存为sriov-enable-all-multicast.yaml
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定对象的名称。SR-IOV Network Operator 创建一个名称相同的
NetworkAttachmentDefinition
对象。 - 2
- 指定 SR-IOV Network Operator 安装到的命名空间。
- 3
- 指定来自用于为这个额外网络定义 SR-IOV 硬件的
SriovNetworkNodePolicy
对象的spec.resourceName
参数的值。 - 4
- 为
SriovNetwork
对象指定目标命名空间。只有目标命名空间中的 pod 可以附加到额外网络。 - 5
- 为 IPAM CNI 插件指定一个配置对象作为 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
- 6
- 可选:为额外网络设置功能。您可以指定
"{ "ips": true }"
来启用 IP 地址支持,或指定"{ "mac": true }"
来启用 MAC 地址支持。 - 7
- 指定虚拟功能的信任模式。这必须设置为 "on"。
- 8
- 使用
metaPlugins
参数为设备添加更多功能。在此用例中,将type
字段设置为tuning
,并添加allmulti
字段,并将它设为true
。
运行以下命令来创建
SriovNetwork
资源:oc create -f sriov-enable-all-multicast.yaml
$ oc create -f sriov-enable-all-multicast.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证 NetworkAttachmentDefinition
CR
运行以下命令,确认 SR-IOV Network Operator 创建了
NetworkAttachmentDefinition
CR:oc get network-attachment-definitions -n <namespace>
$ oc get network-attachment-definitions -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<namespace>
替换为您在SriovNetwork
对象中指定的networkNamespace
的值。在本例中,是enable-allmulti-test
。预期输出显示 NAD CR 的名称和创建年龄(以分钟为单位)。
注意SR-IOV Network Operator 创建 CR 之前可能会有延迟。
运行以下命令,显示 SR-IOV 网络资源的信息:
oc get sriovnetwork -n openshift-sriov-network-operator
$ oc get sriovnetwork -n openshift-sriov-network-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证额外的 SR-IOV 网络附加
要验证 tuning CNI 是否已正确配置并附加了额外的 SR-IOV 网络附加,请按照以下步骤执行:
创建
Pod
CR。将以下 YAML 示例保存到名为examplepod.yaml
的文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Pod
CR:oc apply -f examplepod.yaml
$ oc apply -f examplepod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 pod 是否已创建:
oc get pod -n enable-allmulti-test
$ oc get pod -n enable-allmulti-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE samplepod 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE samplepod 1/1 Running 0 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令登录到 pod:
oc rsh -n enable-allmulti-test samplepod
$ oc rsh -n enable-allmulti-test samplepod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,列出与 pod 关联的所有接口:
ip link
sh-4.4# ip link
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow