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 特性的自动节点标签功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目