13.2. 在 Compute 节点上配置 vGPU


要让您的云用户创建使用虚拟 GPU (vGPU)的实例,您必须配置具有物理 GPU 的 Compute 节点:

  1. 为 vGPU 指定 Compute 节点。
  2. 为 vGPU 配置 Compute 节点。
  3. 部署 overcloud。
  4. 为启动具有 vGPU 的实例创建 vGPU 类别。
提示

如果 GPU 硬件有限,您还可以配置主机聚合来优化 vGPU Compute 节点上的调度。要仅调度在 vGPU Compute 节点上请求 vGPU 的实例,请创建 vGPU Compute 节点的主机聚合,并将 Compute 调度程序配置为仅将 vGPU 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregatesFiltering by isolating host aggregates

注意

要使用 NVIDIA GRID vGPU,您必须遵守 NVIDIA GRID 许可要求,且您必须有自托管许可证服务器的 URL。如需更多信息,请参阅 NVIDIA License Server 发行注记 网页。

13.2.1. 先决条件

  • 您已从 NVIDIA 网站下载了与您的 GPU 设备对应的 NVIDIA GRID 主机驱动程序 RPM 软件包。要确定您需要哪个驱动程序,请参阅 NVIDIA Driver Downloads Portal。您必须是一个注册的 NVIDIA 客户才能从门户下载驱动程序。
  • 您已构建了一个安装了 NVIDIA GRID 主机驱动程序的自定义 overcloud 镜像。

13.2.2. 为 vGPU 设计 Compute 节点

要为 vGPU 工作负载指定 Compute 节点,您必须创建一个新角色文件来配置 vGPU 角色,并使用 GPU 资源类配置裸机节点,以标记启用了 GPU 的 Compute 节点。

注意

以下流程适用于尚未调配的新 overcloud 节点。要将资源类分配给已置备的现有 overcloud 节点,您必须使用 scale down 过程取消置备节点,然后使用扩展过程使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
  3. 生成一个名为 roles_data_gpu.yaml 的新角色数据文件,其中包含 ControllerComputeComputeGpu 角色,以及 overcloud 所需的任何其他角色:

    (undercloud)$ openstack overcloud roles \
      generate -o /home/stack/templates/roles_data_gpu.yaml \
      Compute:ComputeGpu Compute Controller
  4. 打开 roles_data_gpu.yaml 并编辑或添加以下参数和部分:

    section/Parameter当前值新值

    角色评论

    Role: Compute

    Role: ComputeGpu

    角色名称

    名称 :Compute

    name: ComputeGpu

    description

    基本 Compute 节点角色

    GPU Compute 节点角色

    HostnameFormatDefault

    -compute-

    -computegpu-

    deprecated_nic_config_name

    compute.yaml

    compute-gpu.yaml

  5. 将 overcloud 的启用了 GPU 的 Compute 节点添加到节点定义模板( node.jsonnode.yaml )中,为 overcloud 注册启用了 GPU 的 Compute 节点。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点
  6. 检查节点硬件:

    (undercloud)$ openstack overcloud node introspect --all-manageable \
     --provide

    如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单

  7. 使用自定义 GPU 资源类标记您要为 GPU 工作负载指定的每个裸机节点:

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.GPU <node>

    <node > 替换为 baremetal 节点的 ID。

  8. ComputeGpu 角色添加到节点定义文件 overcloud-baremetal-deploy.yaml 中,并定义您要分配给节点的任何预先节点放置、资源类、网络拓扑或其他属性:

    - name: Controller
      count: 3
    - name: Compute
      count: 3
    - name: ComputeGpu
      count: 1
      defaults:
        resource_class: baremetal.GPU
        network_config:
          template: /home/stack/templates/nic-config/myRoleTopology.j2 1
    1
    您可以重复使用现有的网络拓扑,或为角色创建新的自定义网络接口模板。如需更多信息,请参阅 Director 安装和使用 指南中的 自定义网络接口模板。如果您不使用 network_config 属性定义网络定义,则使用默认网络定义。

    有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例

  9. 运行置备命令为您的角色置备新节点:

    (undercloud)$ openstack overcloud node provision \
    --stack <stack> \
    [--network-config \]
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。如果您不使用 network_config 属性定义网络定义,则使用默认网络定义。
  10. 在单独的终端中监控调配进度。当置备成功后,节点状态会从 available 改为 active

    (undercloud)$ watch openstack baremetal node list
  11. 如果您没有使用 --network-config 选项运行 provisioning 命令,请在 network- environment.yaml 文件中配置 <Role>NetworkConfigTemplate 参数以指向 NIC 模板文件:

    parameter_defaults:
       ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2
       ComputeGpuNetworkConfigTemplate: /home/stack/templates/nic-configs/<gpu_net_top>.j2
       ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2

    <gpu_net_top> 替换为包含 ComputeGpu 角色的网络拓扑的文件名称,如 compute.yaml 以使用默认网络拓扑。

13.2.3. 为 vGPU 配置 Compute 节点并部署 overcloud

您需要检索并分配与环境中物理 GPU 设备对应的 vGPU 类型,并准备环境文件来为 vGPU 配置 Compute 节点。

流程

  1. 在临时 Compute 节点上安装 Red Hat Enterprise Linux 和 NVIDIA GRID 驱动程序并启动节点。
  2. 在 Compute 节点上,找到您要启用的物理 GPU 设备的 vGPU 类型。对于 libvirt,虚拟 GPU 是介质设备,或者 mdev 类型设备。要发现支持的 mdev 设备,请输入以下命令:

    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/
    nvidia-11  nvidia-12  nvidia-13  nvidia-14  nvidia-15  nvidia-16  nvidia-17  nvidia-18  nvidia-19  nvidia-20  nvidia-21  nvidia-210  nvidia-22
    
    [root@overcloud-computegpu-0 ~]# cat /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/nvidia-18/description
    num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=4096x2160, max_instance=4
  3. 创建一个 gpu.yaml 文件来指定 GPU 设备的 vGPU 类型:

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-18
    注意

    每个物理 GPU 只支持一个虚拟 GPU 类型。如果您在此属性中指定多个 vGPU 类型,则只使用第一个类型。

  4. 将更新保存到计算环境文件。
  5. 使用其他环境文件将新角色和环境文件添加到堆栈中,并部署 overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -r /home/stack/templates/roles_data_gpu.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/gpu.yaml \
      -e /home/stack/templates/overcloud-baremetal-deployed.yaml \
      -e /home/stack/templates/node-info.yaml
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.