Google竟想将 Docker 踢出 Kubernetes 群聊,那还能欢快地跑 GPU吗?(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

$ echo ‘export PATH=/usr/local/cuda/bin:$PATH’ | sudo tee /etc/profile.d/cuda.sh

$ source /etc/profile

3. 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 I D ID IDVERSION_ID)/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

安装:

$ 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)[3] 来允许 Pod 访问类似 GPU 这类特殊的硬件功能特性,但前提是默认的 OCI runtime 必须改成 nvidia-container-runtime,需要修改的内容如下:

/etc/containerd/config.toml

[plugins.“io.containerd.grpc.v1.cri”.containerd]

snapshotter = “overlayfs”

default_runtime_name = “runc”

no_pivot = false

[plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes]

[plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc]

runtime_type = “io.containerd.runtime.v1.linux” # 将此处 runtime_type 的值改成 io.containerd.runtime.v1.linux

[plugins.“io.containerd.runtime.v1.linux”]

shim = “containerd-shim”

runtime = “nvidia-container-runtime” # 将此处 runtime 的值改成 nvidia-container-runtime

重启 containerd 服务:

$ systemctl restart containerd

4. 部署 NVIDIA GPU 设备插件

======================

一条命令解决战斗:

$ kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.7.1/nvidia-device-plugin.yml

查看日志:

$ kubectl -n kube-system logs nvidia-device-plugin-daemonset-xxx

2020/12/04 06:30:28 Loading NVML

2020/12/04 06:30:28 Starting FS watcher.

2020/12/04 06:30:28 Starting OS watcher.

2020/12/04 06:30:28 Retreiving plugins.

2020/12/04 06:30:28 Starting GRPC server for ‘nvidia.com/gpu’

2020/12/04 06:30:28 Starting to serve ‘nvidia.com/gpu’ on /var/lib/kubelet/device-plugins/nvidia-gpu.sock

2020/12/04 06:30:28 Registered device plugin for ‘nvidia.com/gpu’ with Kubelet

可以看到设备插件部署成功了。在 Node 上面可以看到设备插件目录下的 socket:

$ ll /var/lib/kubelet/device-plugins/

total 12

drwxr-xr-x 2 root root 4096 Dec 4 01:30 ./

drwxr-xr-x 8 root root 4096 Dec 3 05:05 …/

-rw-r–r-- 1 root root 0 Dec 4 01:11 DEPRECATION

-rw------- 1 root root 3804 Dec 4 01:30 kubelet_internal_checkpoint

srwxr-xr-x 1 root root 0 Dec 4 01:11 kubelet.sock=

srwxr-xr-x 1 root root 0 Dec 4 01:11 kubevirt-kvm.sock=

srwxr-xr-x 1 root root 0 Dec 4 01:11 kubevirt-tun.sock=

srwxr-xr-x 1 root root 0 Dec 4 01:11 kubevirt-vhost-net.sock=

srwxr-xr-x 1 root root 0 Dec 4 01:30 nvidia-gpu.sock=

5. 测试 GPU

==========

首先测试本地命令行工具 ctr,这个应该没啥问题:

$ ctr images pull docker.io/nvidia/cuda:9.0-base

$ ctr run --rm -t --gpus 0 docker.io/nvidia/cuda:9.0-base nvidia-smi nvidia-smi

Fri Dec 4 07:01:38 2020

±----------------------------------------------------------------------------+

| NVIDIA-SMI 440.95.01 Driver Version: 440.95.01 CUDA Version: 10.2 |

|-------------------------------±---------------------±---------------------+

| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |

| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |

|=++==============|

| 0 GeForce RTX 208… Off | 00000000:A1:00.0 Off | N/A |

| 30% 33C P8 9W / 250W | 0MiB / 11019MiB | 0% Default |

±------------------------------±---------------------±---------------------+

±----------------------------------------------------------------------------+

| Processes: GPU Memory |

| GPU PID Type Process name Usage |

|=============================================================================|

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
================================================|

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-rTkH4vk9-1713313413744)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值