Containerd 配置使用 Nvidia container runtime

前言

Kubernetes 集群中 Docker 如何使用 GPU,请看这一篇

docker配置Nvidia环境,使用GPU

本文着重讲 Containerd 如何作为容器运行时来使用 GPU

CRI Plugin Config Guide CRI 插件配置指南 https://github.com/containerd/containerd/blob/main/docs/cri/config.md

nvidia-container-runtime

nvidia-container-runtime 是在 runc 基础上多实现了 nvidia-container-runime-hook (现在叫 nvidia-container-toolkit),该 hook 是在容器启动后(Namespace 已创建完成),容器自定义命令( Entrypoint )启动前执行。当检测到 NVIDIA_VISIBLE_DEVICES 环境变量时,会调用 libnvidia-container 挂载 GPU DeviceCUDA Driver。如果没有检测到 NVIDIA_VISIBLE_DEVICES 就会执行默认的 runc

设置 repositoryGPG key

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -

curl -s -L https://nvidia.github.io/nvidia-container-runtime/$(. /etc/os-release;echo $ID$VERSION_ID)/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

开始安装 nvidia-container-runtime

apt install nvidia-container-runtime -y

配置 Containerd 使用 Nvidia container runtime

如果 /etc/containerd 目录不存在,就先创建它:

mkdir /etc/containerd

生成默认配置:

containerd config default > /etc/containerd/config.toml

Kubernetes 使用设备插件(Device Plugins) 来允许 Pod 访问类似 GPU 这类特殊的硬件功能特性,但前提是默认的 OCI runtime 必须改成 nvidia-container-runtime,需要修改的内容如下:

[plugins."io.containerd.grpc.v1.cri"]
  [plugins."io.containerd.grpc.v1.cri".containerd]
    default_runtime_name = "nvidia-container-runtime" # 修改为nvidia-container-runtime
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
    runtime_type = "io.containerd.runc.v2" # 修改为io.containerd.runc.v2
  # 新增以下
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-container-runtime]
    runtime_type = "io.containerd.runtime.v1.linux"
    runtime_engine = "/usr/bin/nvidia-container-runtime"

重启 containerd 服务:

systemctl restart containerd
systemctl status containerd

确定 containerd 状态没有问题,配置成功

接下来部署 NVIDIA GPU 设备插件,nvidia-device-plugin

### 安装配置NVIDIA容器运行时 #### 准备工作 确保Linux主机已安装NVIDIA驱动程序。对于基于Debian的系统,可以使用如下命令来更新软件包列表并安装NVIDIA开源图形驱动: ```bash sudo apt-get update && sudo apt-get install nvidia-open -y ``` 对于CentOS系统,在开始之前同样要确认已经成功部署了合适的NVIDIA驱动版本[^2]。 #### Docker环境设置 为了使NVIDIA容器工具包正常运作,还需要有一个可用的Docker环境。如果尚未安装Docker,则应先按照官方指南完成其安装过程[^3]。 #### 安装NVIDIA容器运行时 针对不同的Linux发行版有不同的方法来获取`nvidia-container-runtime`: - **Ubuntu/Debian**: 使用APT仓库进行安装。 更新本地APT索引文件,并添加必要的依赖项之后,可以通过下面这条指令来安装所需的组件: ```bash 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-container-toolkit ``` - **CentOS/RHEL**: 利用YUM源来进行操作 对于Red Hat系的操作系统来说,应该通过yum-config-manager管理器向系统的repo中加入相应的资源库地址,再执行安装命令: ```bash sudo yum install -y epel-release sudo yum config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo yum install -y nvidia-driver-latest-dkms cuda sudo yum install -y nvidia-container-runtime ``` 最后一步是重启Docker服务以应用更改: ```bash sudo systemctl restart docker ``` 此时应当能够验证新安装的服务状态以及测试简单的GPU支持情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值