背景
- 我们都知道越来越多企业开始依靠 AI 和数据科学,将大量数据转化为具有可操作性的情报,因此在 OpenShift 集群上使用 GPU 资源的需求也就越来越多。
- 2019年,NVIDIA 和红帽(Red Hat)推出了由 NVIDIA GPU 加速计算平台和红帽最新发布的 OpenShift 4 相结合的组合产品,从而为用于 AI 和数据科学的 Kubernetes 本地部署提供加速。
先拍个砖
- GPU Operator 目前不支持 vGPU,不要在这个方向浪费时间。
- 参考 NVIDIA 官方的操作文档,我没法验证成功,如有成功实现的大师,请多指教。
实现过程
- 部署 Node Feature Discovery,自动发现 OpenShift 节点的功能特性,这一步非常简单,不会遇到什么问题。
git clone https://github.com/openshift/cluster-nfd-operator.git
cd cluster-nfd-operator
git checkout release-4.3
make deploy
- 部署 Special Resource Operator
- 2.1 如果你的 worker 节点是 RHEL,需要 disable nouveau 模块;如果是 RHCOS 可忽略这一步。
# 在 RHEL worker 节点上操作,开机即 disable 的方法 google 一下就有了。
modprobe -r nouveau
- 2.2 修改driver Dockerfile
# 因为项目中用到的 .run 驱动脚本较大,而代码里是使用 curl 下载,在国内的网络会经常异常退出,所以改为本地地址,方便成功下载;或者将 curl 改成 wget。
git clone https://gitlab.com/nvidia/driver.git
cd driver
## RHEL 节点改 rhel7 目录下的 Dockerfile
vim rhel7/Dockerfile
## RHCOS 节点改 rhel8 目录下的 Dockerfile
vim rhel8/Dockerfile
## 修改的内容对比如下,注意匹配具体环境的驱动版本
20c20
< ARG DRIVER_VERSION=440.33.01
---
> ARG DRIVER_VERSION=440.56-grid
25c25
< curl -fSsl -O $BASE_URL/$DRIVER_VERSION/NVIDIA-Linux-x86_64-$DRIVER_VERSION.run && \
---
> curl -fSsl -O http://10.72.35.240/repos/rhcos/NVIDIA-Linux-x86_64-440.56-grid.run && \
修改完后将代码 push 到私有代码仓库,比如(https://github.com/xxxx/drivermaster.git)
- 2.3 修改 Special Resource Operator 项目的 buildconfig 并部署
git clone https://github.com/openshift-psap/special-resource-operator.git
cd special-resource-operator
## 修改 buildconfig 指向上一步我们修改 Dockerfile 的私有代码仓库,注意匹配驱动版本。
recipes/nvidia-gpu/manifests/0000-state-driver-buildconfig.yaml
29c29
< uri: https://github.com/xxxx/drivermaster.git
---
> uri: https://gitlab.com/nvidia/driver.git
36c36
< value: "440.56-grid"
---
> value: "440.33.01"
## 部署
PULLPOLICY=Always make deploy
- 2.4 修改 nvidia-gpu-driver-container 设备的 SELinux type
oc -n nvidia-gpu nvidia-gpu-driver-container-rhel7-xxxxx
chcon -t container_file_t /dev/nvidia*
- RHEL 节点如果想要手工部署,可以参考红帽的 KB
参考
Enabling and monitoring Nvidia GPUs on Openshift 4 for AI workloads