5.4. 关于 all-multicast 模式
				启用 all-multicast 模式(特别是在无根应用程序上下文中)非常重要。如果没有启用此模式,则需要为 Pod 的安全上下文约束(SCC )授予 NET_ADMIN 功能。如果您要允许 NET_ADMIN 功能授予 pod 权限,以便更改超出其特定要求的更改,您可能会暴露安全漏洞。
			
tuning CNI 插件支持更改几个接口属性,包括 all-multicast 模式。通过启用此模式,您可以在 SR-IOV 网络设备上配置的虚拟功能 (VF) 上运行的应用程序从其他 VF 上的应用程序接收多播流量,无论是附加到同一还是不同的物理功能。
5.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 创建了 - NetworkAttachmentDefinitionCR:- 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 网络附加,请按照以下步骤执行:
- 创建 - PodCR。将以下 YAML 示例保存到名为- examplepod.yaml的文件中:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - PodCR:- 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