¿Por qué falla la instalación de mi controlador de GPU NVIDIA en los nodos trabajadores de RHEL 9?

Nube privada virtual Infraestructura clásica

Al intentar instalar los controladores de GPU de NVIDIA en los nodos trabajadores de Red Hat Enterprise Linux 9, la instalación falla con un error de repositorio.

En los registros del pod nvidia-driver-daemonset-* aparece un mensaje de error similar al siguiente:

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

Por ejemplo:

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

El operador de GPU de NVIDIA no habilita todos los repositorios de soporte de actualización extendida (EUS) necesarios para los nodos trabajadores de RHEL 9. Aunque los repositorios EUS ya están habilitados para los nodos trabajadores de RHEL 9 en Red Hat OpenShift on IBM Cloud, la instalación del controlador NVIDIA requiere una configuración adicional de los repositorios.

Aplique un ConfigMap para habilitar los repositorios EUS necesarios para la instalación del controlador de GPU NVIDIA.

  1. SSH a uno de sus nodos trabajadores RHEL 9 para recuperar los valores de configuración del repositorio requeridos.

    oc debug node/<worker-node-name>
    
  2. Accede al sistema de archivos del host.

    chroot /host
    
  3. Consulte la configuración del repositorio Red Hat para recuperar los valores necesarios.

    cat /etc/yum.repos.d/redhat.repo
    
  4. En la salida, localice la sección [rhel-9-for-x86_64-appstream-eus-rpms] y anote los siguientes valores:

    • baseurl- La base URL para el repositorio
    • sslclientkey- La ruta a la clave de cliente SSL (contiene un número de serie del certificado)
    • sslclientcert- La ruta al certificado de cliente SSL (contiene el mismo número de serie del certificado)

    El número de serie del certificado aparece tanto en la ruta sslclientkey como en sslclientcert. Por ejemplo, si las rutas son /etc/pki/entitlement-host/1234567890123456789-key.pem y /etc/pki/entitlement-host/1234567890123456789.pem, el número de serie del certificado es 1234567890123456789.

  5. Salir de la sesión de depuración.

    exit
    exit
    
  6. Cree un archivo ConfigMap llamado nvidia-driver-repo-config.yaml con el siguiente contenido. Sustituya NAMESPACE-GPU por el espacio de nombres en el que está instalado el controlador de la GPU, BASEURL por la base URL que recuperó y sustituya ambas instancias de CERT-SERIAL por el número de serie de su certificado.

    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. Aplique ConfigMap a su clúster.

    oc apply -f nvidia-driver-repo-config.yaml
    
  8. Edite la política del clúster para añadir la dirección ConfigMap a la sección repoConfig.

    oc edit clusterpolicy
    
  9. Añada el campo configMapName a la sección spec.repoConfig con el nombre de su ConfigMap.

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. Borre los pods daemonset del controlador NVIDIA para ciclarlos y aplicar la nueva configuración.

oc delete po nvidia-driver-daemonset-*

Tras el reinicio de los pods, el operador de GPU de NVIDIA puede acceder a los repositorios EUS necesarios e instalar correctamente los controladores de GPU en sus nodos trabajadores RHEL 9.