7.5. 声明自定义特征和资源类


作为管理员,您可以通过在 YAML 文件中定义自定义资源清单 provider.yaml 来声明在 data plane 节点上提供哪些自定义物理功能和可消耗资源。

您可以通过定义自定义特征来声明物理主机功能的可用性,如 CUSTOM_DIESEL_BACKUP_POWERCUSTOM_FIPS_COMPLIANTCUSTOM_HPC_OPTIMIZED。您还可以通过定义资源类(如 CUSTOM_DISK_IOPS )和 CUSTOM_POWER_WATTS 来声明可消耗资源的可用性。

注意

您可以使用类别元数据来请求自定义资源和自定义特征。如需更多信息,请参阅 实例裸机资源类实例资源特征

先决条件

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

流程

  1. /home/stack/templates/ 中创建一个名为 provider.yaml 的文件。
  2. 要配置资源供应商,请在 provider.yaml 文件中添加以下配置:

    meta:
      schema_version: '1.0'
    providers:
      - identification:
          uuid: <node_uuid>
    • <node_uuid > 替换为节点的 UUID,例如 '5213b75d-9260-42a6-b236-f39b0fd10561'。或者,您可以使用 name 属性来识别资源提供程序: name: 'EXAMPLE_RESOURCE_PROVIDER'
  3. 要为资源供应商配置可用的自定义资源类,请在 provider.yaml 文件中添加以下配置:

    meta:
      schema_version: '1.0'
    providers:
      - identification:
          uuid: <node_uuid>
        inventories:
          additional:
            - CUSTOM_EXAMPLE_RESOURCE_CLASS:
                total: <total_available>
                reserved: <reserved>
                min_unit: <min_unit>
                max_unit: <max_unit>
                step_size: <step_size>
                allocation_ratio: <allocation_ratio>
    • CUSTOM_EXAMPLE_RESOURCE_CLASS 替换为资源类的名称。自定义资源类必须以前缀 CUSTOM_ 开头,并且仅包含字母 A 到 Z、数字 0 到 9,以及下划线 "_" 字符。
    • <total_available > 替换为此资源提供商可用的 CUSTOM_EXAMPLE_RESOURCE_CLASS 的数量。
    • <reserved > 替换为此资源供应商的可用 CUSTOM_EXAMPLE_RESOURCE_CLASS 的数量。
    • <min_unit > 替换为单个实例可消耗的最少资源单元。
    • <max_unit > 替换为单个实例可以消耗的资源的最大单元。
    • <step_size > 替换为此资源提供商可用的 CUSTOM_EXAMPLE_RESOURCE_CLASS 的数量。
    • <allocation_ratio > 替换为设置分配比率的值。如果 allocation_ratio 设为 1.0,则不允许过度分配。但是,如果 allocation_ration 大于 1.0,则可用资源总数超过了物理资源。
  4. 要为资源供应商配置可用的特征,请在 provider.yaml 文件中添加以下配置:

    meta:
      schema_version: '1.0'
    providers:
      - identification:
          uuid: <node_uuid>
        inventories:
          additional:
          ...
          traits:
          additional:
            - 'CUSTOM_EXAMPLE_TRAIT'
    • CUSTOM_EXAMPLE_TRAIT 替换为特征的名称。自定义特征必须以前缀 CUSTOM_ 开头,并且仅包含字母 A 到 Z、数字 0 到 9,以及下划线 "_" 字符。

      provider.yaml 文件示例 声明了一个自定义资源类,并为资源供应商声明一个自定义特征。

      meta:
        schema_version: 1.0
      providers:
        - identification:
            uuid: $COMPUTE_NODE
          inventories:
            additional:
              CUSTOM_LLC:
                # Describing LLC on this compute node
                # max_unit indicates maximum size of single LLC
                # total indicates sum of sizes of all LLC
                total: 22 
      1
      
                reserved: 2 
      2
      
                min_unit: 1 
      3
      
                max_unit: 11 
      4
      
                step_size: 1 
      5
      
                allocation_ratio: 1.0 
      6
      
          traits:
              additional:
                  # Describing that this compute node enables support for
                  # P-state control
                  - CUSTOM_P_STATE_ENABLED
      1
      此虚拟机监控程序有 22 个最后一个级别缓存(LLC)的单元。
      2
      为主机保留了两个 LLC 单元。
      3 4
      min_unit 和 max_unit 值定义单个虚拟机可以消耗的资源单元。
      5
      步骤大小定义了消耗的递增。
      6
      分配比率配置资源的过度分配。
  5. 保存并关闭 provider.yaml 文件。
  6. 创建一个 ConfigMap CR,将 Compute 节点配置为使用 provider.yaml 文件来声明自定义特征和资源,并将它保存到工作站上名为 compute-provider.yaml 的文件中:

    apiVersion: v1
    kind: ConfigMap
    metadata:
       name: compute-provider
       namespace: openstack
    data:
       provider.yaml: |

    有关创建 ConfigMap 对象的更多信息,请参阅创建和使用配置映射。

  7. 创建 ConfigMap 对象:

    $ oc create -f compute-provider.yaml
  8. 创建一个新的自定义服务 compute-provider,其中包含 compute-provider ConfigMap 对象,并将它保存到工作站上名为 compute-provider-service.yaml 的文件中:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneService
    metadata:
       name: compute-provider
       namespace: openstack
    spec:
      label: dataplane-deployment-compute
      playbook: osp.edpm.nova
      secrets: []
      dataSources:
         - secretRef:
               name: nova-cell1-compute-config
         - secretRef:
               name: nova-migration-ssh-key
         - configMapRef:
               name: compute-provider
         - configMapRef:
               name: nova-extra-config
               optional: true
  9. 创建 compute-provider 服务:

    $ oc apply -f compute-provider-service.yaml
  10. 创建一个新的 OpenStackDataPlaneNodeSet CR,用于定义您要使用 provider.yaml 文件用于自定义特征和资源声明的节点,并将它保存到工作站上名为 compute-provider.yaml 的文件中:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: compute-provider

    有关如何创建 OpenStackDataPlaneNodeSet CR 的详情,请参考创建一组 data plane 节点。

  11. 修改 compute-provider OpenStackDataPlaneNodeSet CR,以使用 compute-provider-service 服务而不是默认的 Compute 服务:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: compute-provider
    spec:
      services:
        - download-cache
        - configure-network
        - validate-network
        - install-os
        - configure-os
        - run-os
        - ovn
        - libvirt
        - compute-provider-service #replaced the nova service
        - telemetry
  12. 保存 compute-provider.yaml OpenStackDataPlaneNodeSet CR 定义文件。
  13. 创建 data plane 资源:

    $ oc create -f compute-provider.yaml
  14. 验证 data plane 资源是否已创建:

    $ oc get openstackdataplanenodeset
    NAME              STATUS MESSAGE
    compute-provider False  Deployment not started
  15. 验证是否已创建服务:

    $ oc get openstackdataplaneservice
    NAME                AGE
    download-cache      6d7h
    configure-network   6d7h
    configure-os        6d6h
    install-os          6d6h
    run-os              6d6h
    validate-network    6d6h
    ovn                 6d6h
    libvirt             6d6h
    compute-provider    6d6h
    telemetry           6d6h
  16. 创建新的 OpenStackDataPlaneDeployment CR,以在 data plane 节点上配置服务并部署节点,并将它保存到工作站上名为 compute-provider_deploy.yaml 的文件中:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneDeployment
    metadata:
      name: compute-provider

    有关如何创建 OpenStackDataPlaneDeployment CR 的详情,请参考部署数据平面。

  17. 指定 nodeSets 以包括您要部署的所有 OpenStackDataPlaneNodeSet CR:

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneDeployment
    metadata:
      name: compute-provider
    spec:
      nodeSets:
        - openstack-edpm
        - compute-provider
        - ...
        - <nodeSet_name>
    • <nodeSet_name > 替换为您要包含在 data plane 部署中的 OpenStackDataPlaneNodeSet CR 的名称。
  18. 保存 compute-provider_deploy.yaml 部署文件。
  19. 部署数据平面:

    $ oc create -f compute-provider_deploy.yaml
  20. 验证 data plane 是否已部署:

    $ oc get openstackdataplanedeployment
    NAME             			STATUS   MESSAGE
    compute-provider  	True     Deployment Completed
    
    $ oc get openstackdataplanenodeset
    NAME             	STATUS   MESSAGE
    openstack-edpm   	True     Deployed
    compute-provider 	True     Deployed
  21. 确保 control plane 上可以看到部署的 Compute 节点:

    $ oc rsh nova-cell0-conductor-0 nova-manage cell_v2 discover_hosts --verbose
  22. 访问 openstackclient 的远程 shell,并验证部署的 Compute 节点是否在 control plane 上可见:

    $ oc rsh -n openstack openstackclient
    $ openstack hypervisor list
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部