10.4. 创建自定义 OVS-DPDK 计算服务


您必须在 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services 中为 NFV 创建自定义 OVS-DPDK 计算服务。此服务是在数据平面上执行的 Ansible 服务。此自定义服务在 OVS-DPDK Compute 节点上应用各种参数,包括 CPU 固定参数、块迁移参数和 NUMA 感知 vswitch 功能,允许实例在连接到 OVS 网桥使用的 NIC 的 NUMA 节点上生成。

要创建 OVS-DPDK 自定义服务,您必须执行以下操作:

  • 创建将配置映射到指定一组 OVS-DPDK Compute 节点的 ConfigMap
  • 创建实际 OVS-DPDK 自定义服务,它将在数据平面上实施 ConfigMap

先决条件

  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

流程

  1. 创建一个 ConfigMap CR,为参数定义配置,并将它保存到工作站上的 YAML 文件中,如 dpdk-custom.yaml

    根据您的环境更改值(以粗体粗体):

    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: dpdk-custom-nova
      namespace: openstack
    data:
      25-dpdk-custom-nova.conf: |
        [DEFAULT]
        reserved_host_memory_mb = 4096
        [compute]
        cpu_shared_set = 0-3,24-27
        cpu_dedicated_set = 8-23,32-47
        [neutron]
        physnets = <network_name1>, <network_name2>
        [neutron_physnet_<network_name1>]
        numa_nodes = <ID list>
        [neutron_physnet_<network_name2>]
        numa_nodes = <ID list>
        [neutron_tunnel]
        numa_nodes = <ID list>
        [libvirt]
        live_migration_permit_post_copy=false
    ---
    • cpu_shared_set :输入用于提供 vCPU 清单的物理主机 CPU 数的逗号分隔列表或范围,确定未固定实例可以调度到的主机 CPU,并为使用共享仿真程序线程策略配置的实例仿真程序线程应卸载的主机 CPU。
    • cpu_dedicated_set :输入以逗号分隔的物理主机 CPU 数,或者可以调度用于固定实例 CPU 的进程的范围。例如: 4-12,^8,15 保留来自 4-12 和 15 的核心,不包括 8。
    • <network_name_n_ & gt; : 将 & lt ;network_name1&gt; 和 <network_name2> 替换为网关所在的物理网络的名称,您需要为其配置 NUMA 关联性。(此网络在 neutron 网络 provider:*name 字段中设置。)
    • <id list & gt; : 将 <ID list> 替换为与此 physnet 关联的 NUMA 节点的 ID 的逗号分隔列表。例如: 0,1。例如:

      [neutron]
      physnets = foo,bar
      
      [neutron_physnet_foo]
      numa_nodes = 0
      
      [neutron_physnet_bar]
      numa_nodes = 2, 3

      此配置可确保使用带有 provider:physical_network=foo' 的一个或多个 L2-type 网络的实例必须调度到 NUMA 节点 0 的主机内核,而使用 provider:physical_network=bar' 的一个或多个网络的实例必须调度到 NUMA 节点 2 和 3 的主机内核中。对于后者的情况,需要使用 hw:numa_nodes 额外的 spec 将客户机分成两个或多个主机 NUMA 节点。

    • live_migration_permit_post_copy=false: 对附加到 DPDK 的 Geneve 网络的实例实时迁移需要。
  2. 使用 ConfigMap CR 文件创建 ConfigMap 对象:

    Example
    $ oc create -f dpdk-custom.yaml -n openstack
  3. 创建一个定义 OVS-DPDK 自定义服务的 OpenStackDataPlaneService CR,并将它保存到工作站上的 YAML 文件中,如 nova-custom-ovsdpdk.yaml

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-ovsdpdk
      namespace: openstack
  4. ConfigMap CR 添加到自定义服务中,并为运行此服务的节点集的单元指定 Secret CR:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-ovsdpdk
      namespace: openstack
    spec:
      label: dataplane-deployment-nova-custom-ovsdpdk
      edpmServiceType: nova
      dataSources:
        - configMapRef:
            name: dpdk-custom-nova
        - secretRef:
            name: nova-cell1-compute-config
        - secretRef:
            name: nova-migration-ssh-key
      tlsCerts:
        default:
          contents:
            - dnsnames
            - ips
          networks:
            - ctlplane
          issuer: osp-rootca-issuer-internal
      caCerts: combined-ca-bundle
  5. 通过引用 Ansible playbook 或将 Ansible play 包含在 playbookContents 字段中来指定用于创建自定义服务的 Ansible 命令:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
      name: nova-custom-ovsdpdk
      namespace: openstack
    spec:
      label: dataplane-deployment-nova-custom-ovsdpdk
      edpmServiceType: nova
      dataSources:
        - configMapRef:
            name: dpdk-custom-nova
        - secretRef:
            name: nova-cell1-compute-config
        - secretRef:
            name: nova-migration-ssh-key
      playbook: osp.edpm.nova
      tlsCerts:
        default:
          contents:
            - dnsnames
            - ips
          networks:
            - ctlplane
          issuer: osp-rootca-issuer-internal
      caCerts: combined-ca-bundle
  6. 创建 nova-custom-ovsdpdk 服务:

    $ oc apply -f nova-custom-ovsdpdk.yaml -n openstack
  7. 验证是否已创建自定义服务:

    $ oc get openstackdataplaneservice nova-custom-ovsdpdk -o yaml -n openstack
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部