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 组件:

    1. 使用以下 YAML 创建名为 sriovOperatorConfig.yaml 的文件:

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovOperatorConfig
      metadata:
        name: default 
      1
      
        namespace: openshift-sriov-network-operator
      spec:
        disableDrain: false
        enableInjector: true 
      2
      
        enableOperatorWebhook: true 
      3
      
        logLevel: 2
        featureGates:
          metricsExporter: false
      Copy to Clipboard Toggle word wrap
      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
    2. 运行以下命令来创建资源:

      $ oc apply -f sriovOperatorConfig.yaml
      Copy to Clipboard Toggle word wrap

10.2.1.1. SR-IOV Network Operator 配置自定义资源

sriovoperatorconfig 自定义资源的字段在下表中描述:

Expand
表 10.1. SR-IOV Network Operator 配置自定义资源
字段类型描述

metadata.name

string

指定 SR-IOV Network Operator 实例的名称。默认值为 default。不要设置不同的值。

metadata.namespace

string

指定 SR-IOV Network Operator 实例的命名空间。默认值为 openshift-sriov-network-operator。不要设置不同的值。

spec.configDaemonNodeSelector

string

指定在所选节点上调度 SR-IOV 网络配置守护进程的节点选择。默认情况下,此字段没有设置,Operator 会在 worker 节点上部署 SR-IOV 网络配置守护进程集。

spec.disableDrain

布尔值

指定是否禁用节点排空过程,或者在应用新策略在节点上配置 NIC 时启用节点排空过程。将此字段设置为 true 可促进软件开发,并在单一节点上安装 OpenShift Container Platform。默认情况下不设置此字段。

对于单节点集群,在安装 Operator 后将此字段设置为 true。此字段必须保持设为 true

spec.enableInjector

布尔值

指定是否启用或禁用 Network Resources Injector 守护进程集。

spec.enableOperatorWebhook

布尔值

指定是否启用或禁用 Operator Admission Controller webhook 守护进程集。

spec.logLevel

整数

指定 Operator 的日志详细程度。默认情况下,此字段设置为 0,它只显示基本日志。设置为 2,以显示所有可用的日志。

spec.featureGates

map[string]bool

指定是否启用或禁用可选功能。例如,metricsExporter

spec.featureGates.metricsExporter

布尔值

指定是否启用或禁用 SR-IOV Network Operator 指标。默认情况下,此字段设置为 false

spec.featureGates.mellanoxFirmwareReset

布尔值

指定是否在 SR-IOV Network Operator 中的虚拟功能(VF)上重置固件。有些芯片组(如 Intel C740 系列)不会完全关闭 PCI-E 设备,这是在 NVIDIA/Mellanox NIC 上配置 VF 所必需的。默认情况下,此字段设置为 false

重要

spec.featureGates.mellanoxFirmwareReset 参数只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

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
Copy to Clipboard Toggle word wrap

输出示例

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
Copy to Clipboard Toggle word wrap

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> } }'
    Copy to Clipboard Toggle word wrap
    提示

    您还可以应用以下 YAML 来更新 Operator:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      enableInjector: <value>
    Copy to Clipboard Toggle word wrap

SR-IOV Network Operator Admission Controller Webhook 是一个 Kubernetes Dynamic Admission Controller 应用程序。它提供以下功能:

  • 在创建或更新时,验证 SriovNetworkNodePolicy CR。
  • 修改 SriovNetworkNodePolicy CR,在创建或更新 CR 时为 prioritydeviceType 项设置默认值。

当在 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
Copy to Clipboard Toggle word wrap

输出示例

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
Copy to Clipboard Toggle word wrap

要禁用或启用准入控制器 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> } }'
    Copy to Clipboard Toggle word wrap
    提示

    您还可以应用以下 YAML 来更新 Operator:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      enableOperatorWebhook: <value>
    Copy to Clipboard Toggle word wrap

10.2.1.6. 关于自定义节点选择器

SR-IOV 网络配置守护进程在集群节点上发现并配置 SR-IOV 网络设备。默认情况下,它将部署到集群中的所有 worker 节点。您可以使用节点标签指定 SR-IOV 网络配置守护进程在哪些节点上运行。

SR-IOV 网络配置守护进程在集群节点上发现并配置 SR-IOV 网络设备。默认情况下,它将部署到集群中的所有 worker 节点。您可以使用节点标签指定 SR-IOV 网络配置守护进程在哪些节点上运行。

要指定部署了 SR-IOV 网络配置守护进程的节点,请完成以下步骤。

重要

当您更新 configDaemonNodeSelector 字段时,SR-IOV 网络配置守护进程会在所选节点中重新创建。在重新创建守护进程时,集群用户无法应用任何新的 SR-IOV 网络节点策略或创建新的 SR-IOV Pod。

流程

  • 要为 Operator 更新节点选择器,请输入以下命令:

    $ oc patch sriovoperatorconfig default --type=json \
      -n openshift-sriov-network-operator \
      --patch '[{
          "op": "replace",
          "path": "/spec/configDaemonNodeSelector",
          "value": {<node_label>}
        }]'
    Copy to Clipboard Toggle word wrap

    <node_label> 替换为要应用的标签,如下例中:"node-role.kubernetes.io/worker": ""

    提示

    您还可以应用以下 YAML 来更新 Operator:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      configDaemonNodeSelector:
        <node_label>
    Copy to Clipboard Toggle word wrap

默认情况下,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": "" } } }'
    Copy to Clipboard Toggle word wrap
    提示

    您还可以应用以下 YAML 来更新 Operator:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      disableDrain: true
      configDaemonNodeSelector:
       node-role.kubernetes.io/master: ""
    Copy to Clipboard Toggle word wrap

10.2.1.9. 为托管 control plane 部署 SR-IOV Operator

配置和部署托管服务集群后,您可以在托管集群中创建 SR-IOV Operator 订阅。SR-IOV pod 在 worker 机器上运行而不是在 control plane 上运行。

先决条件

您必须在 AWS 上配置和部署托管集群。

流程

  1. 创建命名空间和 Operator 组:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-sriov-network-operator
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: sriov-network-operators
      namespace: openshift-sriov-network-operator
    spec:
      targetNamespaces:
      - openshift-sriov-network-operator
    Copy to Clipboard Toggle word wrap
  2. 创建 SR-IOV Operator 的订阅:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sriov-network-operator-subsription
      namespace: openshift-sriov-network-operator
    spec:
      channel: stable
      name: sriov-network-operator
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: ""
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    Copy to Clipboard Toggle word wrap

验证

  1. 要验证 SR-IOV Operator 是否已就绪,请运行以下命令并查看生成的输出:

    $ oc get csv -n openshift-sriov-network-operator
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

  2. 要验证 SR-IOV pod 是否已部署,请运行以下命令:

    $ oc get pods -n openshift-sriov-network-operator
    Copy to Clipboard Toggle word wrap

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 指标:

Expand
表 10.2. SR-IOV VF 指标
指标描述检查 VF 指标的 PromQL 查询示例

sriov_vf_rx_bytes

每个虚拟功能接收的字节数。

sriov_vf_rx_bytes * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_tx_bytes

每个虚拟功能传输的字节数。

sriov_vf_tx_bytes * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_rx_packets

每个虚拟功能接收的数据包。

sriov_vf_rx_packets * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_tx_packets

每个虚拟功能传输的数据包。

sriov_vf_tx_packets * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_rx_dropped

每个虚拟功能接收后丢弃的数据包。

sriov_vf_rx_dropped * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_tx_dropped

每个虚拟功能传输过程中丢弃的数据包。

sriov_vf_tx_dropped * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_rx_multicast

每个虚拟功能接收的多播数据包。

sriov_vf_rx_multicast * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_vf_rx_broadcast

每个虚拟功能接收的广播数据包。

sriov_vf_rx_broadcast * on (pciAddr,node) group_left(pod,namespace,dev_type) sriov_kubepoddevice

sriov_kubepoddevice

链接到活跃 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
Copy to Clipboard Toggle word wrap

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。

流程

  1. 运行以下命令来启用集群监控:

    $ oc label ns/openshift-sriov-network-operator openshift.io/cluster-monitoring=true
    Copy to Clipboard Toggle word wrap

    要启用集群监控,您必须在安装了 SR-IOV Network Operator 的命名空间中创建 openshift.io/cluster-monitoring=true 标签。

  2. 运行以下命令,将 spec.featureGates.metricsExporter 字段设置为 true

    $ oc patch -n openshift-sriov-network-operator sriovoperatorconfig/default \
        --type='merge' -p='{"spec": {"featureGates": {"metricsExporter": true}}}'
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,检查 SR-IOV 网络指标导出器是否已启用:

    $ oc get pods -n openshift-sriov-network-operator
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

    sriov-network-metrics-exporter pod 必须处于 READY 状态。

  2. 可选:使用 OpenShift Container Platform Web 控制台检查 SR-IOV 虚拟功能 (VF) 指标。如需更多信息,请参阅"查询指标"。

10.2.3. 后续步骤

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat