10.2. 配置 SR-IOV Network Operator
Single Root I/O Virtualization(SR-IOV)Network Operator 管理集群中的 SR-IOV 网络设备和网络附加。
10.2.1. 配置 SR-IOV Network Operator 复制链接链接已复制到粘贴板!
创建一个
SriovOperatorConfig
自定义资源 (CR) 以部署所有 SR-IOV Operator 组件:使用以下 YAML 创建名为
sriovOperatorConfig.yaml
的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SriovOperatorConfig
资源的唯一有效名称是default
,它必须位于部署 Operator 的命名空间中。- 2
enableInjector
字段如果没有在 CR 中指定或明确设置为true
,则默认为false
或<none>
,这会防止任何network-resources-injector
pod 在命名空间中运行。建议的设置为true
。- 3
enableOperatorWebhook
字段如果没有在 CR 中指定或明确设置为 true,则默认为false
或<none>
,这会防止任何operator-webhook
pod 在命名空间中运行。建议的设置为true
。
运行以下命令来创建资源:
oc apply -f sriovOperatorConfig.yaml
$ oc apply -f sriovOperatorConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.1. SR-IOV Network Operator 配置自定义资源 复制链接链接已复制到粘贴板!
sriovoperatorconfig
自定义资源的字段在下表中描述:
字段 | 类型 | 描述 |
---|---|---|
|
|
指定 SR-IOV Network Operator 实例的名称。默认值为 |
|
|
指定 SR-IOV Network Operator 实例的命名空间。默认值为 |
|
| 指定在所选节点上调度 SR-IOV 网络配置守护进程的节点选择。默认情况下,此字段没有设置,Operator 会在 worker 节点上部署 SR-IOV 网络配置守护进程集。 |
|
|
指定是否禁用节点排空过程,或者在应用新策略在节点上配置 NIC 时启用节点排空过程。将此字段设置为
对于单节点集群,在安装 Operator 后将此字段设置为 |
|
| 指定是否启用或禁用 Network Resources Injector 守护进程集。 |
|
| 指定是否启用或禁用 Operator Admission Controller webhook 守护进程集。 |
|
|
指定 Operator 的日志详细程度。默认情况下,此字段设置为 |
|
|
指定是否启用或禁用可选功能。例如, |
|
|
指定是否启用或禁用 SR-IOV Network Operator 指标。默认情况下,此字段设置为 |
|
|
指定是否在 SR-IOV Network Operator 中的虚拟功能(VF)上重置固件。有些芯片组(如 Intel C740 系列)不会完全关闭 PCI-E 设备,这是在 NVIDIA/Mellanox NIC 上配置 VF 所必需的。默认情况下,此字段设置为 重要
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。 |
10.2.1.2. 关于 Network Resources Injector(网络资源注入器) 复制链接链接已复制到粘贴板!
Network Resources Injector 是一个 Kubernetes Dynamic Admission Controller 应用。它提供以下功能:
- 根据 SR-IOV 网络附加定义注解,对 Pod 规格中的资源请求和限值进行修改,以添加 SR-IOV 资源名称。
-
使用 Downward API 卷修改 pod 规格,以公开 pod 注解、标签和巨页请求和限制。在 pod 中运行的容器可以作为
/etc/podnetinfo
路径下的文件来访问公开的信息。
当在 SriovOperatorConfig
CR 中将 enableInjector
设置为 true
时,SR-IOV Network Operator 会启用 Network Resources Injector。network-resources-injector
pod 作为守护进程集在所有 control plane 节点上运行。以下是在具有三个 control plane 节点的集群中运行的 Network Resources Injector pod 示例:
oc get pods -n openshift-sriov-network-operator
$ oc get pods -n openshift-sriov-network-operator
输出示例
NAME READY STATUS RESTARTS AGE network-resources-injector-5cz5p 1/1 Running 0 10m network-resources-injector-dwqpx 1/1 Running 0 10m network-resources-injector-lktz5 1/1 Running 0 10m
NAME READY STATUS RESTARTS AGE
network-resources-injector-5cz5p 1/1 Running 0 10m
network-resources-injector-dwqpx 1/1 Running 0 10m
network-resources-injector-lktz5 1/1 Running 0 10m
10.2.1.3. 禁用或启用网络资源注入器 复制链接链接已复制到粘贴板!
要禁用或启用 Network Resources Injector (网络资源注入器),请完成以下步骤。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 您必须已安装了 SR-IOV Network Operator。
流程
设置
enableInjector
字段。将<value>
替换为false
来禁用这个功能;或替换为true
来启用这个功能。oc patch sriovoperatorconfig default \ --type=merge -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableInjector": <value> } }'
$ oc patch sriovoperatorconfig default \ --type=merge -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableInjector": <value> } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来更新 Operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.4. 关于 SR-IOV Network Operator 准入控制器 Webhook 复制链接链接已复制到粘贴板!
SR-IOV Network Operator Admission Controller Webhook 是一个 Kubernetes Dynamic Admission Controller 应用程序。它提供以下功能:
-
在创建或更新时,验证
SriovNetworkNodePolicy
CR。 -
修改
SriovNetworkNodePolicy
CR,在创建或更新 CR 时为priority
和deviceType
项设置默认值。
当在 SriovOperatorConfig
CR 中将 enableOperatorWebhook
设置为 true
时,Operator 会启用 SR-IOV Network Operator Admission Controller Webhook。operator-webhook
pod 在所有 control plane 节点上作为守护进程集运行。
禁用 SR-IOV Network Operator Admission Controller Webhook 时要小心。您可以在特定情况下禁用 webhook,如故障排除,或者想要使用不支持的设备。有关配置不支持的设备的详情,请参考将 SR-IOV Network Operator 配置为使用不支持的 NIC。
以下是在具有三个 control plane 节点的集群中运行的 Operator Admission Controller webhook pod 的示例:
oc get pods -n openshift-sriov-network-operator
$ oc get pods -n openshift-sriov-network-operator
输出示例
NAME READY STATUS RESTARTS AGE operator-webhook-9jkw6 1/1 Running 0 16m operator-webhook-kbr5p 1/1 Running 0 16m operator-webhook-rpfrl 1/1 Running 0 16m
NAME READY STATUS RESTARTS AGE
operator-webhook-9jkw6 1/1 Running 0 16m
operator-webhook-kbr5p 1/1 Running 0 16m
operator-webhook-rpfrl 1/1 Running 0 16m
10.2.1.5. 禁用或启用 SR-IOV Network Operator 准入控制器 Webhook 复制链接链接已复制到粘贴板!
要禁用或启用准入控制器 Webhook,请完成以下步骤。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 您必须已安装了 SR-IOV Network Operator。
流程
设置
enableOperatorWebhook
字段。将<value>
替换为false
来禁用这个功能;或替换为true
来启用这个功能:oc patch sriovoperatorconfig default --type=merge \ -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableOperatorWebhook": <value> } }'
$ oc patch sriovoperatorconfig default --type=merge \ -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableOperatorWebhook": <value> } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来更新 Operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.6. 关于自定义节点选择器 复制链接链接已复制到粘贴板!
SR-IOV 网络配置守护进程在集群节点上发现并配置 SR-IOV 网络设备。默认情况下,它将部署到集群中的所有 worker
节点。您可以使用节点标签指定 SR-IOV 网络配置守护进程在哪些节点上运行。
10.2.1.7. 为 SR-IOV 网络配置守护进程配置自定义 NodeSelector 复制链接链接已复制到粘贴板!
SR-IOV 网络配置守护进程在集群节点上发现并配置 SR-IOV 网络设备。默认情况下,它将部署到集群中的所有 worker
节点。您可以使用节点标签指定 SR-IOV 网络配置守护进程在哪些节点上运行。
要指定部署了 SR-IOV 网络配置守护进程的节点,请完成以下步骤。
当您更新 configDaemonNodeSelector
字段时,SR-IOV 网络配置守护进程会在所选节点中重新创建。在重新创建守护进程时,集群用户无法应用任何新的 SR-IOV 网络节点策略或创建新的 SR-IOV Pod。
流程
要为 Operator 更新节点选择器,请输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<node_label>
替换为要应用的标签,如下例中:"node-role.kubernetes.io/worker": ""
。提示您还可以应用以下 YAML 来更新 Operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.8. 为单一节点安装配置 SR-IOV Network Operator 复制链接链接已复制到粘贴板!
默认情况下,SR-IOV Network Operator 会在每次策略更改前从节点排空工作负载。Operator 会执行这个操作,以确保在重新配置前没有使用虚拟功能的工作负载。
对于在单一节点上安装,没有其他节点来接收工作负载。因此,Operator 不得配置为从单一节点排空工作负载。
执行以下步骤禁用排空工作负载后,您必须删除所有使用 SR-IOV 网络接口的工作负载,然后才能更改任何 SR-IOV 网络节点策略。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。 - 您必须已安装了 SR-IOV Network Operator。
流程
要将
disableDrain
字段设置为true
,并将configDaemonNodeSelector
字段设置为node-role.kubernetes.io/master: ""
,请输入以下命令:oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "disableDrain": true, "configDaemonNodeSelector": { "node-role.kubernetes.io/master": "" } } }'
$ oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "disableDrain": true, "configDaemonNodeSelector": { "node-role.kubernetes.io/master": "" } } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来更新 Operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1.9. 为托管 control plane 部署 SR-IOV Operator 复制链接链接已复制到粘贴板!
配置和部署托管服务集群后,您可以在托管集群中创建 SR-IOV Operator 订阅。SR-IOV pod 在 worker 机器上运行而不是在 control plane 上运行。
先决条件
您必须在 AWS 上配置和部署托管集群。
流程
创建命名空间和 Operator 组:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 SR-IOV Operator 的订阅:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 SR-IOV Operator 是否已就绪,请运行以下命令并查看生成的输出:
oc get csv -n openshift-sriov-network-operator
$ oc get csv -n openshift-sriov-network-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DISPLAY VERSION REPLACES PHASE sriov-network-operator.4.18.0-202211021237 SR-IOV Network Operator 4.18.0-202211021237 sriov-network-operator.4.18.0-202210290517 Succeeded
NAME DISPLAY VERSION REPLACES PHASE sriov-network-operator.4.18.0-202211021237 SR-IOV Network Operator 4.18.0-202211021237 sriov-network-operator.4.18.0-202210290517 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证 SR-IOV pod 是否已部署,请运行以下命令:
oc get pods -n openshift-sriov-network-operator
$ oc get pods -n openshift-sriov-network-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.2. 关于 SR-IOV 网络指标导出器 复制链接链接已复制到粘贴板!
Single Root I/O Virtualization (SR-IOV) 网络指标导出器读取 SR-IOV 虚拟功能 (VF) 的指标,并以 Prometheus 格式公开这些 VF 指标。启用 SR-IOV 网络指标导出器时,您可以使用 OpenShift Container Platform Web 控制台查询 SR-IOV VF 指标,来监控 SR-IOV pod 的网络活动。
当使用 web 控制台查询 SR-IOV VF 指标时,SR-IOV 网络指标导出器会获取并返回 VF 网络统计信息,以及 VF 附加到的 pod 的名称和命名空间。
下表中描述了指标导出器以 Prometheus 格式读取和公开的 SR-IOV VF 指标:
指标 | 描述 | 检查 VF 指标的 PromQL 查询示例 |
---|---|---|
| 每个虚拟功能接收的字节数。 |
|
| 每个虚拟功能传输的字节数。 |
|
| 每个虚拟功能接收的数据包。 |
|
| 每个虚拟功能传输的数据包。 |
|
| 每个虚拟功能接收后丢弃的数据包。 |
|
| 每个虚拟功能传输过程中丢弃的数据包。 |
|
| 每个虚拟功能接收的多播数据包。 |
|
| 每个虚拟功能接收的广播数据包。 |
|
| 链接到活跃 pod 的虚拟功能。 | - |
您还可以将这些查询与 kube-state-metrics 合并,以获取有关 SR-IOV pod 的更多信息。例如,您可以使用以下查询从标准 Kubernetes pod 标签获取 VF 网络统计信息以及应用程序名称:
(sriov_vf_tx_packets * on (pciAddr,node) group_left(pod,namespace) sriov_kubepoddevice) * on (pod,namespace) group_left (label_app_kubernetes_io_name) kube_pod_labels
(sriov_vf_tx_packets * on (pciAddr,node) group_left(pod,namespace) sriov_kubepoddevice) * on (pod,namespace) group_left (label_app_kubernetes_io_name) kube_pod_labels
10.2.2.1. 启用 SR-IOV 网络指标导出器 复制链接链接已复制到粘贴板!
默认情况下,单根 I/O 虚拟化 (SR-IOV) 网络指标导出器被禁用。要启用指标导出器,您必须将 spec.featureGates.metricsExporter
字段设置为 true
。
启用指标导出器后,SR-IOV Network Operator 仅在具有 SR-IOV 功能的节点上部署指标导出器。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您已以具有
cluster-admin
权限的用户身份登录。 - 已安装 SR-IOV Network Operator。
流程
运行以下命令来启用集群监控:
oc label ns/openshift-sriov-network-operator openshift.io/cluster-monitoring=true
$ oc label ns/openshift-sriov-network-operator openshift.io/cluster-monitoring=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要启用集群监控,您必须在安装了 SR-IOV Network Operator 的命名空间中创建
openshift.io/cluster-monitoring=true
标签。运行以下命令,将
spec.featureGates.metricsExporter
字段设置为true
:oc patch -n openshift-sriov-network-operator sriovoperatorconfig/default \ --type='merge' -p='{"spec": {"featureGates": {"metricsExporter": true}}}'
$ oc patch -n openshift-sriov-network-operator sriovoperatorconfig/default \ --type='merge' -p='{"spec": {"featureGates": {"metricsExporter": true}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查 SR-IOV 网络指标导出器是否已启用:
oc get pods -n openshift-sriov-network-operator
$ oc get pods -n openshift-sriov-network-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE operator-webhook-hzfg4 1/1 Running 0 5d22h sriov-network-config-daemon-tr54m 1/1 Running 0 5d22h sriov-network-metrics-exporter-z5d7t 1/1 Running 0 10s sriov-network-operator-cc6fd88bc-9bsmt 1/1 Running 0 5d22h
NAME READY STATUS RESTARTS AGE operator-webhook-hzfg4 1/1 Running 0 5d22h sriov-network-config-daemon-tr54m 1/1 Running 0 5d22h sriov-network-metrics-exporter-z5d7t 1/1 Running 0 10s sriov-network-operator-cc6fd88bc-9bsmt 1/1 Running 0 5d22h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sriov-network-metrics-exporter
pod 必须处于READY
状态。- 可选:使用 OpenShift Container Platform Web 控制台检查 SR-IOV 虚拟功能 (VF) 指标。如需更多信息,请参阅"查询指标"。