NVIDIA GPUドライバのインストールがRHEL 9のワーカーノードで失敗するのはなぜですか?

仮想プライベートクラウド クラシック・インフラストラクチャー Satellite

Red Hat Enterprise Linux 9 ワーカーノードに NVIDIA GPU ドライバをインストールしようとすると、リポジトリエラーでインストールに失敗します。

nvidia-driver-daemonset-* のポッドログに、以下のようなエラーメッセージが表示されます:

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 Operatorは、RHEL 9ワーカーノードで必要なすべてのExtended Update Support (EUS)リポジトリを有効にしません。 Red Hat OpenShift on IBM Cloud の RHEL 9 ワーカー・ノードでは EUS リポジトリが有効になっていますが、 NVIDIA ドライバのインストールには追加のリポジトリ設定が必要です。

NVIDIA GPU ドライバのインストールに必要な EUS リポジト リを有効にするために、 ConfigMap を適用します。

  1. RHEL 9 ワーカーノードの 1 つに SSH して、必要なリポジトリ設定値を取得します。

    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. 以下の内容で、 nvidia-driver-repo-config.yaml という名前の ConfigMap ファイルを作成する。 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. spec.repoConfig セクションに、 ConfigMap の名前で configMapName フィールドを追加する。

    spec:
      ...
      repoConfig:
        configMapName: nvidia-driver-repo-config
      ...
    
  10. NVIDIA ドライバのデーモンセット・ポッドを削除して循環させ、新しい設定を適用する。

oc delete po nvidia-driver-daemonset-*

ポッドの再起動後、 NVIDIA GPU Operator は必要な EUS リポジトリにアクセスし、RHEL 9 ワーカーノードに GPU ドライバを正常にインストールできます。