Por que minha instalação do driver de GPU NVIDIA falha nos nós de trabalho do RHEL 9?

Nuvem privada virtual Infraestrutura clássica

Quando você tenta instalar drivers de GPU NVIDIA em nós de trabalho Red Hat Enterprise Linux 9, a instalação falha com um erro de repositório.

Você vê uma mensagem de erro nos logs do pod nvidia-driver-daemonset-* semelhante à seguinte:

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

Por exemplo:

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

O Operador de GPU NVIDIA não habilita todos os repositórios de Suporte a Atualizações Estendidas (EUS) necessários para os nós de trabalho do RHEL 9. Embora os repositórios EUS estejam agora habilitados para os nós de trabalho do RHEL 9 em Red Hat OpenShift on IBM Cloud, a instalação do driver NVIDIA requer configuração adicional do repositório.

Aplique um ConfigMap para ativar os repositórios EUS necessários para a instalação do driver da GPU NVIDIA.

  1. SSH em um dos nós de trabalho do RHEL 9 para recuperar os valores de configuração do repositório necessários.

    oc debug node/<worker-node-name>
    
  2. Acessar o sistema de arquivos do host.

    chroot /host
    
  3. Visualize a configuração do repositório Red Hat para recuperar os valores necessários.

    cat /etc/yum.repos.d/redhat.repo
    
  4. Na saída, localize a seção [rhel-9-for-x86_64-appstream-eus-rpms] e anote os seguintes valores:

    • baseurl- A base URL para o repositório
    • sslclientkey- O caminho para a chave do cliente SSL (contém um número de série do certificado)
    • sslclientcert- O caminho para o certificado do cliente SSL (contém o mesmo número de série do certificado)

    O número de série do certificado aparece nos caminhos sslclientkey e sslclientcert. Por exemplo, se os caminhos forem /etc/pki/entitlement-host/1234567890123456789-key.pem e /etc/pki/entitlement-host/1234567890123456789.pem, o número de série do certificado será 1234567890123456789.

  5. Sair da sessão de depuração.

    exit
    exit
    
  6. Crie um arquivo ConfigMap chamado nvidia-driver-repo-config.yaml com o seguinte conteúdo. Substitua NAMESPACE-GPU pelo namespace em que o driver da GPU está instalado, BASEURL pela base URL que você recuperou e substitua as duas instâncias de CERT-SERIAL pelo número de série do seu 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 o ConfigMap ao seu cluster.

    oc apply -f nvidia-driver-repo-config.yaml
    
  8. Edite a política do cluster para adicionar o ConfigMap à seção repoConfig.

    oc edit clusterpolicy
    
  9. Adicione o campo configMapName à seção spec.repoConfig com o nome do seu ConfigMap.

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. Exclua os pods do conjunto de daemons do driver NVIDIA para fazer o ciclo deles e aplicar a nova configuração.

oc delete po nvidia-driver-daemonset-*

Depois que os pods forem reiniciados, o operador de GPU NVIDIA poderá acessar os repositórios EUS necessários e instalar com êxito os drivers de GPU nos nós de trabalho do RHEL 9.