GPU 节点环境适配:NVIDIA 驱动 + Container Toolkit + Device Plugin
2026-08-11 09:57:40 # Kubernetes

一、背景

在 K8s 中跑大模型,GPU 必须“容器可见”。这需要三层适配:节点驱动 → 容器运行时 → 设备插件,缺一不可。

二、环境信息

  • 节点:Ubuntu 22.04,NVIDIA GPU(如 A100/L20)
  • 驱动:NVIDIA 535.x,CUDA 12.2
  • 运行时:containerd 1.7 + nvidia-container-toolkit

三、操作要点

1. 安装 NVIDIA 驱动

1
2
sudo apt install -y nvidia-driver-535
nvidia-smi # 确认驱动就绪

2. 安装 nvidia-container-toolkit 并配置 containerd

1
2
3
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd

确认 /etc/containerd/config.tomlplugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia 指向 nvidia-container-runtime

3. 部署 NVIDIA Device Plugin

1
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.5/nvidia-device-plugin.yml

4. 验证 GPU 容器可用

1
2
3
4
# pod 片段
resources:
limits:
nvidia.com/gpu: 1
1
kubectl exec -it gpu-pod -- nvidia-smi   # 容器内可见 GPU

四、验证方式

1
2
kubectl get nodes -o json | jq '.items[].status.allocatable["nvidia.com/gpu"]'
kubectl logs -n kube-system -l app=nvidia-device-plugin-ds # 无报错

五、常见问题

  • 驱动版本与 CUDA 不匹配:容器镜像 CUDA 版本须 ≤ 节点驱动支持的最高 CUDA
  • runtimeClass 未配置:确认 containerd 已配置 nvidia runtime 并重启
  • device plugin 注册失败:检查 DaemonSet 是否 Running、节点是否有 GPU
  • 容器内 nvidia-smi 报找不到 libcuda:驱动未正确安装或 toolkit 未配置
  • MIG 设备:A100 需先 nvidia-smi -mig 1 切分并部署对应 device plugin 配置