This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.9.8. 在 DPDK 和 RDMA 模式中使用虚拟功能(VF)的示例
您可以使用单一根 I/O 虚拟化(SR-IOV)网络硬件和 Data Plane Development Kit (DPDK) 以及远程直接内存访问 (RDMA) 。
9.8.1. 在 DPDK 和 RDMA 模式中使用虚拟功能(VF)的示例 复制链接链接已复制到粘贴板!
Data Plane Development Kit (DPDK) 只是一个技术预览功能。技术预览功能不被红帽产品服务等级协议 (SLA) 支持,且可能在功能方面有缺陷。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
远程直接内存访问 (RDMA) 只是一个技术预览功能。技术预览功能不被红帽产品服务等级协议 (SLA) 支持,且可能在功能方面有缺陷。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
9.8.2. 先决条件 复制链接链接已复制到粘贴板!
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 您必须已安装了 SR-IOV Network Operator。
9.8.3. 在 Intel NIC 的 DPDK 模式中使用虚拟功能 (VF) 示例 复制链接链接已复制到粘贴板!
流程
创建以下
SriovNetworkNodePolicy
对象,然后在intel-dpdk-node-policy.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将虚拟功能(VF)的驱动器类型指定为
vfio-pci
。
注意请参阅
Configuring SR-IOV network devices
一节以了解SriovNetworkNodePolicy
中的每个选项的信息。当应用由
SriovNetworkNodePolicy
对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。应用配置更新后,
openshift-sriov-network-operator
命名空间中的所有 pod 将变为Running
状态。运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f intel-dpdk-node-policy.yaml
$ oc create -f intel-dpdk-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
SriovNetwork
对象,然后在intel-dpdk-network.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 ipam CNI 插件指定一个空对象
"{}"
。DPDK 在用户空间模式下工作,不需要 IP 地址。
注意请参阅
Configuring SR-IOV additional network
部分以了解SriovNetwork
中的每个选项的信息。运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f intel-dpdk-network.yaml
$ oc create -f intel-dpdk-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
Pod
spec,然后在intel-dpdk-pod.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
target_namespace
,它与SriovNetwork
对象intel-dpdk-network
创建于的命令空间相同。如果要在其他命名空间中创建 pod,在Pod
spec 和SriovNetowrk
对象中更改target_namespace
。 - 2
- 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
- 3
- 指定应用程序在容器内分配巨页内存所需的
IPC_LOCK
功能。 - 4
- 在
/dev/hugepages
下将巨页卷挂载到 DPDK pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages
。 - 5
- 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果未明确指定,则此资源请求和限制将被 SR-IOV 网络资源注入程序自动添加。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的
SriovOperatorConfig
CR 中的enableInjector
选项设置为false
来禁用它。 - 6
- 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为
static
,并创建带有有保障的
QoS 的 pod 来实现。 - 7
- 指定巨页大小
hugepages-1Gi
或hugepages-2Mi
以及分配给 DPDK pod 的巨页数量。单独配置2Mi
和1Gi
巨页。配置1Gi
巨页需要在节点中添加内核参数。例如:添加内核参数default_hugepagesz=1GB
,hugepagesz=1G
和hugepages=16
将在系统引导时分配16*1Gi
巨页。
运行以下命令来创建 DPDK pod:
oc create -f intel-dpdk-pod.yaml
$ oc create -f intel-dpdk-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.8.4. 使用带有 Mellanox NIC 的 DPDK 模式的虚拟功能(VF)示例 复制链接链接已复制到粘贴板!
流程
创建以下
SriovNetworkNodePolicy
对象,然后在mlx-dpdk-node-policy.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意请参阅
Configuring SR-IOV network devices
一节以了解SriovNetworkNodePolicy
中的每个选项的信息。当应用由
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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
SriovNetwork
对象,然后在mlx-dpdk-network.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 ipam CNI 插件指定一个配置对象做为一个 YAML 块 scalar。该插件管理网络附加定义的 IP 地址分配。
注意请参阅
Configuring SR-IOV additional network
部分以了解SriovNetwork
中的每个选项的信息。运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f mlx-dpdk-network.yaml
$ oc create -f mlx-dpdk-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
Pod
spec,然后在mlx-dpdk-pod.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
target_namespace
,它与SriovNetwork
对象mlx-dpdk-network
创建于的命令空间相同。如果要在其他命名空间中创建 pod,在Pod
spec 和SriovNetowrk
对象中更改target_namespace
。 - 2
- 指定包含应用程序和应用程序使用的 DPDK 库的 DPDK 镜像。
- 3
- 指定应用程序在容器内分配巨页内存所需的
IPC_LOCK
功能,以及用于应用程序访问网络接口的NET_RAW
。 - 4
- 在
/dev/hugepages
下将巨页卷挂载到 DPDK pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages
。 - 5
- 可选:指定分配给 DPDK pod 的 DPDK 设备数。如果未明确指定,则此资源请求和限制将被 SR-IOV 网络资源注入程序自动添加。SR-IOV 网络资源注入程序是由 SR-IOV Operator 管理的准入控制器组件。它默认是启用的,可以通过把默认的
SriovOperatorConfig
CR 中的enableInjector
选项设置为false
来禁用它。 - 6
- 指定 CPU 数量。DPDK pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为
static
,并创建带有有保障的
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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.8.5. 带有 Mellanox NIC 的 RDMA 模式中的虚拟功能(VF)示例 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 上使用 RDMA 时,RDMA over Converged Ethernet (RoCE) 是唯一支持的模式。
流程
创建以下
SriovNetworkNodePolicy
对象,然后在mlx-rdma-node-policy.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意请参阅
Configuring SR-IOV network devices
一节以了解SriovNetworkNodePolicy
中的每个选项的信息。当应用由
SriovNetworkNodePolicy
对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。它可能需要几分钟时间来应用配置更改。确保集群中有足够的可用节点,用以预先处理被驱除的工作负载。应用配置更新后,
openshift-sriov-network-operator
命名空间中的所有 pod 将变为Running
状态。运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f mlx-rdma-node-policy.yaml
$ oc create -f mlx-rdma-node-policy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
SriovNetwork
对象,然后在mlx-rdma-network.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 ipam CNI 插件指定一个配置对象做为一个 YAML 块 scalar。该插件管理网络附加定义的 IP 地址分配。
注意请参阅
Configuring SR-IOV additional network
部分以了解SriovNetwork
中的每个选项的信息。运行以下命令来创建
SriovNetworkNodePolicy
对象:oc create -f mlx-rdma-network.yaml
$ oc create -f mlx-rdma-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
Pod
spec,然后在mlx-rdma-pod.yaml
文件中保存 YAML。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
target_namespace
,它与SriovNetwork
对象mlx-rdma-network
创建于的命令空间相同。如果要在其他命名空间中创建 pod,在Pod
spec 和SriovNetowrk
对象中更改target_namespace
。 - 2
- 指定包含应用程序和应用程序使用的 RDMA 库的 RDMA 镜像。
- 3
- 指定应用程序在容器内分配巨页内存所需的
IPC_LOCK
功能。 - 4
- 在
/dev/hugepages
下将巨页卷挂载到 RDMA pod。巨页卷由 emptyDir 卷类型支持,medium 为Hugepages
。 - 5
- 指定 CPU 数量。RDMA pod 通常需要从 kubelet 分配专用 CPU。这可以通过将 CPU Manager 策略设置为
static
,并创建带有有保障的
QoS 的 pod 来实现。 - 6
- 指定巨页大小
hugepages-1Gi
或hugepages-2Mi
以及分配给 RDMA pod 的巨页数量。单独配置2Mi
和1Gi
巨页。配置1Gi
巨页需要在节点中添加内核参数。
运行以下命令来创建 RDMA pod:
oc create -f mlx-rdma-pod.yaml
$ oc create -f mlx-rdma-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow