Migrazione delle risorse GPU di NVIDIA ai nodi worker RHCOS
Cloud privato virtuale
Esaminare i seguenti passaggi su come migrare le risorse dell'operatore GPU di NVIDIA dai nodi worker GPU di RHEL 8 ai nodi worker di RHCOS.
L'operatore GPU NVIDIA è composto dalle seguenti risorse:
gpu-feature-discoverynvidia-container-toolkit-daemonsetnvidia-cuda-validatornvidia-dcgmnvidia-dcgm-exporternvidia-device-plugin-daemonsetnvidia-driver-daemonsetnvidia-node-status-exporternvidia-operator-validator
Il componente principale di interesse è nvidia-driver-daemonset. Questo componente è responsabile dell'installazione del driver della GPU nel nodo worker GPU. Questi driver sono installati in modo diverso quando si utilizzano i nodi
worker RHEL 8 rispetto a quelli RHCOS.
Dichiarazione ufficiale dell'operatore GPU di NVIDIA: Tutti i nodi worker o i gruppi di nodi che eseguono carichi di lavoro GPU nel cluster Kubernetes devono eseguire la stessa versione del sistema operativo per utilizzare il contenitore NVIDIA GPU Driver. In alternativa, se si preinstalla il driver per GPU NVIDIA sui nodi, è possibile eseguire sistemi operativi diversi. Per ulteriori informazioni, vedere Installazione dell'operatore GPU NVIDIA.
L'operatore GPU di NVIDIA non è in grado di gestire simultaneamente le installazioni dei driver su diversi sistemi operativi dei nodi worker. Questa limitazione significa che se l'installazione del driver della GPU è gestita esclusivamente dall'operatore della GPU di NVIDIA, è necessaria una migrazione completa dell'installazione del driver quando si cambia sistema operativo del nodo worker.
Completare i seguenti passaggi per migrare le installazioni dei driver dell'operatore GPU NVIDIA da RHEL 8 ai nodi worker RHCOS. Questo esempio descrive in dettaglio le fasi di migrazione per la seguente configurazione di cluster:
Dettagli dell'ambiente iniziale
Esaminare i dettagli e le note per la migrazione di una versione Red Hat OpenShift on IBM Cloud 4.17 su VPC con nodi worker RHEL 8 alla versione 4.18 con nodi worker RHCOS.
La versione 4.18 supporta solo RHCOS e RHEL 9.
Prima di iniziare, accertarsi che il cluster soddisfi i seguenti requisiti.
- Un cluster VPC 4.17 con nodi worker RHEL 8 che utilizzano GPU flavor NVIDIA.
- L'operatore GPU NVIDIA, ClusterPolicy, e gli operandi sono tutti installati e
Ready.
- Ottieni i dettagli di
nvidia-gpu-operator.
Output di esempiooc 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> - Ottenere i dettagli di
gpu-cluster-policye assicurarsi che siaready.
Output di esempiooc get clusterpolicies.nvidia.com gpu-cluster-policyNAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z
Passo 1: Aggiornare il master del cluster
Esegui il seguente comando per aggiornare il master.
ibmcloud oc cluster master update --cluster <clusterNameOrID> --version 4.18_openshift
A questo punto, non aggiornare i nodi lavoratori a 4.18. Per ora, mantenete i lavoratori di RHEL 8 su 4.17.
Passo 2: Creare un pool di lavoratori del cluster RHCOS
-
Eseguire il seguente comando per creare un pool di lavoratori RHCOS.
ibmcloud oc worker-pool create vpc-gen2 \ --cluster <clusterNameOrID> \ --name <workerPoolName> \ --flavor <workerNodeFlavor> \ --size-per-zone <sizePerZoneCount> \ --operating-system RHCOS
Non aggiungere zone a questo pool di lavoratori RHCOS. Non ci dovrebbero essere lavoratori in questo pool di lavoratori.
Passo 3: Aggiungere le etichette del pool di lavoratori al pool di lavoratori RHCOS
Aggiungere le seguenti etichette al pool di lavoratori RHCOS.
nvidia.com/gpu.deploy.operands=false. Per ulteriori informazioni, vedere Impedire l'installazione degli operandi su alcuni nodinvidia.com/gpu.deploy.driver=false. Per ulteriori informazioni, vedere Impedire l'installazione del driver GPU NVIDIA su alcuni nodi
L'aggiunta di etichette al pool di lavoratori consente di avere le etichette dei nodi prima che i nodi lavoratori siano disponibili per il cluster. Questo assicura che le risorse GPU di NVIDIA non siano automaticamente pianificate dall'inizio. Se le risorse GPU NVIDA sono pianificate su nodi worker in cui non è possibile installare i driver, lo stato della risorsa ClusterPolicy si deteriora. I driver non possono ancora essere installati sui nodi worker RHCOS perché l'operatore GPU di NVIDIA è configurato per utilizzare il metodo di installazione di RHEL 8.
Eseguire il seguente comando per aggiungere etichette al pool di lavoratori.
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
Passo 4: Aggiungere i nodi worker RHCOS al cluster
Aggiungere capacità al cluster per consentire la migrazione del carico di lavoro. L'aggiunta di zone al pool di lavoratori attiva i nodi lavoratori per avviare il provisioning e unirsi al cluster. Si noti che le risorse GPU di NVIDIA non sono ancora distribuite sui nodi worker RHCOS.
ibmcloud oc zone add vpc-gen2 \
--cluster <clusterNameOrID> \
--worker-pool <workerPoolNameOrID> \
--subnet-id <vpcSubnetID> \
--zone <vpcZone>
A questo punto, i nodi worker RHCOS sono disponibili nel cluster per iniziare la migrazione.
Passo 5: Cambiare il programma di installazione dei driver sui nodi worker RHEL 8 in unmanaged
Aggiungere l'etichetta nvidia.com/gpu.deploy.driver=false ai nodi worker di RHEL 8. Questa etichetta annulla lo scheduling dei pod dell'installatore di driver esistenti dai lavoratori di RHEL 8. Il driver non deve essere disinstallato.
Altri operandi, compresi i plug-in dei dispositivi, rimangono sui lavoratori di RHEL 8. Lo stato ClusterPolicy rimane pronto. Poiché il driver è ancora installato e il plug-in del dispositivo è in esecuzione, i carichi di lavoro
della GPU continuano a funzionare.
-
Aggiungere
nvidia.com/gpu.deploy.driver=falseai nodi worker di RHEL 8.Per assegnare un'etichetta a un singolo nodo di lavoro:
oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=false"Per etichettare un intero pool di lavoratori:
ibmcloud oc worker-pool label set \ --cluster <clusterNameOrID> \ --worker-pool <workerPoolNameOrID> \ --label nvidia.com/gpu.deploy.driver=false -
Elencare i baccelli per confermare le etichette.
oc get po -n nvidia-gpu-operator -o wideOutput di esempio
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> -
Confermare che
gpu-cluster-policyèready.oc get clusterpolicies.nvidia.com gpu-cluster-policyOutput di esempio
NAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z
Passo 6: Pianificare l'installatore di driver e altri comandi ai nodi worker RHCOS
Aggiungere i siti nvidia.com/gpu.deploy.driver=true e nvidia.com/gpu.deploy.operands=true ai lavoratori RHCOS.
L'aggiunta di queste etichette tenta di pianificare l'installatore del driver, il plug-in del dispositivo e altri operandi ai nodi worker RHCOS. La maggior parte dei pod si trova nello stato init a causa del fallimento dell'installazione
del driver. Il programma di installazione del driver non riesce perché sta tentando di installare il driver utilizzando il metodo RHEL 8.
Eseguire il comando label nodes per aggiungere le etichette.
Per assegnare un'etichetta a un singolo nodo di lavoro:
oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=true"
oc label nodes <nodeName> "nvidia.com/gpu.deploy.operands=true"
Per etichettare un intero pool di lavoratori:
ibmcloud oc worker-pool label set \
--cluster <clusterNameOrID> \
--worker-pool <workerPoolNameOrID> \
--label nvidia.com/gpu.deploy.driver=true
Dopo aver aggiunto le etichette, proseguire con il passaggio successivo.
Passo 7: Conversione del programma di installazione dei driver da RHEL 8 al metodo di installazione RHCOS
Cancellare nvidia-driver-installer DaemonSet. Questo DaemonSet è specifico di RHEL 8 e non è più necessario. L'operatore GPU riconcilia e rileva la presenza di un nodo worker RHCOS nel cluster. L'operatore GPU ricrea il programma
di installazione dei driver DaemonSet, ma ora con il metodo di installazione RHCOS basato su OpenShift Driver Toolkit.
-
Cancellare
nvidia-driver-installerDaemonSet. Dopo aver cancellato DaemonSet,, non aggiungere o ricaricare nessuno dei GPU Worker di RHEL 8.oc delete daemonset -n nvidia-gpu-operator nvidia-driver-installer -
Elencare i pod e confermare che il driver GPU è installato sui nodi worker RHCOS e che gli operandi rimanenti sono
ready.oc get po -n nvidia-gpu-operator -o wideOutput di esempio
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> -
Confermare che il sito
gpu-cluster-policyè pronto.oc get clusterpolicies.nvidia.com gpu-cluster-policyOutput di esempio
NAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z -
Descrivere i nodi e confermare le GPU allocabili.
oc describe noOutput di esempio
... Capacity: nvidia.com/gpu: 1 ... Allocatable: nvidia.com/gpu: 1
Passo 8: Migrare i carichi di lavoro dipendenti dalla GPU ai nodi worker RHCOS
Ora che i nodi worker GPU RHCOS hanno installato il driver GPU e sono pronti per la schedulazione, migrare i carichi di lavoro dipendenti dalla GPU sui nodi worker RHCOS.
-
Migrare per pod cordonando il nodo ed eliminando i singoli pod.
oc adm cordon no/<nodeName> oc delete po -n <namespace> <podName> -
Migrare per Node drenando i nodi. Per ulteriori informazioni, vedere Drenaggio sicuro di un nodo.
-
Migrare per pool di lavoratori eliminando l'intero pool di lavoratori di RHEL.
ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>
Passo 9: Rimuovere le etichette dal pool di lavoratori RHCOS
Rimuovere le etichette dei pool di lavoratori aggiunte in un passaggio precedente. Questa rimozione assicura che i nuovi nodi worker RHCOS forniti in seguito non abbiano queste etichette e che i componenti GPU di NVIDIA vengano installati automaticamente.
Passo 10: Ridurre o eliminare il pool di lavoratori di RHEL 8
A questo punto, la migrazione del driver della GPU NVIDIA è completa. È possibile ridurre o eliminare i pool di lavoratori RHEL.
ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>