在Kubernetes環(huán)境下使用Docker實現(xiàn)GPU支持的完整方案
一、背景說明
Kubernetes 從 v1.20+ 開始逐步默認使用 containerd 作為運行時,不再推薦直接使用 Docker。然而,在一些已有的生產(chǎn)環(huán)境中,Docker 仍然是默認運行時。如果你希望在這樣的環(huán)境下運行支持 GPU 的 AI/計算類工作負載,就需要正確配置 Docker 和 NVIDIA 的相關(guān)支持組件。
二、目標
保留 Docker 作為容器運行時
支持容器使用 NVIDIA GPU
允許 Kubernetes 調(diào)度 GPU 資源
能夠通過 YAML 定義 GPU Pod 并正常運行
三、環(huán)境準備
Ubuntu 20.04+/CentOS 7.9+
安裝了 NVIDIA 驅(qū)動(
nvidia-smi正常)Kubernetes 已安裝(使用 Docker 作為運行時)
能訪問外網(wǎng)或使用國內(nèi)代理
四、安裝 NVIDIA Container Toolkit(nvidia-docker2)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-docker2
五、配置 Docker 支持 NVIDIA Runtime
編輯 Docker 配置文件:
sudo nano /etc/docker/daemon.json
添加以下內(nèi)容:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}重啟 Docker:
sudo systemctl restart docker
六、測試 Docker 能否使用 GPU
運行命令:
sudo docker run --rm --gpus all nvidia/12.8.1-cudnn-devel-ubuntu22.04 nvidia-smi
輸出顯卡信息即表示配置成功。
七、部署 Kubernetes GPU 支持插件
NVIDIA 官方提供了 Kubernetes GPU 插件作為 DaemonSet 運行:
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
八、部署一個 GPU Pod 測試
創(chuàng)建 YAML 文件 gpu-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: gpu-test
spec:
containers:
- name: cuda
image: nvidia/cuda:12.8.1-base
resources:
limits:
nvidia.com/gpu: 1
command: ["nvidia-smi"]部署:
kubectl apply -f gpu-pod.yaml kubectl logs gpu-test
成功輸出 GPU 信息,即可證明 Kubernetes GPU 配置生效。
九、常見問題排查
| 問題 | 原因及解決方案 |
|---|---|
--gpus all 報錯 | 沒有配置 nvidia 為 Docker 的默認運行時 |
Pod 提交后一直 Pending | 沒有可用 GPU 節(jié)點;未部署 device plugin |
| 鏡像拉取超時 | 網(wǎng)絡(luò)問題或 Docker Hub 被墻,可配置國內(nèi)鏡像加速器 |
| 使用 containerd 的情況如何配置 GPU? | 需改用 NVIDIA Container Toolkit + containerd + hosts.toml 配置 |
十、小結(jié)
雖然 Kubernetes 官方推薦使用 containerd,但在已有 Docker 環(huán)境中,仍可以通過 nvidia-docker2 和 device plugin 組合,快速支持 GPU 任務(wù)調(diào)度與運行。只要配置得當,不更換運行時也能實現(xiàn) GPU 加速能力。

以上就是在Kubernetes環(huán)境下使用Docker實現(xiàn)GPU支持的完整方案的詳細內(nèi)容,更多關(guān)于Kubernetes Docker實現(xiàn)GPU支持的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用 docker部署tomcat并接入skywalking的使用
這里主要介紹了使用 docker 部署 tomact 并接入 skywalking 的使用,因為在網(wǎng)上并沒有查到太多相關(guān)的信息,所以這里記錄下來,需要對有需求的小伙伴提供一些幫助2021-04-04
Docker基于macvlan實現(xiàn)跨主機容器通信
這篇文章主要介紹了Docker基于macvlan實現(xiàn)跨主機容器通信,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
使用Docker將容器目錄掛載到主機上的實現(xiàn)方法
本文主要介紹了使用Docker將容器目錄掛載到主機上的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
docker部署springBoot項目實操(docker是什么)
Docker可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化,這篇文章主要介紹了docker部署springBoot項目實操,需要的朋友可以參考下2025-03-03
Docker 實現(xiàn)瀏覽器里開發(fā)Android應(yīng)用的功能
這篇文章主要介紹了Docker 實現(xiàn)瀏覽器里開發(fā)Android應(yīng)用的功能的相關(guān)資料,這里對布置環(huán)境做了詳細的步驟,也許你能用到這樣的功能,需要的朋友可以參考下2016-11-11
如何使用Docker部署FTP和Nginx并通過HTTP訪問FTP里的文件
本文介紹了如何使用Docker部署FTP服務(wù)器和Nginx,并通過HTTP訪問FTP中的文件,通過將FTP數(shù)據(jù)目錄掛載到Nginx容器內(nèi),Nginx可以提供文件列表和下載功能,推薦使用Docker Compose來管理容器2025-03-03

