在Kubernetes環(huán)境下使用Docker實(shí)現(xiàn)GPU支持的完整方案
一、背景說(shuō)明
Kubernetes 從 v1.20+ 開(kāi)始逐步默認(rèn)使用 containerd 作為運(yùn)行時(shí),不再推薦直接使用 Docker。然而,在一些已有的生產(chǎn)環(huán)境中,Docker 仍然是默認(rèn)運(yùn)行時(shí)。如果你希望在這樣的環(huán)境下運(yùn)行支持 GPU 的 AI/計(jì)算類(lèi)工作負(fù)載,就需要正確配置 Docker 和 NVIDIA 的相關(guān)支持組件。
二、目標(biāo)
保留 Docker 作為容器運(yùn)行時(shí)
支持容器使用 NVIDIA GPU
允許 Kubernetes 調(diào)度 GPU 資源
能夠通過(guò) YAML 定義 GPU Pod 并正常運(yùn)行
三、環(huán)境準(zhǔn)備
Ubuntu 20.04+/CentOS 7.9+
安裝了 NVIDIA 驅(qū)動(dòng)(
nvidia-smi正常)Kubernetes 已安裝(使用 Docker 作為運(yùn)行時(shí))
能訪問(wèn)外網(wǎng)或使用國(guó)內(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
六、測(cè)試 Docker 能否使用 GPU
運(yùn)行命令:
sudo docker run --rm --gpus all nvidia/12.8.1-cudnn-devel-ubuntu22.04 nvidia-smi
輸出顯卡信息即表示配置成功。
七、部署 Kubernetes GPU 支持插件
NVIDIA 官方提供了 Kubernetes GPU 插件作為 DaemonSet 運(yùn)行:
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
八、部署一個(gè) GPU Pod 測(cè)試
創(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 配置生效。
九、常見(jiàn)問(wèn)題排查
| 問(wèn)題 | 原因及解決方案 |
|---|---|
--gpus all 報(bào)錯(cuò) | 沒(méi)有配置 nvidia 為 Docker 的默認(rèn)運(yùn)行時(shí) |
Pod 提交后一直 Pending | 沒(méi)有可用 GPU 節(jié)點(diǎn);未部署 device plugin |
| 鏡像拉取超時(shí) | 網(wǎng)絡(luò)問(wèn)題或 Docker Hub 被墻,可配置國(guó)內(nèi)鏡像加速器 |
| 使用 containerd 的情況如何配置 GPU? | 需改用 NVIDIA Container Toolkit + containerd + hosts.toml 配置 |
十、小結(jié)
雖然 Kubernetes 官方推薦使用 containerd,但在已有 Docker 環(huán)境中,仍可以通過(guò) nvidia-docker2 和 device plugin 組合,快速支持 GPU 任務(wù)調(diào)度與運(yùn)行。只要配置得當(dāng),不更換運(yùn)行時(shí)也能實(shí)現(xiàn) GPU 加速能力。

以上就是在Kubernetes環(huán)境下使用Docker實(shí)現(xiàn)GPU支持的完整方案的詳細(xì)內(nèi)容,更多關(guān)于Kubernetes Docker實(shí)現(xiàn)GPU支持的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談docker-compose網(wǎng)絡(luò)設(shè)置之networks
這篇文章主要介紹了淺談docker-compose網(wǎng)絡(luò)設(shè)置之networks,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Docker實(shí)現(xiàn)將鏡像從1.2GB壓縮到200MB的優(yōu)化指南
作為一名在容器化領(lǐng)域摸爬滾打多年的開(kāi)發(fā)者,深知Docker鏡像大小對(duì)生產(chǎn)環(huán)境的影響,本文將詳細(xì)記錄優(yōu)化歷程,從問(wèn)題分析到解決方案實(shí)施,從理論原理到實(shí)戰(zhàn)技巧,感興趣的小伙伴可以了解下2025-09-09
構(gòu)建Docker鏡像時(shí),遇到從deb.debian.org下載軟件包速度很慢的解決
這篇文章主要介紹了構(gòu)建Docker鏡像時(shí),遇到從deb.debian.org下載軟件包速度很慢的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
Docker容器訪問(wèn)掛載文件權(quán)限問(wèn)題小結(jié)
在使用docker-compose部署項(xiàng)目時(shí),因?yàn)镾ELinux策略導(dǎo)致容器無(wú)法訪問(wèn)宿主機(jī)上掛載的文件,解決方案包括禁用SELinux、修改文件類(lèi)型為svirt_sandbox_file_t或使用:Z選項(xiàng)掛載文件,本文介紹Docker容器訪問(wèn)掛載文件權(quán)限問(wèn)題,感興趣的朋友一起看看吧2025-02-02
Win10系統(tǒng)使用docker部署ragflow的實(shí)現(xiàn)
本文主要介紹了Win10系統(tǒng)使用docker部署ragflow的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
使用 Docker 企業(yè)版搭建自己的私有注冊(cè)服務(wù)器
這篇文章主要介紹了使用 Docker 企業(yè)版搭建自己的私有注冊(cè)服務(wù)器的相關(guān)資料,需要的朋友可以參考下2018-11-11

