6.2. 设置一个 sysctl 标记
您可以为连接到 SR-IOV 网络设备的 pod 设置接口级网络 sysctl
设置。
在本例中,net.ipv4.conf.IFNAME.accept_redirects
在创建的虚拟接口上设置为 1
。
sysctl-tuning-test
是本例中使用的命名空间。
使用以下命令来创建
sysctl-tuning-test
命名空间:oc create namespace sysctl-tuning-test
$ oc create namespace sysctl-tuning-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.1. 在使用 SR-IOV 网络设备的节点上设置一个 sysctl 标志 复制链接链接已复制到粘贴板!
SR-IOV Network Operator 将 SriovNetworkNodePolicy.sriovnetwork.openshift.io
自定义资源定义(CRD) 添加到 OpenShift Container Platform。您可以通过创建一个 SriovNetworkNodePolicy
自定义资源 (CR) 来配置 SR-IOV 网络设备。
当应用由 SriovNetworkNodePolicy
对象中指定的配置时,SR-IOV Operator 可能会排空并重启节点。
它可能需要几分钟时间来应用配置更改。
按照以下步骤创建一个 SriovNetworkNodePolicy
自定义资源 (CR)。
流程
创建一个
SriovNetworkNodePolicy
自定义资源 (CR)。例如,将以下 YAML 保存为文件policyoneflag-sriov-node-network.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 自定义资源对象的名称。
- 2
- 安装 SR-IOV Network Operator 的命名空间。
- 3
- SR-IOV 网络设备插件的资源名称。您可以为资源名称创建多个 SR-IOV 网络节点策略。
- 4
- 节点选择器指定要配置的节点。只有所选节点上的 SR-IOV 网络设备才会被配置。SR-IOV Container Network Interface(CNI)插件和设备插件仅在所选节点上部署。
- 5
- 可选: priority 是一个
0
到99
之间的整数。较小的值具有更高的优先级。例如,优先级10
是高于优先级99
。默认值为99
。 - 6
- 为 SR-IOV 物理网络设备创建的虚拟功能(VF)的数量。对于 Intel 网络接口控制器(NIC),VF 的数量不能超过该设备支持的 VF 总数。对于 Mellanox NIC,VF 的数量不能超过
127
。 - 7
- NIC 选择器标识要配置的 Operator 的设备。您不必为所有参数指定值。建议您足够精确地识别网络设备以避免意外选择设备。如果指定了
rootDevices
,则必须同时为vendor
、deviceID
或pfNames
指定一个值。如果同时指定了pfNames
和rootDevices
,请确保它们引用同一设备。如果您为netFilter
指定了一个值,那么您不需要指定任何其他参数,因为网络 ID 是唯一的。 - 8
- 可选:该设备的一个或多个物理功能(PF)名称的数组。
- 9
- 可选:虚拟功能的驱动程序类型。唯一允许的值是
netdevice
。对于裸机节点上的 DPDK 模式的 Mellanox NIC,请将isRdma
设置为true
。 - 10
- 可选:配置是否启用远程直接访问 (RDMA) 模式。默认值为
false
。如果isRdma
参数设为true
,您可以继续使用启用了 RDMA 的 VF 作为普通网络设备。设备可在其中的一个模式中使用。将isRdma
设置为true
,并将needVhostNet
设置为true
以配置 Mellanox NIC 以用于 Fast Datapath DPDK 应用程序。
注意vfio-pci
驱动程序类型不被支持。创建
SriovNetworkNodePolicy
对象:oc create -f policyoneflag-sriov-node-network.yaml
$ oc create -f policyoneflag-sriov-node-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用配置更新后,
sriov-network-operator
命名空间中的所有 pod 将变为Running
状态。要验证是否已配置了 SR-IOV 网络设备,请输入以下命令。将
<node_name>
替换为带有您刚才配置的 SR-IOV 网络设备的节点名称。预期输出显示Succeeded
。oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath='{.status.syncStatus}'
$ oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath='{.status.syncStatus}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.2. 在 SR-IOV 网络中配置 sysctl 复制链接链接已复制到粘贴板!
您可以通过将调优配置添加到 SriovNetwork
资源的可选 metaPlugins
参数,在 SR-IOV 创建的虚拟接口上设置特定于接口的 sysctl
设置。
SR-IOV Network Operator 管理额外网络定义。当您指定要创建的额外 SR-IOV 网络时,SR-IOV Network Operator 会自动创建 NetworkAttachmentDefinition
自定义资源(CR)。
不要编辑 SR-IOV Network Operator 所管理的 NetworkAttachmentDefinition
自定义资源。这样做可能会破坏额外网络上的网络流量。
要更改接口级别网络 net.ipv4.conf.IFNAME.accept_redirects
sysctl
设置,请使用 Container Network Interface (CNI) 调整插件创建额外的 SR-IOV 网络。
先决条件
- 安装 OpenShift Container Platform CLI(oc)。
- 以具有 cluster-admin 权限的用户身份登录 OpenShift Container Platform 集群。
流程
为额外 SR-IOV 网络附加创建
SriovNetwork
自定义资源 (CR) 并插入metaPlugins
配置,如下例所示。将 YAML 保存为文件sriov-network-interface-sysctl.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
- 可选: metaPlugins 参数用于为该设备添加额外的功能。在这种情况下,将
type
字段设置为tuning
。指定在sysctl
字段中设置的接口级网络sysctl
。
创建
SriovNetwork
资源:oc create -f sriov-network-interface-sysctl.yaml
$ oc create -f sriov-network-interface-sysctl.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
的值。例如:sysctl-tuning-test
。预期输出显示 NAD CRD 的名称并创建期限(以分钟为单位)。
注意SR-IOV Network Operator 创建 CR 之前可能会有延迟。
验证额外 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 sysctl-tuning-test
$ oc get pod -n sysctl-tuning-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令登录到 pod:
oc rsh -n sysctl-tuning-test tunepod
$ oc rsh -n sysctl-tuning-test tunepod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证配置的 sysctl 标记的值。运行以下命令,查找
net.ipv4.conf.IFNAME.accept_redirects
的值:sysctl net.ipv4.conf.net1.accept_redirects
$ sysctl net.ipv4.conf.net1.accept_redirects
Copy to Clipboard Copied! Toggle word wrap Toggle overflow