物理 GPU 直通环境准备
虚拟机中的物理 GPU 直通是指在虚拟化环境中将实际的 Graphics Processing Unit (GPU) 直接分配给虚拟机的过程。这样虚拟机可以直接访问和使用物理 GPU,实现与直接运行在物理机上相当的图形性能,避免了虚拟图形适配器带来的性能瓶颈,从而提升整体性能。
目录
约束与限制前提条件Chart 和镜像准备启用 IOMMU操作步骤创建命名空间部署 gpu-operator配置 Kubevirt结果验证相关操作删除带直通 GPU 的虚拟机从 KubeVirt 移除 GPU 相关配置卸载 gpu-operator约束与限制
物理 GPU 直通功能需要使用 kubevirt-gpu-device-plugin;但目前尚无适用于 ARM64 的 kubevirt-gpu-device-plugin 镜像,因此该功能无法在 ARM64 CPU 架构的操作系统中使用。
前提条件
Chart 和镜像准备
获取以下 Chart 和镜像并上传至镜像仓库。本文档以 build-harbor.example.cn 作为示例仓库地址。关于获取 Chart 和镜像的具体方法,请联系相关人员。
Chart
- build-harbor.example.cn/example/chart-gpu-operator:v23 .9.1
镜像
- build-harbor.example.cn/3rdparty/nvidia/gpu-operator:v23 .9.0
- build-harbor.example.cn/3rdparty/nvidia/cloud-native/gpu-operator-validator:v23 .9.0
- build-harbor.example.cn/3rdparty/nvidia/cuda:12 .3.1-base-ubi8
- build-harbor.example.cn/3rdparty/nvidia/kubevirt-gpu-device-plugin:v1 .2.4
- build-harbor.example.cn/3rdparty/nvidia/nfd/node-feature-discovery:v0 .14.2
启用 IOMMU
不同操作系统启用 IOMMU 的操作步骤不同,请参考对应操作系统的文档。本文档以 CentOS 为例,所有命令均在终端执行。
-
编辑
/etc/default/grub文件,在GRUB_CMDLINE_LINUX配置项中添加intel_iommu=on iommu=pt。 -
执行以下命令生成
grub.cfg文件。 -
重启服务器。
-
运行以下命令确认 IOMMU 是否成功启用,若输出包含
IOMMU enabled,则表示启用成功。
操作步骤
注意:除非另有说明,以下所有命令均应在对应集群 Master 节点的 CLI 工具中执行。
创建命名空间
执行以下命令创建名为 gpu-system 的命名空间,若输出显示 namespace/gpu-system created,表示创建成功。
部署 gpu-operator
-
执行以下命令部署 gpu-operator。
-
执行以下命令检查 gpu-operator 是否同步完成,若
SYNC显示为Synced,表示同步成功。输出信息:
-
执行以下命令获取所有节点名称,找到 GPU 节点名称。
-
执行以下命令检查 GPU 节点是否有支持直通的 GPU,若输出包含类似
nvidia.com/GK210GL_TESLA_K80的 GPU 信息,表示存在支持直通的 GPU。输出信息:
-
至此,gpu-operator 已成功部署。
配置 Kubevirt
-
执行以下命令启用 DisableMDEVConfiguration 功能,若返回类似
hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched的信息,表示启用成功。 -
在 GPU 节点终端执行以下命令获取 pciDeviceSelector,输出中的
10de:102d即为 pciDeviceSelector 的值。输出信息:
-
执行以下命令获取所有节点名称,找到 GPU 节点名称。
-
执行以下命令获取 resourceName,输出中的
nvidia.com/GK210GL_TESLA_K80即为 resourceName 的值。输出信息:
-
执行以下命令添加直通 GPU。
注意:将下述命令中 <pci-devices-id> 替换为步骤 2 中获取的 pciDeviceSelector 值时,pciDeviceSelector 中的所有字母必须转换为大写。例如,若 pciDeviceSelector 值为
10de:102d,则应替换为export DEVICE=10DE:102D。-
添加单张 GPU 卡
-
添加多张 GPU 卡
注意:添加多张 GPU 卡时,用于替换 <pci-devices-id> 的每个 pciDeviceSelector 值必须唯一。
-
已添加 GPU 卡后新增 GPU 卡
-
结果验证
完成上述配置步骤后,创建虚拟机时若能选择对应的物理 GPU,表示物理 GPU 直通环境已成功准备。
注意:若需配置物理 GPU 直通,请提前启用相关功能。
-
进入 Container Platform。
-
在左侧导航栏点击 Virtualization > Virtual Machines。
-
点击 Create Virtual Machine。
-
配置虚拟机的 Physical GPU (Alpha) 参数。
-
至此,物理 GPU 直通环境已成功准备。
相关操作
删除带直通 GPU 的虚拟机
-
进入 Container Platform。
-
在左侧导航栏点击 Virtualization > Virtual Machines。
-
在列表页,点击待删除虚拟机右侧的 ⋮ > Delete,或点击待删除虚拟机名称进入详情页,点击 Actions > Delete。
-
输入确认信息,删除带直通 GPU 的虚拟机。
从 KubeVirt 移除 GPU 相关配置
-
在对应 GPU 集群 Master 节点,使用 CLI 工具执行以下命令,从 KubeVirt 移除 GPU 相关配置。
-
删除后,若通过 Container Platform 创建虚拟机时无法选择对应的物理 GPU 型号,表示删除成功。具体创建虚拟机步骤请参考 Select Physical GPU Model。
卸载 gpu-operator
-
在对应 GPU 集群 Master 节点,使用 CLI 工具执行以下命令卸载 gpu-operator。
输出信息:
-
执行命令后,若收到如下响应,表示 gpu-operator 已成功卸载。
输出信息: