NVIDIA/k8s-device-plugin
NVIDIA device plugin for Kubernetes
解决的问题
该项目为 Kubernetes 集群提供了一种识别和利用 NVIDIA GPU 的方式。默认情况下,Kubernetes 并不了解如何将 GPU 作为一等资源进行管理;此插件使集群能够自动检测每个节点上的 GPU 数量,监控其健康状况,并将 GPU 分配给请求它们的容器。
工作原理
它以 DaemonSet 的形式运行,意味着在集群中的每个节点上都会运行。它实现了 Kubernetes 设备插件框架,以暴露 nvidia.com/gpu 资源类型。当 Pod 请求 GPU 时,该插件会与 NVIDIA Container Toolkit 协作,确保硬件正确注入到容器中。
它支持多种高级分配策略:
- MIG(多实例 GPU):允许将单个 GPU 分割为多个较小的实例。
- 时间切片:允许多个工作负载通过创建资源的虚拟副本,交错使用单个 GPU。
- MPS(多进程服务):提供空间分区,以显式限制每个工作负载的内存和计算资源。
适用人群
在使用 NVIDIA 硬件的 Kubernetes 上部署 AI、机器学习或高性能计算(HPC)工作负载的集群管理员和 DevOps 工程师。
主要亮点
- 自动资源暴露:自动向 Kubernetes API 报告 GPU 数量。
- 灵活共享:支持 CUDA 时间切片和 MPS,实现 GPU 的超分配。
- MIG 支持:支持多实例 GPU,提升硬件利用率。
- 可自定义分配:提供多种设备 ID(UUID 与索引)和设备列表(环境变量、卷挂载或 CDI 注解)的传递策略。
- GPU 特性发现:包含基于 GPU 特性的自动节点标签功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目