13.2. 在 Compute 节点上配置 vGPU
要让您的云用户创建使用虚拟 GPU (vGPU)的实例,您必须配置具有物理 GPU 的 Compute 节点:
- 为 vGPU 指定 Compute 节点。
- 为 vGPU 配置 Compute 节点。
- 部署 overcloud。
- 为启动具有 vGPU 的实例创建 vGPU 类别。
如果 GPU 硬件有限,您还可以配置主机聚合来优化 vGPU Compute 节点上的调度。要仅调度在 vGPU Compute 节点上请求 vGPU 的实例,请创建 vGPU Compute 节点的主机聚合,并将 Compute 调度程序配置为仅将 vGPU 实例放在主机聚合中。如需更多信息,请参阅 Creating and managing host aggregates 和 Filtering 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 节点。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
生成一个名为
roles_data_gpu.yaml
的新角色数据文件,其中包含Controller
、Compute
和ComputeGpu
角色,以及 overcloud 所需的任何其他角色:(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_gpu.yaml \ Compute:ComputeGpu Compute Controller
打开
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
-
将 overcloud 的启用了 GPU 的 Compute 节点添加到节点定义模板(
node.json
或node.yaml
)中,为 overcloud 注册启用了 GPU 的 Compute 节点。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect --all-manageable \ --provide
如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单。
使用自定义 GPU 资源类标记您要为 GPU 工作负载指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.GPU <node>
将
<node
> 替换为 baremetal 节点的 ID。将
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
有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例。
运行置备命令为您的角色置备新节点:
(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
属性定义网络定义,则使用默认网络定义。
-
将
在单独的终端中监控调配进度。当置备成功后,节点状态会从
available
改为active
:(undercloud)$ watch openstack baremetal node list
如果您没有使用
--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 节点。
流程
- 在临时 Compute 节点上安装 Red Hat Enterprise Linux 和 NVIDIA GRID 驱动程序并启动节点。
在 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
创建一个
gpu.yaml
文件来指定 GPU 设备的 vGPU 类型:parameter_defaults: ComputeGpuExtraConfig: nova::compute::vgpu::enabled_vgpu_types: - nvidia-18
注意每个物理 GPU 只支持一个虚拟 GPU 类型。如果您在此属性中指定多个 vGPU 类型,则只使用第一个类型。
- 将更新保存到计算环境文件。
使用其他环境文件将新角色和环境文件添加到堆栈中,并部署 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