在 OpenShift 上的安装和升级概述#

高级步骤#

按照这些高级步骤安装 NVIDIA GPU Operator 的免授权支持版本

  1. 在 OpenShift 上安装 Node Feature Discovery Operator.

  2. 在 OpenShift 上安装 NVIDIA GPU Operator.

  3. 运行示例 GPU 应用程序.

重要提示

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 版本

  1. 验证您的集群是否受此错误影响,搜索具有空名称的标签

    $ 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"}}
    
  2. 作为一种解决方法,删除损坏的镜像流,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 维护授权。

  1. 查看来自 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.
    
  2. 查看来自 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