1、Linux查看显卡信息:(ps:若找不到lspci命令,可以安装 yum install pciutils)
lspci | grep -i vga
2、使用nvidia GPU可以:
lspci | grep -i nvidia
3、查看显卡驱动
cat /proc/driver/nvidia/version
安装依赖环境:
yum install kernel-devel gcc -y
检查内核版本和源码版本,保证一致
ls /boot | grep vmlinu
rpm -aq | grep kernel-devel
屏蔽系统自带的nouveau
查看命令:
lsmod | grep nouveau
屏蔽成功之后是查询不到结果的
修改dist-blacklist.conf文件:
vim /lib/modprobe.d/dist-blacklist.conf
将nvidiafb注释掉:
#blacklist nvidiafb
然后添加以下语句:
blacklist nouveau
options nouveau modeset=0
重建initramfs image步骤
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
修改运行级别为文本模式
systemctl set-default multi-user.target
重新启动
reboot
驱动下载
https://www.nvidia.cn/Download/index.aspx?lang=cn
安装过程
chmod +x NVIDIA-Linux-x86_64-460.80.run
./NVIDIA-Linux-x86_64-460.80.run
安装完成后测试
nvidia-smi
设置docker运行时
[root@node1 nvdai]# cat /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
安装nvidia-docker2
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
更新仓库
DIST=$(sed -n 's/releasever=//p' /etc/yum.conf)
DIST=${DIST:-$(. /etc/os-release; echo $VERSION_ID)}
sudo yum makecache
安装
yum install nvidia-docker2
重启docker
systemctl daemon-reload
systemctl restart docker
安装k8s-device-plugin
在master节点上运行
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml
查看可用的gpu
kubectl describe nodes
测试k8s中gpu的使用
vim gpu_test.yaml
apiVersion: v1
kind: Pod
metadata:
name: ffmpeg-pod
spec:
nodeName: wangzishen-ms-7846 #指定有gpu的节点
containers:
- name: ffmpeg-container
image: nightseas/ffmpeg:latest #k8s中配置阿里的私有仓库遇到一些问题,暂时用公共镜像
command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
resources:
limits:
nvidia.com/gpu: 1 # 请求分配 1个 GPU
requests:
nvidia.com/gpu: '1'
创建pod
kubectl create -f gpu_test.yaml
进入容器测试
kubectl exec ffmpeg-pod -it -- bash
下载视频
wget http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
执行转码命令
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i big_buck_bunny.mp4 -vf scale_npp=1280:720 -vcodec h264_nvenc out.mp4
查看gpu使用情况
一个gpu只能分配给一个pod。但是一个pod是由多个容器组成的,所以同一个pod的容器可以共享分配给当前pod的所有GPU,而且在配置中的gpu数量只能是整数,不可以像cpu一样调度一部分