Migración de recursos de GPU de NVIDIA a nodos de trabajo RHCOS

Nube privada virtual

Revise los siguientes pasos sobre cómo migrar sus recursos de operador de GPU de NVIDIA de los nodos trabajadores de GPU de RHEL 8 a los nodos trabajadores de RHCOS.

El operador GPU NVIDIA consta de los siguientes recursos:

  • 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

El principal componente de interés es nvidia-driver-daemonset. Este componente se encarga de instalar el controlador de la GPU en el nodo trabajador de la GPU. Estos controladores se instalan de forma diferente cuando se trata de nodos trabajadores RHEL 8 y RHCOS.

Declaración oficial del operador de GPU NVIDIA: Todos los nodos trabajadores o grupos de nodos para ejecutar cargas de trabajo de GPU en el clúster Kubernetes deben ejecutar la misma versión del sistema operativo para utilizar el contenedor NVIDIA GPU Driver. Como alternativa, si preinstala el controlador de GPU NVIDIA en los nodos, podrá ejecutar diferentes sistemas operativos. Para obtener más información, consulte Instalación del operador de GPU NVIDIA.

El operador de GPU de NVIDIA no es capaz de gestionar simultáneamente instalaciones de controladores en diferentes sistemas operativos de nodos trabajadores. Esta limitación significa que si la instalación del controlador de la GPU es gestionada únicamente por el operador de la GPU NVIDIA, será necesario realizar una migración completa de la instalación del controlador cuando se cambie el sistema operativo del nodo trabajador.

Realice los siguientes pasos para migrar las instalaciones de controladores de operadores de GPU NVIDIA de RHEL 8 a los nodos trabajadores RHCOS. En este ejemplo se describen específicamente los pasos de migración para la siguiente configuración de clúster:

Detalles del entorno inicial

Revise los detalles y las notas para migrar una versión Red Hat OpenShift on IBM Cloud 4.17 en VPC con nodos trabajadores RHEL 8 a la versión 4.18 con nodos trabajadores RHCOS.

La versión 4.18 sólo es compatible con RHCOS y RHEL 9.

Antes de empezar, asegúrese de que el clúster cumple los siguientes requisitos.

  • Un clúster VPC 4.17 con nodos de trabajo RHEL 8 que utilizan versiones de GPU NVIDIA.
  • El operador NVIDIA GPU, ClusterPolicy, y los operandos están instalados y Ready.
  1. Obtenga los detalles de la nvidia-gpu-operator.
    oc get po -n nvidia-gpu-operator -o wide
    
    Salida de ejemplo
    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. Obtenga los datos de gpu-cluster-policy y asegúrese de que es ready.
    oc get clusterpolicies.nvidia.com gpu-cluster-policy
    
    Salida de ejemplo
    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    

Paso 1: Actualizar el clúster maestro

Ejecuta el siguiente comando para actualizar el servidor maestro.

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

En este punto, no actualice los nodos de los trabajadores a 4.18. Por ahora, mantenga sus trabajadores RHEL 8 en 4.17.

Paso 2: Crear un grupo de trabajadores de clúster RHCOS

  1. Ejecute el siguiente comando para crear un grupo de trabajadores RHCOS.

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

No añadas zonas a este grupo de trabajadores RHCOS. No debería haber trabajadores en esta reserva de trabajadores.

Paso 3: Añadir etiquetas de grupo de trabajadores al grupo de trabajadores RHCOS

Añada las siguientes etiquetas a su grupo de trabajadores RHCOS.

La adición de etiquetas al pool de trabajadores permite que las etiquetas de los nodos existan antes de que los nodos trabajadores estén disponibles para el cluster. Esto garantiza que los recursos de GPU de NVIDIA no se programen automáticamente desde el principio. Si los recursos de GPU NVIDA se programan en nodos trabajadores en los que no se pueden instalar los controladores, se degradará el estado del recurso ClusterPolicy. Los controladores aún no pueden instalarse en los nodos trabajadores RHCOS porque el operador de GPU NVIDIA está configurado para utilizar el método de instalación de RHEL 8.

Ejecute el siguiente comando para añadir etiquetas a su pool de trabajadores.

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

Paso 4: Añadir nodos trabajadores RHCOS al clúster

Añada capacidad a su clúster para permitir la migración de cargas de trabajo. La adición de zonas a la reserva de trabajadores hace que los nodos de trabajadores comiencen el aprovisionamiento y se unan al clúster. Tenga en cuenta que los recursos de GPU de NVIDIA aún no se han desplegado en los nodos trabajadores de RHCOS.

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

En este punto, los nodos trabajadores RHCOS están disponibles en el clúster para comenzar la migración.

Paso 5: Cambie el instalador del controlador en los nodos trabajadores de RHEL 8 a no gestionado

Añada la etiqueta nvidia.com/gpu.deploy.driver=false a sus nodos trabajadores RHEL 8. Esta etiqueta desprograma los pods instaladores de controladores existentes de los trabajadores de RHEL 8. El controlador no debe desinstalarse. Otros operandos, incluidos los complementos de dispositivo, permanecen en los trabajadores de RHEL 8. El estado ClusterPolicy permanece listo. Dado que el controlador sigue instalado y el complemento de dispositivo se está ejecutando, las cargas de trabajo de la GPU siguen siendo funcionales.

  1. Añada nvidia.com/gpu.deploy.driver=false a los nodos trabajadores de RHEL 8.

    Para etiquetar un nodo de trabajo concreto:

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

    Para etiquetar todo un pool de trabajadores:

    ibmcloud oc worker-pool label set \
        --cluster <clusterNameOrID> \
        --worker-pool <workerPoolNameOrID> \
        --label nvidia.com/gpu.deploy.driver=false
    
  2. Enumere las vainas para confirmar las etiquetas.

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

    Salida de ejemplo

    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. Confirme que gpu-cluster-policy es ready.

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

    Salida de ejemplo

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

Paso 6: Programar el instalador del controlador y otros operandos para los nodos trabajadores RHCOS

Añade nvidia.com/gpu.deploy.driver=true y nvidia.com/gpu.deploy.operands=true a tus trabajadores RHCOS.

Al añadir estas etiquetas se intenta programar el instalador del controlador, el plug-in del dispositivo y otros operandos a los nodos trabajadores RHCOS. La mayoría de las cápsulas se encuentran en el estado init debido a un fallo del instalador de controladores. El instalador del controlador falla porque está intentando instalar el controlador utilizando el método de RHEL 8.

Ejecute el comando label nodes para añadir etiquetas.

Para etiquetar un nodo de trabajo concreto:

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

Para etiquetar todo un pool de trabajadores:

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

Después de añadir las etiquetas, continúe con el siguiente paso.

Paso 7: Convertir el instalador de controladores de RHEL 8 al método de instalación RHCOS

Borrar nvidia-driver-installer DaemonSet. Este DaemonSet es específico de RHEL 8 y ya no es necesario. El operador GPU reconcilia y detecta que un nodo trabajador RHCOS está presente en el cluster. El operador de GPU vuelve a crear el instalador de controladores DaemonSet, pero ahora con el método de instalación RHCOS basado en OpenShift Driver Toolkit.

  1. Borrar nvidia-driver-installer DaemonSet. Después de borrar DaemonSet, no añada ni recargue ninguno de los GPU workers de RHEL 8.

    oc delete daemonset -n nvidia-gpu-operator nvidia-driver-installer
    
  2. Enumere los pods y confirme que el controlador de GPU está instalado en los nodos trabajadores RHCOS y que el resto de operandos son ready.

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

    Salida de ejemplo

    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. Confirme que gpu-cluster-policy está listo.

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

    Salida de ejemplo

    NAME                 STATUS   AGE
    gpu-cluster-policy   ready    2025-03-07T03:07:00Z
    
  4. Describe tus nodos y confirma las GPUs asignables.

    oc describe no
    

    Salida de ejemplo

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

Paso 8: Migración de cargas de trabajo dependientes de la GPU a los nodos de trabajo RHCOS

Ahora que los nodos trabajadores RHCOS GPU tienen el controlador GPU instalado y están listos para la programación, migre las cargas de trabajo dependientes de la GPU a los nodos trabajadores RHCOS.

  • Migrar por pod acordonando el nodo y eliminando pods individuales.

    oc adm cordon no/<nodeName>
    oc delete po -n <namespace> <podName>
    
  • Migrar por Node drenando nodos. Para obtener más información, consulte Drenaje seguro de un nodo.

  • Migre por grupo de trabajadores borrando todo su grupo de trabajadores RHEL.

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

Paso 9: Eliminar etiquetas de su grupo de trabajadores RHCOS

Elimine las etiquetas de grupo de trabajadores que añadió en un paso anterior. Esta eliminación garantiza que los nuevos nodos de trabajo RHCOS aprovisionados posteriormente no tengan estas etiquetas y que los componentes de GPU de NVIDIA se instalen automáticamente.

Paso 10: Reducir o eliminar el grupo de trabajadores de RHEL 8

En este punto, la migración del controlador GPU NVIDIA ha finalizado. Puede reducir o eliminar sus grupos de trabajadores RHEL.

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