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-discoverynvidia-container-toolkit-daemonsetnvidia-cuda-validatornvidia-dcgmnvidia-dcgm-exporternvidia-device-plugin-daemonsetnvidia-driver-daemonsetnvidia-node-status-exporternvidia-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.
- Informieren Sie sich über die Einzelheiten der
nvidia-gpu-operator.
Beispielausgabeoc get po -n nvidia-gpu-operator -o wideNAME 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> - Informieren Sie sich über die Einzelheiten der Website
gpu-cluster-policyund vergewissern Sie sich, dass siereadylautet.
Beispielausgabeoc get clusterpolicies.nvidia.com gpu-cluster-policyNAME 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
-
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.
nvidia.com/gpu.deploy.operands=false. Weitere Informationen finden Sie unter Verhindern der Installation von Operanden auf einigen Knotennvidia.com/gpu.deploy.driver=false. Weitere Informationen finden Sie unter Verhindern der Installation des NVIDIA GPU-Treibers auf einigen Knoten
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.
-
Fügen Sie die
nvidia.com/gpu.deploy.driver=falsezu 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 -
Pods auflisten, um die Etiketten zu bestätigen.
oc get po -n nvidia-gpu-operator -o wideBeispielausgabe
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> -
Bestätigen Sie, dass die
gpu-cluster-policyreadyist.oc get clusterpolicies.nvidia.com gpu-cluster-policyBeispielausgabe
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.
-
Löschen Sie
nvidia-driver-installerDaemonSet. 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 -
Listen Sie die Pods auf und bestätigen Sie, dass der GPU-Treiber auf den RHCOS-Arbeitsknoten installiert ist und die restlichen Operanden
readysind.oc get po -n nvidia-gpu-operator -o wideBeispielausgabe
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> -
Bestätigen Sie, dass die
gpu-cluster-policybereit ist.oc get clusterpolicies.nvidia.com gpu-cluster-policyBeispielausgabe
NAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z -
Beschreiben Sie Ihre Knoten und bestätigen Sie die zuweisbaren GPUs.
oc describe noBeispielausgabe
... 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>