Migration von NVIDIA GPU-Ressourcen auf RHCOS-Arbeitsknoten

Virtuelle Private Cloud

Lesen Sie die folgenden Schritte zur Migration Ihrer NVIDIA GPU-Operator-Ressourcen von RHEL 8 GPU-Arbeitsknoten auf RHCOS-Arbeitsknoten.

Der NVIDIA GPU-Operator besteht aus den folgenden Ressourcen:

  • gpu-feature-discovery
  • nvidia-container-toolkit-daemonset
  • nvidia-cuda-validator
  • nvidia-dcgm
  • nvidia-dcgm-exporter
  • nvidia-device-plugin-daemonset
  • nvidia-driver-daemonset
  • nvidia-node-status-exporter
  • nvidia-operator-validator

Die wichtigste Komponente von Interesse ist nvidia-driver-daemonset. Diese Komponente ist für die Installation des GPU-Treibers auf dem GPU-Arbeitsknoten zuständig. Diese Treiber werden für RHEL 8 und RHCOS Worker Nodes unterschiedlich installiert.

Offizielle Erklärung von NVIDIA GPU operator: Alle Arbeitsknoten oder Knotengruppen, die GPU-Workloads im Kubernetes Cluster ausführen, müssen dieselbe Betriebssystemversion ausführen, um den NVIDIA GPU Driver Container zu verwenden. Wenn Sie alternativ den NVIDIA GPU-Treiber auf den Knoten vorinstallieren, können Sie verschiedene Betriebssysteme ausführen. Weitere Informationen finden Sie unter Installieren des NVIDIA GPU-Operators.

Der NVIDIA GPU-Operator ist nicht in der Lage, Treiberinstallationen auf verschiedenen Worker-Node-Betriebssystemen gleichzeitig zu verwalten. Diese Einschränkung bedeutet, dass, wenn die GPU-Treiberinstallation ausschließlich vom NVIDIA GPU-Betreiber verwaltet wird, bei einem Wechsel des Worker-Node-Betriebssystems eine vollständige Migration der Treiberinstallation erforderlich ist.

Führen Sie die folgenden Schritte aus, um NVIDIA GPU-Operator-Treiberinstallationen von RHEL 8 auf RHCOS-Arbeitsknoten zu migrieren. In diesem Beispiel werden die Migrationsschritte speziell für die folgende Clusterkonfiguration beschrieben:

Details zur anfänglichen Umgebung

Lesen Sie die Details und Hinweise zur Migration einer Red Hat OpenShift on IBM Cloud Version 4.17 auf VPC mit RHEL 8-Arbeitsknoten auf die Version 4.18 mit RHCOS-Arbeitsknoten.

Die Version 4.18 unterstützt nur RHCOS und RHEL 9.

Bevor Sie beginnen, stellen Sie sicher, dass der Cluster die folgenden Anforderungen erfüllt.

  • Ein 4.17 VPC-Cluster mit RHEL 8 Worker Nodes unter Verwendung von NVIDIA GPU Flavors.
  • Der NVIDIA GPU-Operator, ClusterPolicy, und die Operanden sind alle installiert und Ready.
  1. Informieren Sie sich über die Einzelheiten der nvidia-gpu-operator.
    oc get po -n nvidia-gpu-operator -o wide
    
    Beispielausgabe
    NAME                                       READY   STATUS      RESTARTS   AGE     IP               NODE          NOMINATED NODE   READINESS GATES
    gpu-feature-discovery-ng7zn                1/1     Running     0          6m6s    172.23.145.152   10.240.0.15   <none>           <none>
    gpu-operator-678b489684-7zgkq              1/1     Running     0          45h     172.23.145.135   10.240.0.15   <none>           <none>
    nvidia-container-toolkit-daemonset-j4dzs   1/1     Running     0          6m6s    172.23.145.143   10.240.0.15   <none>           <none>
    nvidia-cuda-validator-l44mz                0/1     Completed   0          2m28s   172.23.145.236   10.240.0.15   <none>           <none>
    nvidia-dcgm-7sfvn                          1/1     Running     0          6m7s    172.23.145.180   10.240.0.15   <none>           <none>
    nvidia-dcgm-exporter-s5k48                 1/1     Running     0          6m6s    172.23.145.172   10.240.0.15   <none>           <none>
    nvidia-device-plugin-daemonset-xhds2       1/1     Running     0          6m6s    172.23.145.191   10.240.0.15   <none>           <none>
    nvidia-driver-daemonset-mjqls              1/1     Running     0          7m1s    172.23.145.145   10.240.0.15   <none>           <none>
    nvidia-node-status-exporter-5kvs4          1/1     Running     0          7m16s   172.23.145.235   10.240.0.15   <none>           <none>
    nvidia-operator-validator-pz7wm            1/1     Running     0          6m7s    172.23.145.153   10.240.0.15   <none>           <none>
    
  2. Informieren Sie sich über die Einzelheiten der Website gpu-cluster-policy und vergewissern Sie sich, dass sie ready lautet.
    oc get clusterpolicies.nvidia.com gpu-cluster-policy
    
    Beispielausgabe
    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    

Schritt 1: Aktualisieren des Clustermasters

Führen Sie den folgenden Befehl aus, um den Master zu aktualisieren.

ibmcloud oc cluster master update --cluster <clusterNameOrID> --version 4.18_openshift

Zu diesem Zeitpunkt sollten Sie die Arbeiterknoten nicht auf 4.18 aktualisieren. Lassen Sie Ihre RHEL 8 Worker vorerst auf 4.17.

Schritt 2: Erstellen eines RHCOS-Cluster-Arbeiterpools

  1. Führen Sie den folgenden Befehl aus, um einen RHCOS-Arbeiterpool zu erstellen.

    ibmcloud oc worker-pool create vpc-gen2 \
        --cluster <clusterNameOrID> \
        --name <workerPoolName> \
        --flavor <workerNodeFlavor> \
        --size-per-zone <sizePerZoneCount> \
        --operating-system RHCOS
    

Fügen Sie diesem RHCOS-Arbeiterpool keine Zonen hinzu. In diesem Arbeitskräftepool sollten sich keine Arbeitnehmer befinden.

Schritt 3: Hinzufügen von Arbeitspool-Labels zum RHCOS-Arbeitspool

Fügen Sie Ihrem RHCOS-Arbeiterpool die folgenden Labels hinzu.

Durch das Hinzufügen von Labels zum Worker-Pool können Knoten-Labels existieren, bevor die Worker-Knoten für den Cluster verfügbar sind. Dadurch wird sichergestellt, dass NVIDIA GPU-Ressourcen nicht automatisch von Anfang an eingeplant werden. Wenn NVIDA-GPU-Ressourcen auf Worker-Knoten eingeplant werden, auf denen keine Treiber installiert werden können, verschlechtert sich der Status der Ressource ClusterPolicy. Treiber können noch nicht auf RHCOS-Arbeitsknoten installiert werden, da der NVIDIA GPU-Operator so konfiguriert ist, dass er die RHEL 8-Installationsmethode verwendet.

Führen Sie den folgenden Befehl aus, um Ihrem Worker-Pool Labels hinzuzufügen.

ibmcloud oc worker-pool label set \
    --cluster <clusterNameOrID> \
    --worker-pool <workerPoolNameOrID> \
    --label nvidia.com/gpu.deploy.operands=false \
    --label nvidia.com/gpu.deploy.driver=false

Schritt 4: Hinzufügen von RHCOS-Arbeitsknoten zum Cluster

Erhöhen Sie die Kapazität Ihres Clusters, um eine Workload-Migration zu ermöglichen. Das Hinzufügen von Zonen zum Worker-Pool veranlasst die Worker-Knoten, mit der Bereitstellung zu beginnen und dem Cluster beizutreten. Beachten Sie, dass die NVIDIA GPU-Ressourcen noch nicht auf den RHCOS-Arbeitsknoten eingesetzt werden.

ibmcloud oc zone add vpc-gen2 \
    --cluster <clusterNameOrID> \
    --worker-pool <workerPoolNameOrID> \
    --subnet-id <vpcSubnetID> \
    --zone <vpcZone>

Zu diesem Zeitpunkt sind RHCOS-Arbeitsknoten im Cluster verfügbar, um mit der Migration zu beginnen.

Schritt 5: Ändern Sie das Treiber-Installationsprogramm auf den RHEL 8-Arbeitsknoten in unmanaged

Fügen Sie das Etikett nvidia.com/gpu.deploy.driver=false zu Ihren RHEL 8-Arbeitsknoten hinzu. Dieses Etikett hebt die Einplanung der vorhandenen Treiberinstallationspods von den RHEL 8-Arbeitern auf. Der Treiber darf nicht deinstalliert werden. Andere Operanden, einschließlich Geräte-Plug-ins, verbleiben bei den RHEL 8-Arbeitern. Der Zustand ClusterPolicy bleibt bestehen. Da der Treiber weiterhin installiert ist und das Geräte-Plug-in ausgeführt wird, sind GPU-Arbeitslasten weiterhin funktionsfähig.

  1. Fügen Sie die nvidia.com/gpu.deploy.driver=false zu RHEL 8-Arbeitsknoten hinzu.

    So kennzeichnen Sie einen einzelnen Worker-Knoten:

    oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=false"
    

    Um einen gesamten Arbeitsvorrat zu kennzeichnen:

    ibmcloud oc worker-pool label set \
        --cluster <clusterNameOrID> \
        --worker-pool <workerPoolNameOrID> \
        --label nvidia.com/gpu.deploy.driver=false
    
  2. Pods auflisten, um die Etiketten zu bestätigen.

    oc get po -n nvidia-gpu-operator -o wide
    

    Beispielausgabe

    NAME                                       READY   STATUS        RESTARTS   AGE     IP               NODE          NOMINATED NODE   READINESS GATES
    gpu-feature-discovery-ng7zn                1/1     Running       0          4h27m   172.23.145.152   10.240.0.15   <none>           <none>
    gpu-operator-678b489684-7zgkq              1/1     Running       0          2d2h    172.23.145.135   10.240.0.15   <none>           <none>
    nvidia-container-toolkit-daemonset-j4dzs   1/1     Running       0          4h27m   172.23.145.143   10.240.0.15   <none>           <none>
    nvidia-cuda-validator-l44mz                0/1     Completed     0          4h24m   172.23.145.236   10.240.0.15   <none>           <none>
    nvidia-dcgm-7sfvn                          1/1     Running       0          4h27m   172.23.145.180   10.240.0.15   <none>           <none>
    nvidia-dcgm-exporter-s5k48                 1/1     Running       0          4h27m   172.23.145.172   10.240.0.15   <none>           <none>
    nvidia-device-plugin-daemonset-xhds2       1/1     Running       0          4h27m   172.23.145.191   10.240.0.15   <none>           <none>
    nvidia-driver-daemonset-mjqls              1/1     Terminating   0          4h28m   172.23.145.145   10.240.0.15   <none>           <none>
    nvidia-node-status-exporter-5kvs4          1/1     Running       0          4h28m   172.23.145.235   10.240.0.15   <none>           <none>
    nvidia-operator-validator-pz7wm            1/1     Running       0          4h27m   172.23.145.153   10.240.0.15   <none>           <none>
    
  3. Bestätigen Sie, dass die gpu-cluster-policy ready ist.

    oc get clusterpolicies.nvidia.com gpu-cluster-policy
    

    Beispielausgabe

    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    

Schritt 6: Planen Sie das Treiberinstallationsprogramm und andere Operanden für RHCOS-Arbeitsknoten

Fügen Sie nvidia.com/gpu.deploy.driver=true und nvidia.com/gpu.deploy.operands=true zu Ihren RHCOS-Arbeitern hinzu.

Durch Hinzufügen dieser Kennzeichnungen wird versucht, das Treiberinstallationsprogramm, das Geräte-Plug-in und andere Operanden für die RHCOS-Arbeitsknoten einzuplanen. Die meisten Pods befinden sich im Zustand init, weil die Treiberinstallation fehlgeschlagen ist. Das Treiberinstallationsprogramm schlägt fehl, weil es versucht, den Treiber mit der RHEL 8-Methode zu installieren.

Führen Sie den Befehl label nodes aus, um Etiketten hinzuzufügen.

So kennzeichnen Sie einen einzelnen Worker-Knoten:

oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=true"
oc label nodes <nodeName> "nvidia.com/gpu.deploy.operands=true"

Um einen gesamten Arbeitsvorrat zu kennzeichnen:

ibmcloud oc worker-pool label set \
    --cluster <clusterNameOrID> \
    --worker-pool <workerPoolNameOrID> \
    --label nvidia.com/gpu.deploy.driver=true

Nachdem Sie die Etiketten hinzugefügt haben, fahren Sie mit dem nächsten Schritt fort.

Schritt 7: Konvertieren des Treiberinstallationsprogramms von RHEL 8 in die RHCOS-Installationsmethode

Löschen Sie nvidia-driver-installer DaemonSet. Diese DaemonSet ist spezifisch für RHEL 8 und wird nicht mehr benötigt. Der GPU-Operator führt einen Abgleich durch und stellt fest, dass ein RHCOS-Arbeitsknoten im Cluster vorhanden ist. Der GPU-Operator erstellt das Treiber-Installationsprogramm DaemonSet, neu, jetzt aber mit der RHCOS-Installationsmethode auf der Grundlage von OpenShift Driver Toolkit.

  1. Löschen Sie nvidia-driver-installer DaemonSet. Nachdem Sie DaemonSet, gelöscht haben, fügen Sie keinen der RHEL 8 GPU-Worker hinzu oder laden ihn neu.

    oc delete daemonset -n nvidia-gpu-operator nvidia-driver-installer
    
  2. Listen Sie die Pods auf und bestätigen Sie, dass der GPU-Treiber auf den RHCOS-Arbeitsknoten installiert ist und die restlichen Operanden ready sind.

    oc get po -n nvidia-gpu-operator -o wide
    

    Beispielausgabe

    NAME                                                  READY   STATUS      RESTARTS      AGE     IP               NODE                                                     NOMINATED NODE   READINESS GATES
    gpu-feature-discovery-h4bhx                           1/1     Running     0             18m     172.23.137.119   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    gpu-feature-discovery-ng7zn                           1/1     Running     0             4h58m   172.23.145.152   10.240.0.15                                              <none>           <none>
    gpu-operator-678b489684-7zgkq                         1/1     Running     0             2d2h    172.23.145.135   10.240.0.15                                              <none>           <none>
    nvidia-container-toolkit-daemonset-79j86              1/1     Running     0             18m     172.23.137.115   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-container-toolkit-daemonset-j4dzs              1/1     Running     0             4h58m   172.23.145.143   10.240.0.15                                              <none>           <none>
    nvidia-cuda-validator-l44mz                           0/1     Completed   0             4h55m   172.23.145.236   10.240.0.15                                              <none>           <none>
    nvidia-cuda-validator-xgscz                           0/1     Completed   0             15m     172.23.137.121   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-dcgm-7sfvn                                     1/1     Running     0             4h58m   172.23.145.180   10.240.0.15                                              <none>           <none>
    nvidia-dcgm-9rpnz                                     1/1     Running     0             18m     172.23.137.117   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-dcgm-exporter-s5k48                            1/1     Running     0             4h58m   172.23.145.172   10.240.0.15                                              <none>           <none>
    nvidia-dcgm-exporter-x8vlc                            1/1     Running     2 (14m ago)   18m     172.23.137.116   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-device-plugin-daemonset-7g5hz                  1/1     Running     0             18m     172.23.137.120   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-device-plugin-daemonset-xhds2                  1/1     Running     0             4h58m   172.23.145.191   10.240.0.15                                              <none>           <none>
    nvidia-driver-daemonset-416.94.202502260030-0-dkcmh   2/2     Running     0             19m     172.23.137.107   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-node-status-exporter-5kvs4                     1/1     Running     0             5h      172.23.145.235   10.240.0.15                                              <none>           <none>
    nvidia-node-status-exporter-94v9f                     1/1     Running     0             19m     172.23.137.110   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-operator-validator-4wk6z                       1/1     Running     0             18m     172.23.137.118   test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8   <none>           <none>
    nvidia-operator-validator-pz7wm                       1/1     Running     0             4h58m   172.23.145.153   10.240.0.15                                              <none>           <none>
    
  3. Bestätigen Sie, dass die gpu-cluster-policy bereit ist.

    oc get clusterpolicies.nvidia.com gpu-cluster-policy
    

    Beispielausgabe

    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    
  4. Beschreiben Sie Ihre Knoten und bestätigen Sie die zuweisbaren GPUs.

    oc describe no
    

    Beispielausgabe

    ...
    Capacity:
    nvidia.com/gpu:     1
    ...
    Allocatable:
    nvidia.com/gpu:     1
    

Schritt 8: Migrieren Sie GPU-abhängige Workloads auf Ihre RHCOS-Arbeitsknoten

Nachdem die RHCOS-GPU-Arbeitsknoten den GPU-Treiber installiert haben und für die Planung bereit sind, migrieren Sie GPU-abhängige Workloads auf die RHCOS-Arbeitsknoten.

  • Migrieren Sie pro Pod, indem Sie Knoten abgrenzen und einzelne Pods löschen.

    oc adm cordon no/<nodeName>
    oc delete po -n <namespace> <podName>
    
  • Migrieren Sie per Node, indem Sie Knotenpunkte entleeren. Weitere Informationen finden Sie unter Sicheres Entleeren eines Knotens.

  • Migrieren Sie pro Worker-Pool, indem Sie Ihren gesamten RHEL Worker-Pool löschen.

    ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>
    

Schritt 9: Entfernen Sie Etiketten aus Ihrem RHCOS-Arbeiterpool

Entfernen Sie die in einem früheren Schritt hinzugefügten Worker-Pool-Etiketten. Durch diese Entfernung wird sichergestellt, dass neue RHCOS-Arbeitsknoten, die danach bereitgestellt werden, diese Kennzeichnungen nicht haben und die NVIDIA GPU-Komponenten automatisch installiert werden.

Schritt 10: Verkleinern oder Löschen des RHEL 8-Arbeiterpools

Zu diesem Zeitpunkt ist die Migration des NVIDIA GPU-Treibers abgeschlossen. Sie können Ihre RHEL-Arbeiterpools verkleinern oder löschen.

ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>