9.3. 在带有 Mellanox NIC 的 DPDK 模式中使用虚拟功能
您可以创建一个网络节点策略,并在带有 Mellanox NIC 的 DPDK 模式中使用虚拟功能创建 Data Plane Development Kit (DPDK) pod。
先决条件
- 
						已安装 OpenShift CLI(
oc)。 - 已安装 Single Root I/O Virtualization (SR-IOV) Network Operator。
 - 
						您已以具有 
cluster-admin权限的用户身份登录。 
流程
将以下
SriovNetworkNodePolicyYAML 配置保存到mlx-dpdk-node-policy.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如需了解
SriovNetworkNodePolicy对象中的每个选项的详细说明,请参阅配置 SR-IOV 网络设备。当应用由
SriovNetworkNodePolicy对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。应用配置更新后,
openshift-sriov-network-operator命名空间中的所有 pod 将变为Running状态。运行以下命令来创建
SriovNetworkNodePolicy对象:oc create -f mlx-dpdk-node-policy.yaml
$ oc create -f mlx-dpdk-node-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下
SriovNetworkYAML 配置保存到mlx-dpdk-network.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 为 IP 地址管理 (IPAM) Container Network Interface (CNI) 插件指定一个配置对象作为 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
 
注意如需了解
SriovNetwork对象中的每个选项的详细说明,请参阅配置 SR-IOV 网络设备。app-netutil选项库提供了几个 API 方法,用于收集有关容器父 pod 的网络信息。运行以下命令来创建
SriovNetwork对象:oc create -f mlx-dpdk-network.yaml
$ oc create -f mlx-dpdk-network.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下
PodYAML 配置保存到mlx-dpdk-pod.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定
target_namespace,它与SriovNetwork对象mlx-dpdk-network创建于的命令空间相同。要在不同命名空间中创建 pod,在Podspec 和SriovNetwork对象中更改target_namespace。 - 2
 - 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
 - 3
 - 指定容器内的应用程序进行大页分配、系统资源分配和网络接口访问所需的额外功能。
 - 4
 - 将巨页卷挂载到
/mnt/huge下的 DPDK pod 中。巨页卷由emptyDir卷类型支持,介质是Hugepages。 - 5
 - 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果没有明确指定,则 SR-IOV 网络资源注入程序会自动添加此资源请求和限制。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的
SriovOperatorConfigCR 中的enableInjector选项设置为false来禁用它。 - 6
 - 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。要做到这一点,将 CPU Manager 策略设置为
static,并创建带有Guaranteed服务质量 (QoS) 的 pod。 - 7
 - 指定巨页大小
hugepages-1Gi或hugepages-2Mi以及分配给 DPDK pod 的巨页数量。单独配置2Mi和1Gi巨页。配置1Gi巨页需要在节点中添加内核参数。 
运行以下命令来创建 DPDK pod:
oc create -f mlx-dpdk-pod.yaml
$ oc create -f mlx-dpdk-pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow