Windows11 WSL2下Docker Desktop的Kubernetes启用NVIDIA GPU支持问询
问题解答
1. 需求是否可行?
完全可行。Docker Desktop搭配WSL2后端的Kubernetes集群可以支持GPU调度,核心是通过配置NVIDIA设备插件让Kubernetes识别并分配GPU资源。
2. 实现步骤
步骤1:确保WSL2内的NVIDIA环境正常
进入你的WSL2发行版(如Ubuntu),先验证GPU驱动:
nvidia-smi
若能正常显示GPU信息,继续安装nvidia-container-toolkit:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
配置Docker daemon以支持NVIDIA runtime:
编辑/etc/docker/daemon.json,添加以下内容:
{ "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
重启Docker服务:
sudo systemctl restart docker
测试WSL2内Docker的GPU调用是否正常:
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
步骤2:部署NVIDIA Kubernetes设备插件
创建nvidia-device-plugin.yaml文件,内容如下:
apiVersion: apps/v1 kind: DaemonSet metadata: name: nvidia-device-plugin-daemonset namespace: kube-system spec: selector: matchLabels: name: nvidia-device-plugin-ds updateStrategy: type: RollingUpdate template: metadata: labels: name: nvidia-device-plugin-ds spec: tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule containers: - image: nvidia/k8s-device-plugin:v0.14.0 name: nvidia-device-plugin-ctr securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-plugins
执行部署命令:
kubectl apply -f nvidia-device-plugin.yaml
等待Pod运行,验证状态:
kubectl get pods -n kube-system
确保nvidia-device-plugin-daemonset-xxx的状态为Running。
步骤3:验证Kubernetes容器GPU调用
创建gpu-test.yaml测试Pod:
apiVersion: v1 kind: Pod metadata: name: gpu-test spec: restartPolicy: OnFailure containers: - name: gpu-container image: nvidia/cuda:11.8.0-base-ubuntu22.04 command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1
部署测试Pod:
kubectl apply -f gpu-test.yaml
查看日志验证GPU是否可用:
kubectl logs gpu-test
若输出GPU硬件信息,说明配置成功。
关键注意事项
- 确保Docker Desktop已启用WSL2后端,并开启Kubernetes功能(Docker设置→Kubernetes→勾选Enable Kubernetes)。
- 在Docker设置→Resources→WSL Integration中,勾选你的WSL2发行版,确保Docker与WSL2关联。
- Windows上需安装支持WSL2的最新NVIDIA驱动,WSL2内无需单独安装驱动,会自动映射Windows端的驱动。
内容的提问来源于stack exchange,提问作者Ouss
相关产品推荐
相关产品推荐

