为什么我的 NVIDIA GPU 驱动程序在 RHEL 9 工作节点上安装失败?

虚拟私有云 传统基础设施

当您尝试在 Red Hat Enterprise Linux 9 工作节点上安装 NVIDIA GPU 驱动程序时,安装会失败,并出现版本库错误。

您会在 nvidia-driver-daemonset-* pod 日志中看到类似下面的错误信息:

Error: Unable to find a match: kernel-headers-VERSION kernel-devel-VERSION

例如:

Error: Unable to find a match: kernel-headers-5.14.0-570.112.1.el9_6.x86_64 kernel-devel-5.14.0-570.112.1.el9_6.x86_64

NVIDIA GPU 操作员无法为 RHEL 9 工作节点启用所有必需的扩展更新支持 (EUS) 资源库。 虽然 EUS 资源库已在 Red Hat OpenShift on IBM Cloud 中为 RHEL 9 工作节点启用,但 NVIDIA 驱动程序的安装需要额外的资源库配置。

应用 ConfigMap 启用 NVIDIA GPU 驱动程序安装所需的 EUS 资源库。

  1. 通过 SSH 连接到其中一个 RHEL 9 工作节点,获取所需的版本库配置值。

    oc debug node/<worker-node-name>
    
  2. 访问主机文件系统

    chroot /host
    
  3. 查看 Red Hat 资源库配置,检索所需数值。

    cat /etc/yum.repos.d/redhat.repo
    
  4. 从输出结果中找到 [rhel-9-for-x86_64-appstream-eus-rpms] 部分,并记下以下值:

    • baseurl- 资源库的基本 URL
    • sslclientkey- SSL 客户端密钥的路径(包含证书序列号)
    • sslclientcert- SSL 客户端证书的路径(包含相同的证书序列号)

    证书序列号同时出现在 sslclientkeysslclientcert 路径中。 例如,如果路径是 /etc/pki/entitlement-host/1234567890123456789-key.pem/etc/pki/entitlement-host/1234567890123456789.pem,证书序列号就是 1234567890123456789

  5. 退出调试会话。

    exit
    exit
    
  6. 创建 ConfigMap 文件,文件名为 nvidia-driver-repo-config.yaml,内容如下。 将 NAMESPACE-GPU 替换为安装 GPU 驱动程序的命名空间,将 BASEURL 替换为您获取的基本 URL,并将 CERT-SERIAL 的两个实例都替换为您的证书序列号。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nvidia-driver-repo-config
      namespace: NAMESPACE-GPU
    data:
      rhel9.repo: |
        [ibm-rhel-9-for-x86_64-appstream-eus-rpms]
        name = Red Hat Enterprise Linux 9 for x86_64 - AppStream - Extended Update Support (RPMs)
        baseurl = BASEURL/pulp/repos/customer/Library/content/eus/rhel9/9.6/x86_64/appstream/os
        enabled = 1
        gpgcheck = 1
        gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
        sslverify = 1
        sslcacert = /etc/rhsm-host/ca/katello-server-ca.pem
        sslclientkey = /etc/pki/entitlement-host/CERT-SERIAL-key.pem
        sslclientcert = /etc/pki/entitlement-host/CERT-SERIAL.pem
        metadata_expire = 1
        enabled_metadata = 0
    
  7. 将 ConfigMap 应用到群集。

    oc apply -f nvidia-driver-repo-config.yaml
    
  8. 编辑群集策略,将 ConfigMap 添加到 repoConfig 部分。

    oc edit clusterpolicy
    
  9. configMapName 字段添加到 spec.repoConfig 部分,并输入您的 ConfigMap 名称。

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. 删除 NVIDIA 驱动程序守护进程 pod,使其循环并应用新配置。

oc delete po nvidia-driver-daemonset-*

pod 重启后,NVIDIA GPU 操作员可以访问所需的 EUS 资源库,并在 RHEL 9 工作节点上成功安装 GPU 驱动程序。