8.2. 启用 OVS 硬件卸载


对于在 Red Hat OpenStack Platform(RHOSP)上运行的集群,您可以启用 Open vSwitch(OVS) 硬件卸载。

OVS 是一种多层虚拟交换机,能够启用大规模多服务器网络虚拟化。

先决条件

  • 您在为单根输入/输出虚拟化(SR-IOV)配置的 RHOSP 上安装集群。
  • 在集群中安装了 SR-IOV Network Operator。
  • 您在集群中创建了两个 hw-offload 类型虚拟功能(VF)接口。
注意

应用程序层网关流在 OpenShift Container Platform 版本 4.10、4.11 和 4.12 中无法正常工作。另外,您无法卸载 OpenShift Container Platform 版本 4.13 的应用程序层网关流。

流程

  1. 为集群中的两个 hw-offload 类型 VF 接口创建一个 SriovNetworkNodePolicy 策略:

    第一个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 1
    metadata:
      name: "hwoffload9"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 2
        - ens6
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload9"

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。

    第二个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 1
    metadata:
      name: "hwoffload10"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 2
        - ens5
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload10"

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。
  2. 为两个接口创建 NetworkAttachmentDefinition 资源:

    第一接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9
      name: hwoffload9
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload9","type":"host-device","device":"ens6"
        }'

    第二个接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
      name: hwoffload10
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload10","type":"host-device","device":"ens5"
        }'

  3. 使用通过 pod 创建的接口。例如:

    使用两个 OVS 卸载接口的 Pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: dpdk-testpmd
      namespace: default
      annotations:
        irq-load-balancing.crio.io: disable
        cpu-quota.crio.io: disable
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
    spec:
      restartPolicy: Never
      containers:
      - name: dpdk-testpmd
        image: quay.io/krister/centos8_nfv-container-dpdk-testpmd:latest

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.