博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes集群升级NVidia GPU驱动版本
阅读量:7209 次
发布时间:2019-06-29

本文共 3160 字,大约阅读时间需要 10 分钟。

hot3.png

最近Kubernetes、Docker和NVidia GPU驱动都进行了较大的升级,因此考虑对Kubernetes集群升级NVidia GPU驱动版本。我这里使用Ubuntu 18.04LTS + NVidia GPU Driver 410.78 + Kubernetes 1.13.1 + Docker CE 18.09-3 + NVidia Docker2 组合,虽然安装的软件较多,因为一直在用比较熟悉,还算顺利。也可以选择其他的版本组合,但所用的版本一定要匹配,否则会引起各种错误。

1、升级GPU驱动

这个步骤稍微多一些,具体方法参考:

  • 推荐:

2、升级Docker CE容器引擎

在容器中使用Nvidia的GPU,需要安装。最新的nvidia-docker2版本需要docker-ce 18.09版本的支持。安装方法如下:

sudo apt-get install -y docker-ce=5:18.09.0~3-0~ubuntu-bionic --allow-change-held-packages

新安装docker的,可以参考:

3、升级nvidia-docker容器GPU引擎

Ubuntu默认安装docker.io的Docker版本,并非最新版本。这里直接安装最新版本,查看 。

  • 参考:

安装nvidia-docker2软件,如下:

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containersdocker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -fsudo apt-get purge -y nvidia-docker# Add the package repositoriescurl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \  sudo apt-key add -distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \  sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt-get update# Install nvidia-docker2 and reload the Docker daemon configurationsudo apt-get install -y nvidia-docker2sudo pkill -SIGHUP dockerd# 测试一下:docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

4、设置Docker运行配置参数

  • 参考:

首先,检查每一个节点,启用 nvidia runtime为缺省的容器运行时。我们将编辑docker daemon config文件,位于/etc/docker/daemon.json

{    "exec-opts": ["native.cgroupdriver=systemd"],    "default-runtime": "nvidia",    "runtimes": {        "nvidia": {            "path": "/usr/bin/nvidia-container-runtime",            "runtimeArgs": []        }    }}

上面的这一行("exec-opts": ["native.cgroupdriver=systemd"])是在Ubuntu16.04+DockerCE上面必须要的,否则kubelet无法成功启动(参考 )。

如果 runtimes 没有, 到 参考,首先进行安装。

第二步,启用 DevicePlugins feature gate,在每一个GPU节点都要设置。

如果你的 Kubernetes cluster是通过kubeadm部署的,并且节点运行systemd,需要打开kubeadm 的systemd unit文件,位于 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 然后添加下面的参数作为环境变量:

Environment="KUBELET_GPU_ARGS=--feature-gates=DevicePlugins=true"

该设置在1.10版本及以后,已经不再需要了。参见:

重新载入配置文件,然后重新启动服务:

$ sudo systemctl daemon-reload$ sudo systemctl restart kubelet

5、升级Kubernetes GPU add-on

  • 参考:
    • 完整安装过程,
    • GPU for K8s加载项,

完成所有的GPU节点的选项启用,然后就可以在在Kubernetes中启用GPU支持,通过安装Nvidia提供的Daemonset服务来实现,方法如下:

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.12/nvidia-device-plugin.yml
  • 注意:这里的版本号v1.11,访问获得最新版本。

6、运行 GPU Jobs测试

NVIDIA GPUs 现在可以通过资源名 nvidia.com/gpu请求在容器里进行访问。

将以下内容保存为nvidia-gpu.yaml。

apiVersion: v1kind: Podmetadata:  name: gpu-podspec:  nodeName: podc01  containers:    - name: cuda-container      image: nvidia/cuda:9.0-devel      resources:        limits:          nvidia.com/gpu: 2 # requesting 2 GPUs    - name: digits-container      image: nvidia/digits:6.0      resources:        limits:          nvidia.com/gpu: 1 # requesting 2 GPUs

然后运行 kubectl apply -f nvidia-gpu.yaml -n nvidia,部署该pod到集群中。

其中:

  • nodeName: podc01为我指定的节点名称,因为我的集群中有的节点没有GPU卡,如果有多个节点可以通过label指定节点选择。
  • nvidia为命名空间,可以通过kubectl create ns nvidia创建。

完毕。

 

更多参考:

  • 关于AMD GPU的Kubernetes加载项:

转载于:https://my.oschina.net/u/2306127/blog/2996776

你可能感兴趣的文章
HBase基本操作-java api
查看>>
PostgreSQL的时间/日期函数使用
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性
查看>>
十字星文化获数千万元A轮融资,腾讯持续下注
查看>>
cron和crontab
查看>>
从阿里云数据库入选Gartner谈数据库的演化
查看>>
【Unity Shader】(六) ------ 复杂的光照(上)
查看>>
Android开发小技巧之商品属性筛选与商品筛选
查看>>
Firefox Test Pilot 计划正式关闭
查看>>
img = img1*mask + img2*(1-mask) How do that ?
查看>>
对话平安科技CTO方国伟:平安云差异化在哪?
查看>>
Greenplum segment级问题的排查 - gp_session_role=utility (含csvlog日志格式解读)
查看>>
在Android NDK下打印log
查看>>
MFC中的CString类使用方法指南
查看>>
Git学习第三课 使用github创建一个新的项目
查看>>
互联网上的时光机器
查看>>
UML类图学习
查看>>
成为顶尖机器学习算法专家需要知道哪些算法?
查看>>
Lombok简介
查看>>
几款开源图像处理软件评测研究
查看>>