一、安装

1.1、kubernetes硬件支持问题说明

Kubernetes目前主要在很小程度上支持CPU和内存的发现。Kubelet本身处理的设备非常少。
Kubernetes对于硬件都使用都依赖于硬件厂商的自主研发kubernetes插件,通过硬件厂商的插件从而让kubernetes进行硬件支持。

实现的逻辑如下:

1.2、适用于Kubernetes的NVIDIA设备插件说明

Kubernetes的NVIDIA设备插件是一个Daemonset,允许您自动:

公开群集的每个节点上的GPU数量
跟踪GPU的运行状况
在Kubernetes集群中运行启用GPU的容器。
该存储库包含NVIDIA的Kubernetes设备插件的官方实现。

1.3、使用Kubernetes的NVIDIA设备插件条件(官方)

运行Kubernetes NVIDIA设备插件的先决条件列表如下所述:

  • NVIDIA驱动程序〜= 361.93
  • nvidia-docker version> 2.0(请参阅如何安装及其先决条件)
  • docker配置了nvidia作为默认运行时。
  • Kubernetes版本>= 1.11

运行nvidia-docker 2.0 先决条件列表如下所述:

  • 内核版本> 3.10的GNU / Linux x86_64
  • Docker> = 1.12
  • 采用架构的NVIDIA GPU> Fermi(2.1)
  • NVIDIA驱动程序〜= 361.93(旧版本未经测试)

1.4、删除nvidia-docker 1.0

在继续之前,必须彻底删除nvidia-docker软件包的1.0版。
您必须停止并删除所有使用nvidia-docker 1.0启动的容器。

1.4.1、Ubuntu发行版删除nvidia-docker 1.0

docker volume ls -q -f driver = nvidia-docker | xargs -r -I {} -n1 docker ps -q -a -f volume = {} | xargs -r docker rm -f
sudo apt-get purge nvidia-docker

1.4.2、CentOS发行版删除nvidia-docker 1.0

docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo yum remove nvidia-docker

1.5、安装nvidia-docker 2.0

确保已为您的发行版安装了NVIDIA驱动程序和受支持的Docker 版本(请参阅先决条件)。
如果有自定义/etc/docker/daemon.json,则nvidia-docker2程序包可能会覆盖它,先做好相关备份

1.5.1、Ubuntu发行版安装nvidia-docker 2.0

安装nvidia-docker2软件包并重新加载Docker守护程序配置:

sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd

1.5.2、CentOS发行版安装nvidia-docker 2.0

安装nvidia-docker2软件包并重新加载Docker守护程序配置:

sudo yum install nvidia-docker2
sudo pkill -SIGHUP dockerd

1.5.3、较旧版本的Docker安装nvidia-docker 2.0(不推荐)

如果必须要使用旧版本的docker进行安装nvidia-docker 2.0
必须固定nvidia-docker2以及nvidia-container-runtime安装时的版本,例如:

sudo apt-get install -y nvidia-docker2=2.0.1+docker1.12.6-1 nvidia-container-runtime=1.1.0+docker1.12.6-1

使用

apt-cache madison nvidia-docker2 nvidia-container-runtime

yum search --showduplicates nvidia-docker2 nvidia-container-runtime

列出可用版本。

基本用法
nvidia-docker向Docker守护程序注册一个新的容器运行时。使用时必须选择nvidia运行时docker run:

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
nvidia-docker 2.0安装和使用方法详见《docker在Ubuntu下1小时快速学习》

二、配置

2.1、配置docker

需要启用nvidia运行时作为节点上的默认运行时。需要编辑docker守护进程配置文件,该文件通常出现在/etc/docker/daemon.json,配置内容如下:

{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
如果runtimes不存在,请重新安装nvidia-docker,或参考nvidia-docker官方页面

2.2、Kubernetes启用GPU支持

在您希望使用的所有 GPU节点上启用此选项后,您可以通过部署以下Daemonset在群集中启用GPU支持:

 kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.11/nvidia-device-plugin.yml

2.3、运行GPU作业

可以使用资源属性nvidia.com/gpu配置,来通过容器级资源使用NVIDIA GPU要求:

apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
containers:
- name: cuda-container
image: nvidia/cuda:9.0-devel
resources:
limits:
nvidia.com/gpu: 2 #请求2个GPU
- name: digits-container
image: nvidia/digits:6.0
resources:
limits:
nvidia.com/gpu: 2 #请求2个GPU
警告: 如果在使用带有NVIDIA映像的设备插件时,未配置GPU请求个数,则宿主机上所有GPU都将暴露在容器内。

2.4、Kubernetes运行GPU容器

2.4.1、使用告示

  • Nvidia的GPU设备插件功能是Kubernetes v1.11的测试版
  • NVIDIA设备插件仍被视为测试版并且缺失
    • 更全面的GPU健康检查功能
    • GPU清理功能
    • ...
  • 仅为官方NVIDIA设备插件提供支持。

2.4.2、kubernetes在依赖Docker下运行GPU容器

1、获取镜像

方法1,从Docker Hub中提取预构建的映像:

docker pull nvidia/k8s-device-plugin:1.11

方法2,不使用镜像,采用官方build方法:

docker build -t nvidia/k8s-device-plugin:1.11 https://github.com/NVIDIA/k8s-device-plugin.git#v1.11

方法3,采用自定义build文件方法:

git clone https://github.com/NVIDIA/k8s-device-plugin.git && cd k8s-device-plugin
docker build -t nvidia/k8s-device-plugin:1.11 .

2、在本地运行

docker run --security-opt=no-new-privileges --cap-drop=ALL --network=none -it -v /var/lib/kubelet/device-plugins:/var/lib/kubelet/device-plugins nvidia/k8s-device-plugin:1.11

3、kubernetes部署为守护进程集:

kubectl create -f nvidia-device-plugin.yml

2.4.3、kubernetes不依赖Docker下运行GPU容器

1、构建

C_INCLUDE_PATH=/usr/local/cuda/include LIBRARY_PATH=/usr/local/cuda/lib64 go build

2、在本地运行

./k8s-device-plugin

Kubernetes1.11.1 使用Nvidia显卡配置方法的更多相关文章

  1. 【ubuntu-18.04】ubuntu18.04进行Nvidia显卡配置

    转自https://blog.csdn.net/qq_37935670/article/details/80377196 2.显卡驱动配置 网上有些攻略非常非常复杂,又要禁用nouveau驱动,又要进 ...

  2. Ubuntu18.04 NVIDIA显卡驱动 安装大全

    离线安装NVIDIA显卡驱动 费了一天的劲,走了好多的坑,最主要的原因是gcc版本的问题,一定要用最新版本的gcc!!! 1)官网下载显卡驱动 2)apt 下载gcc包及其依赖包,可用apt-cach ...

  3. Linux操作系统安装Nvidia显卡驱动

    一直以来,Linux分支系统使用过程中都有驱动适配麻烦,完全适配的驱动也不多.对于Nvidia显卡而言,一般Linux各分支操作系统虽然提供了N卡开源驱动工程Nouveau,但是性能上还是有待提高.下 ...

  4. Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  5. Kali-linux安装并配置NVIDIA显卡驱动

    显卡驱动程序就是用来驱动显卡的程序,它是硬件所对应的软件.驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息.有了此信息,计算机就可以与设备进行通信.驱动程序是硬件厂商根据操作系统编写 ...

  6. 安装Nvidia显卡驱动、CUDA和cuDNN的方法(jsxyhelu整编)

    Nvidia显卡驱动.CUDA和cuDNN一般都是同时安装的,这里整理的是我成功运行的最简单的方法. 一.Nvidia显卡驱动 1.1 在可以进入图形界面的情况下 直接在"软件和更新&quo ...

  7. Ubuntu18.04 + NVidia显卡 + Anaconda3 + Tensorflow-GPU 安装、配置、测试 (无需手动安装CUDA)

    其中其决定作用的是这篇文章  https://www.pugetsystems.com/labs/hpc/Install-TensorFlow-with-GPU-Support-the-Easy-Wa ...

  8. docker挂载NVIDIA显卡运行pytorch

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃   写在前面: 请参考之前的文章安装好CentOS.NVIDIA相关驱动及软件.docker及 ...

  9. Gnome Ubuntu16安装Nvidia显卡396驱动,CUDA9.2以及cudnn9.2

    深度学习环境配置,安装Nvidia显卡驱动,CUDA以及cudnn OS:ubuntu 16.04;driver: nvidia 396;CUDA: 9.2cudnn: 9.2 卸载原有Nvidia驱 ...

随机推荐

  1. 57、Spark Streaming: window滑动窗口以及热点搜索词滑动统计案例

    一.window滑动窗口 1.概述 Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据, 会被聚合起来执行计算操作 ...

  2. gulp+apache代理请求处理javascript跨域请求

    apache设置(参考) 用 apache 的 mod_proxy 模块开启反向代理功能来实现: 1 修改 apache 配置文件 httpd.conf ,去掉以下两行前面 # 号 LoadModul ...

  3. ranger 使用外置的solr

    一.solrcloud部署 1.下载部署 1).下载二进制包 #wget http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.3.0/so ...

  4. React中兄弟组件传值

    兄弟组件传值 实际上是间接的通过第三方来实现传值,举例,第一个儿子把值传给父亲,父亲在把这个值传给第二个儿子,这样就实现了兄弟组件传值 来看代码: 父组件代码 import React from 'r ...

  5. SSM项目的搭建

    本文示例在如下环境下搭建一个Maven+Druid+SSM+Shiro+Mysql+PageHelper以及Mybatis Generator反向生成代码的项目 附上GitHub地址:https:// ...

  6. Goroutine调度器

    前言 并发(并行)一致都是编程语言的核心主题,不同于其他语言,例如C/C++语言用户序自行借助pthread创建线程,Golang天然就给出了并发解决方案:goroutine. Goroutine 写 ...

  7. linux学习(2):linux服务器常用操作和命令

    linux服务器常用操作和命令 目录 1. 什么是linux服务器load average?2. 如何查看linux服务器负载3. 服务器负载高怎么办?4. 如何查看服务器内存使用率?5. 如何查看单 ...

  8. TCP的拥塞窗口和快速恢复机制的一些备忘及一点想法

    rwnd(窗口,代表接收端的处理能力).cwnd(拥塞窗口,从发送端看当前网络整体承载能力).ssthresh(快速增长切换成慢速增长的界限值) 1.慢启动,是指数增长(对面确认多少个包,就增加多少) ...

  9. Python3.7安装(解决ssl问题)

    摘自:https://blog.csdn.net/love_cjiajia/article/details/82254371 python3.7安装(解决ssl的问题) 1) 安装准备 yum -y ...

  10. Qt编写小清新风格界面

    给一个朋友定制的界面,左侧有导航,左侧底部有运行+暂停+停止按钮,右侧有可伸缩面板,面板之间可以拉伸调节高度,左右两侧可以拉伸调节高度,所有的宽高和位置都保存在配置文件,下次重启立即应用,无边框标题栏 ...