在 OpenShift 上的安装和升级概述#
高级步骤#
按照这些高级步骤安装 NVIDIA GPU Operator 的免授权支持版本
重要提示
NVIDIA AI Enterprise 客户的安装过程另有文档记录。请参阅搭配 OpenShift 的 NVIDIA AI Enterprise。
准备安装 Operator#
您可以在未升级且未授权的新部署集群上部署 Operator,版本如下
OpenShift 4.9.9 及以上 z-stream 版本
OpenShift 4.15 的特殊注意事项#
在 OpenShift 4.15 中,当集成的 OpenShift 镜像仓库被禁用时,密钥不再自动生成。有关更多信息,请参阅OpenShift 4.15 发行说明。
此更改会影响 NVIDIA GPU Operator 的安装。在安装期间,Driver Toolkit daemonset 检查 Driver Toolkit 服务帐户是否存在 build-dockercfg
密钥。当密钥不存在时,安装会停滞。
您可以运行以下命令来确定您的集群是否受影响。
$ oc get configs.imageregistry.operator.openshift.io cluster -o jsonpath='{.spec.storage}{"\n"}'
如果上述命令的输出为空 {}
,则您的集群受到影响,您必须配置您的仓库以使用存储。有关使用 PVC 配置仓库的信息,请参阅为裸机配置仓库。对于裸机以外的平台,请参阅 OpenShift Container Platform 中的镜像仓库 Operator 页面的附加资源部分。
如果上述命令的输出不是空值,则您的集群不受影响。
准备安装 Operator#
验证您的集群是否具有 OpenShift Driver toolkit
$ oc get -n openshift is/driver-toolkit
示例输出
NAME IMAGE REPOSITORY TAGS UPDATED driver-toolkit image-registry.openshift-image-registry.svc:5000/openshift/driver-toolkit 410.84.202203290245-0,latest 47 minutes ago
准备升级 Operator#
升级后,OpenShift Cluster Version Operator (BZ#2014071) 中的一个错误阻止了 Driver Toolkit 镜像流的正确升级。此问题的修复程序已合并到以下版本中
OpenShift 4.8.21 及以上 z-stream 版本
OpenShift 4.9.5 及以上 z-stream 版本
验证您的集群是否受此错误影响,搜索具有空名称的标签
$ oc get -n openshift is/driver-toolkit '-ojsonpath={.spec.tags[?(@.name=="")]}'
示例输出
{{"annotations":null,"from":{"kind":"DockerImage","name":"[quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:71207482fa6fcef0e3ca283d0cafebed4d5ac78c62312fd6e19ac5ca2294d296](http://quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:71207482fa6fcef0e3ca283d0cafebed4d5ac78c62312fd6e19ac5ca2294d296)"},"generation":5,"importPolicy":{"scheduled":true},"name":"","referencePolicy":{"type":"Source"}}
作为一种解决方法,删除损坏的镜像流,Cluster Version Operator 将重新创建它
$ oc delete -n openshift is/driver-toolkit
示例输出
imagestream.image.openshift.io "driver-toolkit" deleted
关于损坏的 Driver Toolkit#
已知 OpenShift 4.8.19、4.8.21、4.9.8 具有损坏的 Driver Toolkit 镜像。以下消息记录在驱动程序 pod 容器中。请遵循启用集群范围授权中的指导。之后,nvidia-driver-daemonset
将自动使用基于授权的回退。
要完全禁用 Driver Toolkit 镜像的使用,请编辑集群策略实例并将 operator.use_ocp_driver_toolkit
选项设置为 false
。此外,我们建议为 OpenShift 版本 < 4.9.9 维护授权。
查看来自 OpenShift Driver Toolkit 容器的日志
$ oc logs nvidia-driver-daemonset-49.84.202111111343-0-6mpw4 -c openshift-driver-toolkit-ctr
示例输出
+ '[' -f /mnt/shared-nvidia-driver-toolkit/dir_prepared ']' Waiting for nvidia-driver-ctr container to prepare the shared directory ... + echo Waiting for nvidia-driver-ctr container to prepare the shared directory ... + sleep 10 + '[' -f /mnt/shared-nvidia-driver-toolkit/dir_prepared ']' + exec /mnt/shared-nvidia-driver-toolkit/ocp_dtk_entrypoint dtk-build-driver Running dtk-build-driver WARNING: broken Driver Toolkit image detected: - Node kernel: 4.18.0-305.25.1.el8_4.x86_64 - Kernel package: 4.18.0-305.28.1.el8_4.x86_64 INFO: informing nvidia-driver-ctr to fallback on entitled-build. INFO: nothing else to do in openshift-driver-toolkit-ctr container, sleeping forever.
查看来自 NVIDIA Driver 容器的日志
$ oc logs nvidia-driver-daemonset-49.84.202111111343-0-6mpw4 -c nvidia-driver-ctr
示例输出
Running nv-ctr-run-with-dtk + [[ '' == \t\r\u\e ]] + [[ ! -f /mnt/shared-nvidia-driver-toolkit/dir_prepared ]] + cp -r /tmp/install.sh /usr/local/bin/ocp_dtk_entrypoint /usr/local/bin/nvidia-driver /usr/local/bin/extract-vmlinux /usr/bin/kubectl /usr/local/bin/vgpu-util /drivers /licenses /mnt/shared-nvidia-driver-toolkit/ + env + sed 's/=/="/' + sed 's/$/"/' + touch /mnt/shared-nvidia-driver-toolkit/dir_prepared + set +x Wed Nov 24 13:36:31 UTC 2021 Waiting for openshift-driver-toolkit-ctr container to start ... WARNING: broken driver toolkit detected, using entitlement-based fallback