一,nvidia K80驱动安装

1,  查看服务器上的Nvidia(英伟达)显卡信息,命令lspci |grep NVIDIA

2,  按下来,进行显卡驱动程序的安装,驱动程序可到nvidia的官网进行下载,网址为https://www.nvidia.com/Download/index.aspx?lang=en-us,安装完成之后,查看版本:NVIDIA-SMI 410.48,运行nvidia-smi可获得此信息。

    ***如果nvidia-smi很慢,可先执行一次nvidia-persistenced --persistence-mode。

二,NVIDIA CUDA Toolkit 安装

1,根据前一节的驱动,先把合适的CUDA Toolkit版本进行下载安装。

下载网址:https://developer.nvidia.com/cuda-toolkit-archive

驱动程序和CUDA的对应关系如下图:

2,安装时,按如下图选择即可:

3,使用cuda中的deviceQuery可以获得其安装信息

三,安装cuDNN

1,  cuDNN是GPU加速计算深层神经网络的库,网址:

https://developer.nvidia.com/rdp/cudnn-archive

2,  选择与cuda对应的版本,下载解压到cuda对应目录即可。

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

***如果只是在宿主机上使用NVIDIA的GPU,那么,经过上面的步骤之后,就可以安装一些学习框架进行操作了。但如果想更灵活干净的让应用在容器内运行,则还需要进行接下来的操作准备。***

四,nvidia-docker2安装

1,Nvidia关于docker项目的支持,github网址:https://github.com/NVIDIA/nvidia-docker。它使用一个nvidia-docker2应用来延伸docker的内置功能。架构如下:

2,nvidia-docker2要求的docker安装版本比较新,安装的版本为ce-18.09.6-3。Nvidia-docker2安装的版本为2.0.3-3。(这几个rpm包我都收下载好,可随时共享)

安装命令(需要解决rpm包依赖,未列明):

Sudo yum install docker-ce-18.09.6-3.el7.x86_64.rpm

Sudo yum install nvidia-docker2-2.0.3-3.docker18.09.6.ce.noarch.rpm

3,在安装完成之后,有两个配置文件需要更改或新建:

a,/etc/systemd/system/docker.service.d/docker.conf

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd --graph=/xxx --storage-driver=overlay --insecure-registry harbor.xxx.com.cn

这个文件,公司所有的docker都有这个设置更改,graph参数指定docker镜像的存放目录,需要一个较大的硬盘空间。

b,/etc/docker/daemon.json

{

"default-runtime": "nvidia",

"runtimes": {

"nvidia": {

"path": "nvidia-container-runtime",

"runtimeArgs": []

}

}

}

4,此文件为nvidia-docker2应用所需,用于替换docker的默认runc。

当这些更改应用之后,再启动docker服务,会看到相应的更改已生效。

五,Docker镜像测试:

1,此次测试的镜像如下:

l  ---anibali/pytorch: cuda-10.0

l  ---tensorflow/tensorflow: 1.14.0-gpu-py3-jupyter

2,在服务器新装之后,如果有特别个性化的需求,可以考虑以anaconda镜像为基础进行自定义制作。

3,在以上两个镜像中,GPU加速的效果,都可以达到CPU的10倍左右。

六,使用K8S管理docker容器的部署

1,  将此节点加入集群。

sudo kubeadm join master  --token xx--discovery-token-unsafe-skip-ca-verification

2,  安装Nvidia Device Plugin。

Nvidia-device-plugin.yaml

apiVersion: extensions/v1beta1

kind: DaemonSet

metadata:

name: nvidia-device-plugin-daemonset-1.12

namespace: kube-system

spec:

updateStrategy:

type: RollingUpdate

template:

metadata:

annotations:

scheduler.alpha.kubernetes.io/critical-pod: ""

labels:

name: nvidia-device-plugin-ds

spec:

tolerations:

- key: CriticalAddonsOnly

operator: Exists

- key: nvidia.com/gpu

operator: Exists

effect: NoSchedule

containers:

- image: harbor.xxx.com.cn/3rd_part/nvidia/k8s-device-plugin:1.11

name: nvidia-device-plugin-ctr

securityContext:

allowPrivilegeEscalation: false

capabilities:

drop: ["ALL"]

volumeMounts:

- name: device-plugin

mountPath: /var/lib/kubelet/device-plugins

volumes:

- name: device-plugin

hostPath:

path: /var/lib/kubelet/device-plugins

然后,在集群里运行如下命令,将yaml文件应用到集群里。

Kubectl apply –f Nvidia-device-plugin.yaml

1,  检查GPU资源已正常被集群识别。

Kubectl get nodes \

"-o=custom-columns=NAME:.metadata.name,\

 GPU:.status.allocatable.nvidia\.com/gpu"

输出如下则说明一切正常。

2,  Jupyter环境部署

Jupyter.yaml内容

apiVersion: apps/v1

kind: Deployment

metadata:

name: sss-ai-jupyter

spec:

replicas: 1

selector:

matchLabels:

name: sss-ai-jupyter

template:

metadata:

labels:

name: sss-ai-jupyter

spec:

nodeSelector:

accelerator: nvidia-tesla-k80

containers:

- name: sss-ai-jupyter

image: harbor.xxx.com.cn/3rd_part/tensorflow:1.14.0-gpu-py3-jupyter

imagePullPolicy: IfNotPresent

resources:

limits:

nvidia.com/gpu: 1

---

apiVersion: v1

kind: Service

metadata:

name: sss-ai-jupyter

spec:

type: NodePort

ports:

- port: 8888

targetPort: 8888

nodePort: 30302

selector:

name: sss-ai-jupyter

然后,在集群里运行如下命令,将yaml文件应用到集群里。

Kubectl apply –f Nvidia-device-plugin.yaml

3,  测试

进入POD,手工测试结果如下:

在容器外部,通过curl命令,返回如下:

***通过浏览器测试()

七,KubeFlow部署

Kubeflow 是目前基于 Kubernetes 的主流机器学习解决方案,它抽象了和机器学习相关的 PS-Worker 模型,实现了一套 pipeline 的工作流,支持超参数训练和 Jupyter notebooks 集成等能力。

       由于kubeflow的安装,涉及众多组件依赖,较为复杂。所以官方提供的都是一站式安装方案。而这安装的前提条件,必须又能连外网(包括上网),又同时保持k8s master的连接。

       目前,公司的网络条件暂不具体,故暂未进行安装部署。稍后,会以microk8s的方式来测试单机部署。

NVIDIA-GPU归入K8S集群管理的安装文档--第二版的更多相关文章

  1. Greenplum/Deepgreen(集群/分布式)安装文档

    Deepgreen分布式安装文档 环境准备 1.安装VMware虚拟机软件,然后在VMware安装三台Linux虚拟机(使用centos7版本) 2.使用的虚拟机如下: 192.168.136.155 ...

  2. k8s 集群管理和微服务 适合做啥

    k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...

  3. 整理全网最全K8S集群管理工具、平台

    整理常见的整理全网最全K8S集群管理工具.平台解决方案. 1 Rancher Rancher中文官网:https://docs.rancher.cn/ 2 KubeSphere 官网:https:// ...

  4. 近万字案例:Rancher + VMware PKS实现全球数百站点K8S集群管理

    Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的.基于云的技术平台,以更好地应对业务挑战.曾连续3年提名CRN,并且在2012 ...

  5. 强大多云混合多K8S集群管理平台Rancher入门实战

    @ 目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...

  6. 多k8s集群管理

    多集群的切换是K8s运维中比不可少的问题,常见的基于多个集群进行切换的方法有三种: 切换config文件 通过context进行集群切换 用kubecm进行集群切换 切换config文件 我们先看看放 ...

  7. RHEL 集群(RHCS)配置小记 -- 文档记录

    1.RHEL 6 集群配置官方管理手册 https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/pd ...

  8. Hadoop 集群搭建和维护文档

    一.前言 -- 基础环境准备 节点名称 IP NN DN JNN ZKFC ZK RM NM Master Worker master1 192.168.8.106 * * * * * * maste ...

  9. 如何诊断 11.2 集群节点驱逐问题 (文档 ID 1674872.1)

    适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 到 11.2.0.2 [发行版 11.2]本文档所含信息适用于所有平台 用途 这篇文档提 ...

随机推荐

  1. Linux配置DHCP服务器,DHCP中继配置

    配置dhcp服务器 第一步:配置网卡 第二步: 安装dhcp (需要先构建yum仓库,构建yum仓库的方法在之前的博客里有) 编写dhcp.conf文件 进去以后会出现这个内容 需要执行下面的内容将内 ...

  2. CSS中@support的用法 及其calc、media用法

    背景: 一次偶然的机会遇到一个朋友在刷css的库其中有这样一道题(css变量如何定义,calc, support, media),我看一眼熟悉而陌生,知其一而不知其二,叔可忍婶不可忍,马上就度娘起来, ...

  3. mnist数据集探究

    一.mnist的属性和方法 为了方便我只检查了后20个属性和方法 from tensorflow.examples.tutorials.mnist import input_data mnist = ...

  4. 框架之jQuery妙用

    1.jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交 ...

  5. Docker remote API

    Docker remote API 该教程基于Ubuntu或Debian环境,如果不是,请略过本文 Docker API 在Docker生态系统中一共有三种API Registry API:提供了与来 ...

  6. Extra:Variable Types

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在我们使用Cg或者HLSL进行shader编写的过程中,常常涉及到一些变量 ...

  7. PHP服务端优化全面总结

    一.优化PHP原则 1.1PHP代码的优化 (1)升级最新的PHP版本 鸟哥PPT里的对比数据,就是WordPress在PHP5.6执行100次会产生70亿次的CPU指令执行数目,而在PHP7中只需要 ...

  8. 搭建MQTT服务器

    MQTT协议简介 MQTT 是一个基于发布/订阅模式的消息传输协议.它具有轻量级.开放.简单,易于实现,通信带宽要求低等特点.这些特点使得它对机器与机器的通信(M2M)以及物联网应用(IoT)来说是很 ...

  9. [转帖]腾讯云TStack获下一代云计算技术创新奖 与鲲鹏等产品实现兼容性测试

    http://www.techweb.com.cn/cloud/2019-12-16/2769286.shtml [TechWeb]12 月 16 日消息,在中国电子技术标准化研究院主办的“第九届中国 ...

  10. 常见HTTP响应状态码

    分类 分类 分类描述 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作成功接收并处理 3** 重定向,需要进一步的操作以完成请求 4** 客户端错误,请求包含语法错误或无法完成 ...