配置 GPU 工作程序节点
验证您的 GPU 工作程序节点是否已做好部署准备。
准备 GPU 节点
在所有 GPU 节点上完成以下步骤:
-
设置存储库。
-
对于 Red Hat Enterprise Linux,请运行以下命令:
a. 设置 RHEL 存储库。使用订阅管理器凭证进行注册。
subscription-manager register --username <username> --password <password>b. 为 Enterprise Linux (EPEL) 存储库设置附加包。
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -
对于 Ubuntu,缺省情况下存储库可用。
-
-
安装 NVIDIA 驱动程序。
a. 设置 NVIDIA 驱动程序本地存储库。
首先,从 NVIDIA 驱动程序下载下载正确的 GPU 驱动程序版本程序包。然后运行以下命令安装此程序包:
-
对于 RHEL,运行以下命令:
yum localinstall <package-name>.rpm -y -
对于 Ubuntu,请运行以下命令:
dpkg -i <package-name>.deb
b. 安装驱动程序。
-
对于 RHEL,请运行以下命令:
yum install nvidia-kmod nvidia-driver-NVML nvidia-persistenced -y -
对于 Ubuntu,请运行以下命令:
apt install nvidia-driver-<version>
-
-
除去现有热插拔内存 udev 规则。
从 udev 规则注释掉内存 hotadd 规则。# Memory hotadd request #SUBSYSTEM!="memory", ACTION!="add", GOTO="memory_hotplug_end" #PROGRAM="/bin/uname -p", RESULT=="s390*", GOTO="memory_hotplug_end"udev 规则文件可从以下位置获取:
- 对于 RHEL,文件位置和名称为
/lib/udev/rules.d/40-redhat.rules。 - 对于 Ubuntu,文件位置和名称为
/lib/udev/rules.d/40-vm-hotadd.rules。
- 对于 RHEL,文件位置和名称为
-
启用
nvidia-persistenced服务。systemctl enable nvidia-persistenced -
重新启动节点。
-
运行以下命令验证设置:
nvidia-smi
更新 GPU 驱动程序版本
可以在安装 IBM® Cloud Private 之前或之后更新 GPU 驱动程序。
要点:IBM Cloud Private 环境不使用 NVIDIA 容器运行时。不得在任何 IBM Cloud Private GPU 节点上安装 NVIDIA 容器运行时。
-
更新 GPU 驱动程序版本。请参阅 http://www.nvidia.com/Download/index.aspx
。
-
更新 GPU 驱动程序版本之后,请重新启动 Kubelet,以允许 Kubernetes 获取对 GPU 驱动程序的更改。
systemctl restart kubelet
验证节点是否已做好部署准备
您必须从安装有 Nvidia GPU 驱动程序的工作程序节点执行这些验证步骤。
-
检查 Nvidia 是否已启动并正在运行。
nvidia-smi输出类似于以下代码:
Thu Nov 9 16:44:28 2017 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 375.66 Driver Version: 375.66 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla K80 Off | 0000:08:00.0 Off | 0 | | N/A 47C P8 26W / 149W | 0MiB / 11439MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla K80 Off | 0000:09:00.0 Off | 0 | | N/A 36C P8 31W / 149W | 0MiB / 11439MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+如果返回了错误消息,请在节点上重新安装 GPU 驱动程序。请参阅 http://www.nvidia.com/Download/index.aspx
-
确保 GPU 驱动程序文件夹可用。
- 检查
/var/lib/kubelet/device-plugins/nvidia-driver文件夹是否存在。 - 检查在
/var/lib/kubelet/device-plugins/nvidia-driver文件夹下是否存在至少两个文件夹。文件夹名称为init和<driver-version-number>。
如果不存在任何文件夹,请确保已正确安装 GPU 驱动程序。然后,请运行以下命令:
-
删除包含驱动程序文件的文件夹。
rm -rf /var/lib/kubelet/device-plugins/nvidia-driver -
重新启动 kubelet 服务。
systemctl restart kubelet
- 检查
-
验证 GPU 资源是否可供 Kubernetes 使用。
kubectl describe nodes在命令输出中,含 GPU 的节点必须包含以下条目:
Capacity: [snip] nvidia.com/gpu: 2 [snip] Allocatable: [snip] nvidia.com/gpu: 2如果针对具有 NVIDIA GPU 的节点未看到
nvidia.com/gpu条目,原因可能是由于 GPU 驱动程序未正确安装。您可能需要重新安装 GPU 驱动程序。
您现在已准备就绪,可以在工作程序节点上部署使用 GPU 资源的应用程序。请参阅创建附加有 GPU 资源的部署。