GPU 节点环境适配:NVIDIA 驱动 + Container Toolkit + Device Plugin
一、背景
在 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
|
1 2 3
| sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=containerd sudo systemctl restart containerd
|
确认 /etc/containerd/config.toml 中 plugins."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
| resources: limits: nvidia.com/gpu: 1
|
1
| kubectl exec -it gpu-pod -- nvidia-smi
|
四、验证方式
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 配置