当前位置: 首页 > web >正文

在 Kubernetes 中使用 Docker 实现 GPU 支持的完整方案

目录

在 Kubernetes 中使用 Docker 实现 GPU 支持的完整方案

一、背景说明

二、目标

三、环境准备

四、安装 NVIDIA Container Toolkit(nvidia-docker2)

五、配置 Docker 支持 NVIDIA Runtime

六、测试 Docker 能否使用 GPU

七、部署 Kubernetes GPU 支持插件

八、部署一个 GPU Pod 测试

九、常见问题排查

十、小结


在 Kubernetes 中使用 Docker 实现 GPU 支持的完整方案

本文将介绍如何在 Kubernetes 环境下,使用 Docker 容器运行时实现 NVIDIA GPU 加速支持。包括环境准备、安装 nvidia-docker2、K8s device plugin 配置等内容。


一、背景说明

Kubernetes 从 v1.20+ 开始逐步默认使用 containerd 作为运行时,不再推荐直接使用 Docker。然而,在一些已有的生产环境中,Docker 仍然是默认运行时。如果你希望在这样的环境下运行支持 GPU 的 AI/计算类工作负载,就需要正确配置 Docker 和 NVIDIA 的相关支持组件。


二、目标

  • 保留 Docker 作为容器运行时

  • 支持容器使用 NVIDIA GPU

  • 允许 Kubernetes 调度 GPU 资源

  • 能够通过 YAML 定义 GPU Pod 并正常运行


三、环境准备

  1. Ubuntu 20.04+/CentOS 7.9+

  2. 安装了 NVIDIA 驱动(nvidia-smi 正常)

  3. Kubernetes 已安装(使用 Docker 作为运行时)

  4. 能访问外网或使用国内代理


四、安装 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

添加以下内容:

{"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 测试

创建 YAML 文件 gpu-pod.yaml

apiVersion: v1
kind: Pod
metadata:name: gpu-test
spec:containers:- name: cudaimage: nvidia/cuda:12.8.1-baseresources:limits:nvidia.com/gpu: 1command: ["nvidia-smi"]

部署:

kubectl apply -f gpu-pod.yaml
kubectl logs gpu-test

成功输出 GPU 信息,即可证明 Kubernetes GPU 配置生效。


九、常见问题排查

问题原因及解决方案
--gpus all 报错没有配置 nvidia 为 Docker 的默认运行时
Pod 提交后一直 Pending没有可用 GPU 节点;未部署 device plugin
镜像拉取超时网络问题或 Docker Hub 被墙,可配置国内镜像加速器
使用 containerd 的情况如何配置 GPU?需改用 NVIDIA Container Toolkit + containerd + hosts.toml 配置

十、小结

虽然 Kubernetes 官方推荐使用 containerd,但在已有 Docker 环境中,仍可以通过 nvidia-docker2device plugin 组合,快速支持 GPU 任务调度与运行。只要配置得当,不更换运行时也能实现 GPU 加速能力。

http://www.xdnf.cn/news/5214.html

相关文章:

  • Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程
  • 添加物体.
  • 2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证
  • 用jsp简单实现C语言标准化测试系统
  • (2025)图文解锁RAG从原理到实操
  • DeepSeek:开启物流行业创新变革新时代
  • 高效Python开发:uv包管理器全面解析
  • LeetCode热题100 两数之和
  • SAN 对抗网络搜索,搜索—智能编程—仙盟创梦IDE
  • 手机银行怎么打印流水账单(已解决)
  • vue访问后端接口,实现用户注册
  • MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
  • 居然智家亮相全零售AI火花大会 AI大模型赋能家居新零售的进阶之路
  • springCloud/Alibaba常用中间件之Nacos服务注册与发现
  • 第7次课 栈A
  • 腾讯云低代码实战:零基础搭建家政维修平台
  • [特殊字符]Meilisearch:AI驱动的现代搜索引擎
  • 《全球短剧正版授权通道,助力平台出海与流量变现》
  • 互联网大厂Java面试实录:从基础到微服务的深度考察
  • 51单片机入门教程——AT24C02数据存储
  • QT Creator配置Kit
  • word换行符和段落标记
  • 【具身智能算法入门】VLM/VLA 算法入门指南
  • 基于FPGA的PID控制器verilog实现,包含simulink对比模型
  • Linux系统下安装mongodb
  • 【Python】装饰器在装什么
  • [ctfshow web入门] web70
  • 《深入理解Linux网络》笔记
  • MySQL的Order by与Group by优化详解!
  • [docker基础四]容器虚拟化基础之 LXC