如今,许多组织在容器中运行应用程序,以利用基于 Kubernetes 的云原生平台提供的强大编排和管理。然而,虚拟机仍然是企业的主要数据中心基础设施平台,并不是所有应用程序都可以轻松修改为在容器中运行。例如,需要较旧操作系统、自定义内核模块或专用硬件的应用程序需要更多的精力来进行容器化。
KubeVirt 和 OpenShift 虚拟化是 Kubernetes 的附加组件,提供虚拟机( VM )管理。这些解决方案消除了为 VM 和容器工作负载管理单独集群的需要。 KubeVirt 是一个社区支持的开源项目,它也是 Red Hat 的 OpenShift 虚拟化功能的上游项目。
多年来, NVIDIA GPU 一直在加速虚拟化的应用程序, NVIDI 还创建了技术,支持 Kubernetes 管理的容器的 GPU 加速。 NVIDIA GPU Operator 的最新版本增加了对 KubeVirt 和 OpenShift 虚拟化的支持。现在,作为虚拟机运行的 GPU 加速应用程序也可以由 Kubernetes 协调,就像普通企业应用程序一样,实现统一管理。
KubeVirt 中的 GPU 和 OpenShift 虚拟化
NVIDIA GPU Operator v22.9 使 GPU 加速容器和 GPU 加速虚拟机能够使用 NVIDIA -virtual GPU ( vGPU )或 PCI passthrough 在同一集群中并排运行。此版本引入了支持虚拟机的新软件组件。
此外,操作员还负责提供自动化来管理该软件的部署、配置和生命周期,从而减轻集群管理员的操作开销。下面提供了有关这些组件的更多详细信息。
这个vfio-pci
驱动器(虚拟功能 I / O )提供了一个安全的用户空间驱动程序,当使用物理 GPU 进行 PCI 直通时需要该驱动程序。 PCI 通过将整个 GPU 作为 PCI 设备呈现给虚拟机。使用 PCI 直通时, GPU 不能共享,但提供最高性能。
NVIDIA vGPU Manager 是安装在虚拟机监控程序上的驱动程序,支持 NVIDIA Virtual GPU 技术。 NVIDIA v GPU 使多个虚拟机能够同时对单个物理 GPU 进行基于时间的共享访问。
NVIDIA vGPU Device Manager 负责与 v GPU 管理器交互,并在工作节点上创建 v GPU 设备。
NVIDIA KubeVirt 设备插件 发现物理设备和 NVIDIA v GPU 设备并向 kubelet 发布广告,以便它们可以被请求并分配给 VM 。 Kubelet 是运行在集群中每个节点上的代理,负责节点和 Kubernetes 控制平面之间的通信。
部署计划
在部署之前,务必了解一些限制。目前,不支持 MIG 支持的 v GPU 实例。此外,给定的 GPU 工作节点只能运行单一类型容器、具有 PCI 直通的虚拟机或具有 NVIDIA vGPU 的虚拟机的 GPU 工作负载,但不能同时运行。
要启用此新功能,请在 ClusterPolicy 中将sandboxWorkloads.enabled
设置为true
。启用后, GPU 操作员将管理和部署支持虚拟机所需的新软件组件。默认情况下,此选项处于禁用状态,这意味着 GPU 操作员将仅为容器工作负载提供工作节点。
管理员能够通过使用 Kubernetes 节点标签来控制工作负载的部署位置。 GPU Operator v22.9 引入了一个新的节点标签,nvidia.com/gpu.workload.config
,它指示 GPU 操作员部署哪些软件组件,并因此控制节点支持的 GPU 工作负载类型。该节点标签可以采用值container
、 vm-passthrough
和vm-vgpu
,这些值对应于现在支持的不同工作负载。
这个概念允许管理员拥有机器类型池,每种类型具有不同的功能,并由一个公共控制平面管理。如果nvidia.com/gpu.workload.config
节点标签不在 GPU 工作节点上, GPU 操作员将使用默认工作负载类型,该类型可通过sandboxWorkloads.defaultWorkload
字段在 ClusterPolicy 中配置。
结论
GPU Operator v22.9 带来了在 Kubernetes 上使用 KubeVirt 和 OpenShift 虚拟化运行 GPU 支持的工作负载所需的额外功能。 Kubernetes 中的虚拟机可以使用 PCI 直通或 NVIDIA vGPU 连接 GPU 设备。这种灵活性消除了重构 GPU 加速应用程序以支持容器化的需要,从而加快了云原生平台的采用。管理员可以继续在 VM 中运行这些应用程序以及其他容器本地应用程序,由 Kubernetes 执行编排。
开始使用
要开始使用 GPU 加速虚拟机,请参阅 Running KubeVirt VMs with the GPU Operator 上的官方文档。通过 gpu-operator/issues GitHub 存储库提交反馈和错误报告。还鼓励对 kubernetes/gpu-operator GitLab 存储库的贡献。
其他资源
- KubeVirt
- Virtualization with Red Hat OpenShift
- Release Notes – NVIDIA Cloud Native Technologies Documentation