前言
环境:centos7.9、k8s 1.22.17、docker-ce-20.10.9
gpu资源也是服务器中常见的一种资源,gpu即显卡,一般用在人工智能、图文识别、大模型等领域,其中nvidia gpu是nvidia公司生产的nvidia类型的显卡,amd gpu则是adm公司生产的amd类型gpu。企业中服务器最常见的就是英伟达gpu服务器了。
本篇也主要讲解英伟达驱动相关的知识。
nvidia gpu驱动安装
nvidia gpu驱动安装只是涉及物理节点的驱动安装,不涉及k8s,这里简单讲解一下gpu服务器如何安装nvidia驱动。
环境确认、卸载nouveau
#查看服务器是否有gpu
[root@gpu ~]# lspci | grep -i nvidia
0b:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
#查看服务器是否已经安装有gpu英伟达驱动
lsmod | grep -i nvidia
#查看gpu型号、gpu驱动版本等,能列出信息说明驱动已经安装成功,没有信息则说明还没安装驱动
nvidia-smi
#查看是否安装有默认驱动,没有跳过该步骤,有显示内容则说明安装有默认驱动,需要卸载掉,不然会和nvidia冲突,卸载步骤如下
lsmod | grep nouveau
centos6:vim /etc/modprobe.d/blacklist.conf
centos7:vim /usr/lib/modprobe.d/dist-blacklist.conf
#centos 7直接使用命令修改
ls /usr/lib/modprobe.d/dist-blacklist.conf && echo $?
sed -i -e '/blacklist viafb/ablacklist nouveau' -e '/blacklist viafb/aoptions nouveau modeset=0' /usr/lib/modprobe.d/dist-blacklist.conf && echo $?
echo "检查是否修改成功:";grep 'nouveau' /usr/lib/modprobe.d/dist-blacklist.conf
#或者手动编辑文件亦可,在blacklist viafb等列的文件末尾添加下面两句
blacklist nouveau
options nouveau modeset=0
#备份原来的镜像,重新生成镜像文件,可以临时禁用,重启,再次确认是否已经禁用/卸载
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
modprobe -r nouveau
reboot
lsmod | grep nouveau
确认当前英伟达显卡的型号
lspci | grep -i nvidia #复制下面的1eb8
0b:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
打开网站查询:https://admin.pci-ids.ucw.cz/read/PC/10de
拖到底部的查询框输出1eb8,点击查询即可,输出显示类似的如下信息即可得知gpu型号是Tesla T4
Name: TU104GL [Tesla T4]
Discussion
Name: TU104GL [Tesla T4]
T4CFantasy
下载nvidia驱动
英伟达驱动官网:https://www.nvidia.cn/Download/index.aspx?lang=cn
在下拉列表中进行选择,针对NVIDIA产品确定合适的驱动,这里我就这样选择:
产品类型: Data Center / Tesla
产品系列: T-Series
产品家族: Tesla T4
操作系统: Linux 64-bit
CUDA Toolkit: 11.4
语言: Chinese (Simplified)
选择好之后点击搜索,显示驱动的版本是:470.199.02,然后点击下载即可,在产品支持列表中可以看到,我们选择的这个470.199.02版本驱动其实还可以支持很多版本的显卡,如下:
A-Series:
NVIDIA A800, NVIDIA A100, NVIDIA A40, NVIDIA A30, NVIDIA A16, NVIDIA A10, NVIDIA A2
RTX-Series:
RTX 8000, RTX 6000, NVIDIA RTX A6000, NVIDIA RTX A5000, NVIDIA RTX A4000, NVIDIA T1000, NVIDIA T600, NVIDIA T400
HGX-Series:
HGX A800, HGX A100
T-Series:
Tesla T4
V-Series:
Tesla V100
P-Series:
Tesla P100, Tesla P40, Tesla P6, Tesla P4
K-Series:
Tesla K80, Tesla K520
M-Class:
M60, M40 24GB, M40, M6, M4
所以,基本上470.199.02这个版本的驱动就可以支持Tesla T4、NVIDIA A800、NVIDIA A100、Tesla V100、Tesla P4等常见的显卡.
注意:
选择不同的CUDA下载的驱动包会不同,比如CUDA选择的是11.4,搜索结果显示的是驱动包是470.199.02
如果CUDA选择的是11.6,搜索结果显示的驱动包是510.108.03.
所以这个需要根据业务上支持的cuda版本来选择下载对应的显卡驱动和cuda.
nvidia gpu驱动安装
#将下载的gpu驱动文件上传到服务器安装即可
yum install gcc make -y
#直接安装即可,视情况加参数
chmod a+x NVIDIA-Linux-x86_64-470.199.02.run
./NVIDIA-Linux-x86_64-470.199.02.run
gpu资源的使用限制
在k8s中,gpu资源的名称叫做nvidia/gpu或者amd/gpu,其中是nvidaia公司的生产的nvidaia类型的gpu,后者是amd公司生产的amd类型gpu。
注意,目前对gpu的使用配置有如下限制:
1、gpu资源只能在limits字段设置,不可以仅指定 requests 而不指定 limits,可以同时指定 limits 和 requests,不过这两个值必须相等,
2、可以指定 gpu 的 limits 而不指定其 requests,则pod默认将requests值等价于limits 值;
3、 pod中的容器之间是不共享 gpu 的,gpu 也不可以超量分配(注:cpu可以超量使用);
4、每个容器可以请求一个或者多个 gpu,但是必须是整数,用小数值来请求部分 gpu 是不允许的。
安装nvidia-docker(不推荐)
nvidia-docker是一个工具,用于在gpu启用的Linux系统上运行Docker容器。它提供了一个命令行接口,使得在gpu上运行深度学习和机器学习任务的容器变得更为方便。通过使用nvidia-docker,可以轻松地配置和管理gpu容器环境,而无需手动安装和配置各种依赖项。
nvidia-docker并不会与已经安装好的Docker冲突。nvidia-docker是一个额外的工具,用于在Docker中更方便地使用gpu,它与Docker共存并为其提供额外的功能。在安装过程中,nvidia-docker会检测系统是否安装了Docker,并会自动地与Docker进行集成,以提供对gpu容器的支持。因此,安装nvidia-docker后,可以继续使用已经安装好的Docker工具,并能够在Docker中更方便地使用gpu。
nvidia-docker属于旧一代的工具,适用于docker19.3以下版本,目前,官方推荐使用nvidia-container-toolkit,这是github最新的支持方案,nvidia docker2已被nvidia container toolkits取代,所以更推荐使用nvidia container toolkits。
#以下仅显示如何安装nvidia-docker2,建议使用nvidia container toolkits
#复制一份原始的docker配置文件,nvidia-docker2安装后会覆盖原始的docker配置文件
cp /etc

本文主要围绕K8s集群中英伟达GPU展开。介绍了物理节点上英伟达GPU驱动的安装,包括环境确认、卸载、下载等步骤。阐述了K8s中GPU资源的使用限制,还对比了nvidia - docker和nvidia - container - toolkit,推荐使用后者,此外还提及K8s安装插件、Pod使用GPU及集群GPU虚拟化等内容。

4105

被折叠的 条评论
为什么被折叠?



