前言

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 Device 和 CUDA Driver。如果没有检测到 NVIDIA_VISIBLE_DEVICES 就会执行默认的 runc。

设置 repository 和 GPG 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

Containerd 配置使用 Nvidia container runtime的更多相关文章

  1. [笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程

    之前写的[笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程已经out了,以这篇为准. Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心 ...

  2. nvidia-docker2配置与NVIDIA驱动安装

    要运行高版本的GPU版TensorFlow,需要更新宿主机的显卡驱动(本文以NVIDIA390为例) 一.更新驱动 禁用nouveau驱动: 添加/etc/modprobe.d/blacklist.c ...

  3. Kubernetes 教程:在 Containerd 容器中使用 GPU

    原文链接:https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道 ...

  4. containerd与kubernetes集成

    kubernetes集群三步安装 概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of ...

  5. docker 使用 Nvidia 显卡

    docker19.03读取NVIDIA显卡 作者: 张首富 时间: 2019-09-06 w x: y18163201 前言 2019年7月的docker 19.03已经正式发布了,这次发布对我来说有 ...

  6. k8s入坑之路(3)containerd容器

    containerd概念: containerd主要是namebases与k8s docker不同 存放路径不一致 没有默认仓库 容器运行时: 2020年未kubernetes宣布不再支持docker ...

  7. containerd与kubernetes集成部署

    概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of Kubernetes conta ...

  8. kubernetes集成GPU原理

    这里以Nvidia GPU设备如何在Kubernetes中管理调度为例研究, 工作流程分为以下两个方面: 如何在容器中使用GPU Kubernetes 如何调度GPU 容器中使用GPU 想要在容器中的 ...

  9. 从0开始部署GPU集群-0:基本情况

    配置信息(多台服务器) 1 硬件:CPU和GPU*可选 2 操作系统:centos7 3 驱动:nvidia显卡驱动  *可选 4 容器运行时:docker 和 nvidia container ru ...

  10. 创建可以运行宿主机GPU的容器

    1.安装NVIDIA Container Runtime apt-get参考https://blog.csdn.net/li_ellin/article/details/107180516 yum参考 ...

随机推荐

  1. 解决容器Docker内部启动计划任务crontab不生效不执行的问题

    docker使用centos7镜像 首先编辑crond,注释#session    required   pam_loginuid.so: vi /etc/pam.d/crond 然后重启crond服 ...

  2. Qt编写地图综合应用12-路线查询

    一.前言 路线查询的功能只有在线地图才有,因为这个路线规划需要经常更新的,这个数据同步需要大量的人力物力去统计,所以这玩意必须放在服务器端,就算是类似于手机端一样的放在本地离线,也需要隔一段时间更新的 ...

  3. Qt音视频开发36-USB摄像头解码qcamera方案

    一.前言 除了监控专用的摄像头以外,有一些应用场景用的还是USB摄像头,甚至还有一些单片机或者开发板上用的CMOS摄像头,而Qt在嵌入式领域应用相当广,所以用Qt来读取加载显示USB摄像头和CMOS摄 ...

  4. error C2589: “(”:“::”右边的非法标记错误的处理

    问题:error C2589: "(":"::"右边的非法标记错误的处理 标准库在<algorithm>头中定义了两个模板函数std::min() ...

  5. vue.js中vue.config.js的配置说明

    如果你的项目没有vue.config.js,请在根目录新建一个. vue.config.js里面的代码如下: module.exports = { /** 区分打包环境与开发环境 * process. ...

  6. WebClient 用法小结

    进来的项目中要实现能够在windows service中调用指定项目的链接页面.由于访问页面时候使用的是ie浏览器或其他浏览器,所以想起用webclient类. 如果只想从特定的URI请求文件,则使用 ...

  7. 为什么要把数据模型分为:Entity,DTO,Response,Request呢?具体有什么作用呢

    开发中,我们通常把数据模型分为几个部分,探讨下他们具体都有那些作用. 1. Entity(实体) 实体类代表数据库表结构,与数据库表一一对应. // 例如 User.cs public class U ...

  8. GeoJSON代码示例

    GeoJSON代码示例 1. 读取GeoJSON文件 1.1 实现思路 graph TD A[读取GeoJSON文件] --> B[读取GeoJSON文件内容] B --> C[解析Geo ...

  9. 《入梦》Revisited

      寝室里有本<美丽新世界>(Brave New World),书页翻过灯塔里上升的螺旋阶梯,还有大概三分之一的篇幅是<重返美丽新世界>(Brave New World Rev ...

  10. Solution Set -「LOCAL」冲刺省选 Round XXVII

    \(\mathscr{Summary}\)   还行,B 题挺不错,C 题就省选来说有点水(? \(\mathscr{Solution}\) \(\mathscr{A-}\) 分裂   初始时,你有一 ...