Migration des ressources GPU de NVIDIA vers les nœuds de travail RHCOS

Cloud privé virtuel

Consultez les étapes suivantes pour savoir comment migrer vos ressources d'opérateur GPU NVIDIA des nœuds de travail GPU RHEL 8 vers les nœuds de travail RHCOS.

L'opérateur GPU NVIDIA se compose des ressources suivantes :

  • 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

La principale composante d'intérêt est nvidia-driver-daemonset. Ce composant est responsable de l'installation du pilote GPU dans le nœud de travail GPU. Ces pilotes sont installés différemment selon qu'il s'agit de nœuds de travail RHEL 8 ou RHCOS.

Déclaration officielle de NVIDIA GPU operator: Tous les nœuds ou groupes de nœuds qui exécutent des charges de travail GPU dans le cluster Kubernetes doivent utiliser la même version du système d'exploitation pour utiliser le conteneur GPU Driver de NVIDIA. Par ailleurs, si vous préinstallez le pilote GPU NVIDIA sur les nœuds, vous pouvez faire fonctionner différents systèmes d'exploitation. Pour plus d'informations, voir Installation de l'opérateur GPU NVIDIA.

L'opérateur GPU NVIDIA n'est pas en mesure de gérer simultanément les installations de pilotes sur différents systèmes d'exploitation de nœuds de travail. Cette limitation signifie que si l'installation du pilote du GPU est uniquement gérée par l'opérateur du GPU NVIDIA, une migration complète de l'installation du pilote est nécessaire en cas de changement de système d'exploitation du nœud de travail.

Effectuez les étapes suivantes pour migrer les installations de pilotes d'opérateur GPU NVIDIA de RHEL 8 vers les nœuds de travail RHCOS. Cet exemple décrit plus précisément les étapes de migration pour la configuration de cluster suivante :

Détails de l'environnement initial

Examinez les détails et les notes pour la migration d'une version Red Hat OpenShift on IBM Cloud 4.17 sur VPC avec des nœuds de travail RHEL 8 vers la version 4.18 avec des nœuds de travail RHCOS.

La version 4.18 ne prend en charge que RHCOS et RHEL 9.

Avant de commencer, assurez-vous que le cluster répond aux exigences suivantes.

  • Un cluster VPC 4.17 avec des nœuds de travail RHEL 8 utilisant des saveurs GPU NVIDIA.
  • L'opérateur GPU NVIDIA, ClusterPolicy, et les opérandes sont tous installés et Ready.
  1. Obtenez les détails du site nvidia-gpu-operator.
    oc get po -n nvidia-gpu-operator -o wide
    
    Exemple de sortie
    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. Obtenez les coordonnées du site gpu-cluster-policy et assurez-vous qu'il s'agit bien du site ready.
    oc get clusterpolicies.nvidia.com gpu-cluster-policy
    
    Exemple de sortie
    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    

Étape 1 : Mise à jour du maître de la grappe

Exécutez la commande suivante pour mettre à jour le serveur maître.

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

À ce stade, ne mettez pas à niveau les nœuds de travailleurs vers 4.18. Pour l'instant, gardez vos travailleurs RHEL 8 sur 4.17.

Étape 2 : Créer un pool de travailleurs pour le cluster RHCOS

  1. Exécutez la commande suivante pour créer un pool de travailleurs RHCOS.

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

N'ajoutez pas de zones à ce pool de travailleurs RHCOS. Il ne devrait y avoir aucun travailleur dans cette réserve de travailleurs.

Étape 3 : Ajouter des étiquettes de pool de travailleurs au pool de travailleurs RHCOS

Ajoutez les étiquettes suivantes à votre pool de travailleurs RHCOS.

L'ajout d'étiquettes au pool de travailleurs permet aux étiquettes de nœuds d'exister avant que les nœuds de travailleurs ne soient disponibles pour la mise en cluster. Cela permet de s'assurer que les ressources GPU de NVIDIA ne sont pas automatiquement planifiées dès le départ. Si les ressources GPU NVIDA sont planifiées sur des nœuds de travail où les pilotes ne peuvent pas être installés, l'état de la ressource ClusterPolicy s'en trouvera dégradé. Les pilotes ne peuvent pas encore être installés sur les nœuds de travail RHCOS car l'opérateur GPU NVIDIA est configuré pour utiliser la méthode d'installation RHEL 8.

Exécutez la commande suivante pour ajouter des étiquettes à votre pool de travailleurs.

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

Étape 4 : Ajouter les nœuds de travail RHCOS au cluster

Ajoutez de la capacité à votre cluster pour permettre la migration de la charge de travail. L'ajout de zones au pool de travailleurs déclenche le démarrage de l'approvisionnement des nœuds de travailleurs et leur adhésion au cluster. Notez que les ressources GPU de NVIDIA ne sont pas encore déployées sur les nœuds de travail RHCOS.

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

À ce stade, les nœuds de travail RHCOS sont disponibles dans le cluster pour commencer la migration.

Étape 5 : Modifier le programme d'installation du pilote sur les nœuds de travail RHEL 8 pour qu'il soit non géré

Ajoutez l'étiquette nvidia.com/gpu.deploy.driver=false à vos nœuds de travail RHEL 8. Cette étiquette désordonne les pods d'installation de pilotes existants des travailleurs RHEL 8. Le pilote ne doit pas être désinstallé. Les autres opérandes, y compris les plug-ins de périphériques, restent sur les travailleurs RHEL 8. L'état de ClusterPolicy reste prêt. Étant donné que le pilote est toujours installé et que le plug-in de périphérique est en cours d'exécution, les charges de travail du GPU continuent de fonctionner.

  1. Ajoutez le site nvidia.com/gpu.deploy.driver=false aux nœuds de travail RHEL 8.

    Pour attribuer une étiquette à un nœud de travail individuel :

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

    Pour étiqueter l'ensemble d'un groupe de travailleurs :

    ibmcloud oc worker-pool label set \
        --cluster <clusterNameOrID> \
        --worker-pool <workerPoolNameOrID> \
        --label nvidia.com/gpu.deploy.driver=false
    
  2. Lister les gousses pour confirmer les étiquettes.

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

    Exemple de sortie

    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. Confirmez que le site gpu-cluster-policy est ready.

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

    Exemple de sortie

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

Étape 6 : Programmation du programme d'installation du pilote et d'autres opérandes sur les nœuds de travail RHCOS

Ajoutez les sites nvidia.com/gpu.deploy.driver=true et nvidia.com/gpu.deploy.operands=true à vos travailleurs RHCOS.

L'ajout de ces étiquettes tente de planifier l'installateur de pilote, le plug-in de périphérique et d'autres opérandes vers les nœuds de travail RHCOS. La plupart des pods sont dans l'état init en raison de l'échec de l'installation du pilote. Le programme d'installation du pilote échoue car il tente d'installer le pilote à l'aide de la méthode RHEL 8.

Exécutez la commande label nodes pour ajouter des étiquettes.

Pour attribuer une étiquette à un nœud de travail individuel :

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

Pour étiqueter l'ensemble d'un groupe de travailleurs :

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

Après avoir ajouté les étiquettes, passez à l'étape suivante.

Étape 7 : Conversion du programme d'installation des pilotes de RHEL 8 à la méthode d'installation RHCOS

Supprimer nvidia-driver-installer DaemonSet. Cette adresse DaemonSet est spécifique à RHEL 8 et n'est plus nécessaire. L'opérateur GPU effectue la réconciliation et détecte la présence d'un nœud de travail RHCOS dans la grappe. L'opérateur GPU recrée le programme d'installation du pilote DaemonSet,, mais avec la méthode d'installation RHCOS basée sur OpenShift Driver Toolkit.

  1. Supprimer nvidia-driver-installer DaemonSet. Après avoir supprimé le site DaemonSet,, n'ajoutez ni ne rechargez aucun des GPU workers de RHEL 8.

    oc delete daemonset -n nvidia-gpu-operator nvidia-driver-installer
    
  2. Lister les pods et confirmer que le pilote GPU est installé sur les nœuds de travail RHCOS et que les opérandes restants sont ready.

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

    Exemple de sortie

    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. Confirmer que le site gpu-cluster-policy est prêt.

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

    Exemple de sortie

    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    
  4. Décrivez vos nœuds et confirmez les GPU allouables.

    oc describe no
    

    Exemple de sortie

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

Étape 8 : Migration des charges de travail dépendantes du GPU vers les nœuds de travail RHCOS

Maintenant que les nœuds RHCOS GPU worker nodes ont installé le pilote GPU et sont prêts à être planifiés, migrez les charges de travail dépendantes du GPU vers les nœuds RHCOS worker nodes.

  • Migrer par pod en cordonnant le nœud et en supprimant les pods individuels.

    oc adm cordon no/<nodeName>
    oc delete po -n <namespace> <podName>
    
  • Migrer par Node en drainant les nœuds. Pour plus d'informations, voir Drainage d'un nœud en toute sécurité.

  • Migrez par groupe de travailleurs en supprimant l'ensemble de votre groupe de travailleurs RHEL.

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

Étape 9 : Supprimer les étiquettes de votre pool de travailleurs RHCOS

Supprimez les étiquettes du pool de travailleurs que vous avez ajoutées à l'étape précédente. Cette suppression garantit que les nouveaux nœuds de travail RHCOS provisionnés par la suite n'ont pas ces étiquettes et que les composants GPU NVIDIA sont automatiquement installés.

Étape 10 : Réduire ou supprimer le pool de travailleurs RHEL 8

À ce stade, la migration du pilote GPU NVIDIA est terminée. Vous pouvez réduire ou supprimer vos pools de travailleurs RHEL.

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