Perché l'installazione del driver della GPU NVIDIA fallisce sui nodi worker di RHEL 9?

Virtual Private Cloud Infrastruttura classica

Quando si tenta di installare i driver della GPU NVIDIA sui nodi worker Red Hat Enterprise Linux 9, l'installazione fallisce con un errore del repository.

Nei log del pod nvidia-driver-daemonset-* viene visualizzato un messaggio di errore simile al seguente:

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

Ad esempio:

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

L'Operatore GPU NVIDIA non abilita tutti i repository Extended Update Support (EUS) richiesti per i nodi worker di RHEL 9. Mentre i repository EUS sono ora abilitati per i nodi worker di RHEL 9 in Red Hat OpenShift on IBM Cloud, l'installazione del driver NVIDIA richiede un'ulteriore configurazione del repository.

Applicare un ConfigMap per abilitare i repository EUS richiesti per l'installazione del driver della GPU NVIDIA.

  1. SSH a uno dei nodi worker di RHEL 9 per recuperare i valori di configurazione del repository richiesti.

    oc debug node/<worker-node-name>
    
  2. Accedere al file system dell'host.

    chroot /host
    
  3. Visualizzare la configurazione del repository Red Hat per recuperare i valori richiesti.

    cat /etc/yum.repos.d/redhat.repo
    
  4. Nell'output, individuare la sezione [rhel-9-for-x86_64-appstream-eus-rpms] e annotare i seguenti valori:

    • baseurl- La base URL per il repository
    • sslclientkey- Il percorso della chiave client SSL (contiene il numero di serie del certificato)
    • sslclientcert- Il percorso del certificato client SSL (contiene lo stesso numero di serie del certificato)

    Il numero di serie del certificato appare in entrambi i percorsi sslclientkey e sslclientcert. Ad esempio, se i percorsi sono /etc/pki/entitlement-host/1234567890123456789-key.pem e /etc/pki/entitlement-host/1234567890123456789.pem, il numero di serie del certificato è 1234567890123456789.

  5. Esce dalla sessione di debug.

    exit
    exit
    
  6. Creare un file ConfigMap chiamato nvidia-driver-repo-config.yaml con il seguente contenuto. Sostituire NAMESPACE-GPU con lo spazio dei nomi in cui è installato il driver della GPU, BASEURL con la base URL recuperata e sostituire entrambe le istanze di CERT-SERIAL con il numero di serie del certificato.

    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. Applicare il sito ConfigMap al cluster.

    oc apply -f nvidia-driver-repo-config.yaml
    
  8. Modificare il criterio del cluster per aggiungere ConfigMap alla sezione repoConfig.

    oc edit clusterpolicy
    
  9. Aggiungete il campo configMapName alla sezione spec.repoConfig con il nome del vostro ConfigMap.

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. Eliminare i pod del driver daemonset NVIDIA per eliminarli e applicare la nuova configurazione.

oc delete po nvidia-driver-daemonset-*

Dopo il riavvio dei pod, il GPU Operator di NVIDIA può accedere ai repository EUS richiesti e installare con successo i driver GPU sui nodi worker RHEL 9.