3.6. 在 SR-IOV 网络策略更新过程中配置并行节点排空


默认情况下,SR-IOV Network Operator 会在每次策略更改前从节点排空工作负载。Operator 一次执行这个操作,一个节点以确保没有工作负载受到重新配置的影响。

在大型集群中,按顺序排空节点可能非常耗时,需要几小时甚至几天。在时间敏感的环境中,您可以在 SriovNetworkPoolConfig 自定义资源 (CR) 中启用并行节点排空,以更快地推出 SR-IOV 网络配置。

要配置并行排空,请使用 SriovNetworkPoolConfig CR 创建节点池。然后,您可以在池中添加节点,并在 Operator 可以并行排空的池中定义最大节点数。使用这个方法,您可以启用并行排空来更快地重新配置,同时确保池中仍有足够的节点来处理任何正在运行的工作负载。

注意

节点只能属于一个 SR-IOV 网络池配置。如果节点不是池的一部分,则会将其添加到虚拟(默认)中,该池配置为仅排空一个节点。

节点可能会在排空过程中重启。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。
  • 安装 SR-IOV Network Operator。
  • 节点具有支持 SR-IOV 的硬件。

流程

  1. 创建一个 SriovNetworkPoolConfig 资源:

    1. 创建一个定义 SriovNetworkPoolConfig 资源的 YAML 文件:

      sriov-nw-pool.yaml 文件示例

      apiVersion: v1
      kind: SriovNetworkPoolConfig
      metadata:
        name: pool-1 
      1
      
        namespace: openshift-sriov-network-operator 
      2
      
      spec:
        maxUnavailable: 2 
      3
      
        nodeSelector: 
      4
      
          matchLabels:
            node-role.kubernetes.io/worker: ""
      Copy to Clipboard Toggle word wrap

      1
      指定 SriovNetworkPoolConfig 对象的名称。
      2
      指定安装 SR-IOV Network Operator 的命名空间。
      3
      为在更新过程中可用的节点指定一个整数或百分比值。例如,如果您有 10 个节点,并且将最大不可用设置为 2,那么可以随时并行排空 2 个节点,保留 8 个节点来处理工作负载。
      4
      使用节点选择器指定要添加池的节点。本例将具有 worker 角色的所有节点添加到池中。
    2. 运行以下命令来创建 SriovNetworkPoolConfig 资源:

      $ oc create -f sriov-nw-pool.yaml
      Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建 sriov-test 命名空间:

    $ oc create namespace sriov-test
    Copy to Clipboard Toggle word wrap
  3. 创建一个 SriovNetworkNodePolicy 资源:

    1. 创建一个定义 SriovNetworkNodePolicy 资源的 YAML 文件:

      sriov-node-policy.yaml 文件示例

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkNodePolicy
      metadata:
        name: sriov-nic-1
        namespace: openshift-sriov-network-operator
      spec:
        deviceType: netdevice
        nicSelector:
          pfNames: ["ens1"]
        nodeSelector:
          node-role.kubernetes.io/worker: ""
        numVfs: 5
        priority: 99
        resourceName: sriov_nic_1
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来创建 SriovNetworkNodePolicy 资源:

      $ oc create -f sriov-node-policy.yaml
      Copy to Clipboard Toggle word wrap
  4. 创建一个 SriovNetwork 资源:

    1. 创建一个定义 SriovNetwork 资源的 YAML 文件:

      sriov-network.yaml 文件示例

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetwork
      metadata:
        name: sriov-nic-1
        namespace: openshift-sriov-network-operator
      spec:
        linkState: auto
        networkNamespace: sriov-test
        resourceName: sriov_nic_1
        capabilities: '{ "mac": true, "ips": true }'
        ipam: '{ "type": "static" }'
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来创建 SriovNetwork 资源:

      $ oc create -f sriov-network.yaml
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,查看您创建的节点池:

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

    输出示例

    NAME     AGE
    pool-1   67s 
    1
    Copy to Clipboard Toggle word wrap

    1
    在本例中,pool-1 包含具有 worker 角色的所有节点。

要使用上述流程中的示例场景演示节点排空过程,请完成以下步骤:

  1. 更新 SriovNetworkNodePolicy 资源中的虚拟功能数量,以触发集群中的工作负载排空:

    $ oc patch SriovNetworkNodePolicy sriov-nic-1 -n openshift-sriov-network-operator --type merge -p '{"spec": {"numVfs": 4}}'
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令监控目标集群上的排空状态:

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

    输出示例

    NAMESPACE                          NAME       SYNC STATUS   DESIRED SYNC STATE   CURRENT SYNC STATE   AGE
    openshift-sriov-network-operator   worker-0   InProgress    Drain_Required       DrainComplete        3d10h
    openshift-sriov-network-operator   worker-1   InProgress    Drain_Required       DrainComplete        3d10h
    Copy to Clipboard Toggle word wrap

    当排空过程完成后,SYNC STATUS 变为 SucceededDESIRED SYNC STATECURRENT SYNC STATE 值返回到 IDLE

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat