Warum schlägt die Installation meines NVIDIA GPU-Treibers auf RHEL 9 Worker Nodes fehl?

Virtuelle Private Cloud Klassische Infrastruktur

Wenn Sie versuchen, NVIDIA GPU-Treiber auf Red Hat Enterprise Linux 9 Worker Nodes zu installieren, schlägt die Installation mit einem Repository-Fehler fehl.

In den Pod-Protokollen von nvidia-driver-daemonset-* wird eine Fehlermeldung ähnlich der folgenden angezeigt:

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

Zum Beispiel:

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

Der NVIDIA GPU Operator aktiviert nicht alle erforderlichen Extended Update Support (EUS) Repositories für RHEL 9 Worker Nodes. Während EUS-Repositories jetzt für RHEL 9 Worker Nodes in Red Hat OpenShift on IBM Cloud aktiviert sind, erfordert die Installation des NVIDIA Treibers eine zusätzliche Repository-Konfiguration.

Wenden Sie eine ConfigMap an, um die erforderlichen EUS-Repositories für die Installation des NVIDIA GPU-Treibers zu aktivieren.

  1. Verbinden Sie sich per SSH mit einem Ihrer RHEL 9 Worker Nodes, um die erforderlichen Repository-Konfigurationswerte abzurufen.

    oc debug node/<worker-node-name>
    
  2. Zugriff auf das Host-Dateisystem.

    chroot /host
    
  3. Rufen Sie die Red Hat Repository-Konfiguration auf, um die erforderlichen Werte abzurufen.

    cat /etc/yum.repos.d/redhat.repo
    
  4. Suchen Sie in der Ausgabe den Abschnitt [rhel-9-for-x86_64-appstream-eus-rpms] und notieren Sie die folgenden Werte:

    • baseurl- Die Basis URL für das Repository
    • sslclientkey- Der Pfad zum SSL Client-Schlüssel (enthält eine Zertifikatsseriennummer)
    • sslclientcert- Der Pfad zum SSL Client-Zertifikat (enthält die gleiche Zertifikatsseriennummer)

    Die Seriennummer des Zertifikats erscheint sowohl im Pfad sslclientkey als auch sslclientcert. Wenn die Pfade beispielsweise /etc/pki/entitlement-host/1234567890123456789-key.pem und /etc/pki/entitlement-host/1234567890123456789.pem sind, lautet die Seriennummer des Zertifikats 1234567890123456789.

  5. Beenden Sie die Debug-Sitzung.

    exit
    exit
    
  6. Erstellen Sie eine Datei ConfigMap mit dem Namen nvidia-driver-repo-config.yaml und folgendem Inhalt. Ersetzen Sie NAMESPACE-GPU durch den Namespace, in dem der GPU-Treiber installiert ist, BASEURL durch die Basis URL, die Sie abgerufen haben, und ersetzen Sie beide Instanzen von CERT-SERIAL durch die Seriennummer Ihres Zertifikats.

    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. Wenden Sie die ConfigMap auf Ihren Cluster an.

    oc apply -f nvidia-driver-repo-config.yaml
    
  8. Bearbeiten Sie die Cluster-Richtlinie, um die ConfigMap zum Abschnitt repoConfig hinzuzufügen.

    oc edit clusterpolicy
    
  9. Fügen Sie das Feld configMapName in den Abschnitt spec.repoConfig mit dem Namen Ihres ConfigMap ein.

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. Löschen Sie die NVIDIA Treiber-Daemonset-Pods, um sie zu beenden und die neue Konfiguration anzuwenden.

oc delete po nvidia-driver-daemonset-*

Nach dem Neustart der Pods kann der NVIDIA GPU Operator auf die erforderlichen EUS-Repositories zugreifen und die GPU-Treiber erfolgreich auf Ihren RHEL 9 Worker Nodes installieren.