Soluciona problemas de GPU en GKE


En esta página, se muestra cómo resolver problemas relacionados con las GPU en Google Kubernetes Engine (GKE).

Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.

Instalación del controlador de GPU

En esta sección, se proporciona información sobre la solución de problemas para dispositivos NVIDIA automáticos de la instalación de controladores en GKE.

La instalación del controlador falla en los nodos de Ubuntu

Si usas nodos de Ubuntu que tienen GPU L4 conectadas o GPU H100, es posible que el controlador de GPU predeterminado que instala GKE no sea la versión requerida para esas GPU, o una posterior. Como resultado, el Pod del complemento del dispositivo de GPU permanece atascado en el estado Pendiente, y es posible que tus cargas de trabajo de GPU en esos nodos tengan problemas.

Para resolver este problema, te recomendamos que actualices a las siguientes versiones de GKE, que instalan la versión 535 del controlador de GPU como controlador predeterminado:

  • 1.26.15-gke.1483000 y versiones posteriores
  • 1.27.15-gke.1039000 y versiones posteriores
  • 1.28.11-gke.1044000 y versiones posteriores
  • 1.29.6-gke.1073000 y versiones posteriores
  • 1.30.2-gke.1124000 y versiones posteriores

Como alternativa, puedes instalar manualmente la versión 535 o posterior del controlador si ejecutas el siguiente comando:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml

Los complementos del dispositivo GPU fallan con errores CrashLoopBackOff.

El siguiente problema ocurre si usaste el método de instalación manual de controladores en tu grupo de nodos antes del 25 de enero de 2023 y luego actualizaste tu grupo de nodo a una versión de GKE compatible con la instalación automática de controladores. Ambas cargas de trabajo de instalación existen al mismo tiempo y tratan de instalar versiones de controladores en conflicto en tus nodos.

El contenedor de inicialización del complemento de dispositivo GPU falla con el estado Init:CrashLoopBackOff. Los registros del contenedor son similares a los siguientes:

failed to verify installation: failed to verify GPU driver installation: exit status 18

Para resolver este problema, realiza las siguientes acciones:

  • Quita el DaemonSet de instalación manual del controlador de tu clúster. Esto borra la carga de trabajo de instalación en conflicto y permite que GKE instale automáticamente un controlador en tus nodos.

    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Vuelve a aplicar el manifiesto de DaemonSet para la instalación manual de controladores a tu clúster. El 25 de enero de 2023, actualizamos el manifiesto para que ignore los nodos que usan la instalación automática de controladores.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Inhabilita la instalación automática de controladores para tu grupo de nodos. El DaemonSet de instalación de controladores existente debería funcionar como se espera después de que se complete la operación de actualización.

    gcloud container node-pools update POOL_NAME \
        --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=disabled \
        --cluster=CLUSTER_NAME \
        --location=LOCATION
    

    Reemplaza lo siguiente:

    • POOL_NAME: el nombre del grupo de nodos
    • GPU_TYPE: Es el tipo de GPU que ya se usa en el grupo de nodos.
    • GPU_COUNT: Es la cantidad de GPU que ya están conectadas al grupo de nodos.
    • CLUSTER_NAME: Es el nombre del clúster de GKE que contiene el grupo de nodos.
    • LOCATION: La ubicación de Compute Engine del clúster.

Error: "La imagen de contenedor cos-nvidia-installer:fixed no está presente con la política de extracción de Nunca" o "La imagen de contenedor ubuntu-nvidia-installer:fixed no está presente con la política de extracción de Nunca".

Este problema se produce cuando los Pods nvidia-driver-installer están en el estado PodInitializing y el dispositivo del complemento de GPU o los Pods del instalador del controlador de GPU informan el siguiente error. El mensaje de error específico depende del sistema operativo que se ejecuta en tu nodo:

COS

Container image "cos-nvidia-installer:fixed" is not present with pull policy of Never.

Ubuntu

Container image "gke-nvidia-installer:fixed" is not present with pull policy of Never.

Este problema puede ocurrir cuando el recolector de basura quita la imagen del controlador de NVIDIA precargada para liberar espacio en un nodo. Cuando se vuelva a crear el pod del controlador o se reinicie su contenedor, GKE no podrá ubicar la imagen precargada.

Para mitigar el problema de recolección de elementos no utilizados cuando ejecutas COS, actualiza tus nodos de GKE a una de estas versiones que contienen la corrección:

  • 1.25.15-gke.1040000 y versiones posteriores
  • 1.26.10-gke.1030000 y versiones posteriores
  • 1.27.6-gke.1513000 y versiones posteriores
  • 1.28.3-gke.1061000 y versiones posteriores

Si tus nodos ejecutan Ubuntu, aún no hay una solución disponible para este problema de recolección de elementos no utilizados. Para mitigar este problema en Ubuntu, puedes ejecutar un contenedor con privilegios que interactúe con el host para garantizar la configuración correcta de los controladores de GPU de NVIDIA. Para ello, ejecuta sudo /usr/local/bin/nvidia-container-first-boot desde tu nodo o aplica el siguiente manifiesto:

apiVersion: v1
kind: Pod
metadata:
  name: gke-nvidia-installer-fixup
spec:
  nodeSelector:
    cloud.google.com/gke-os-distribution: ubuntu
  hostPID: true
  containers:
  - name: installer
    image: ubuntu
    securityContext:
      privileged: true
    command:
      - nsenter
      - -at
      - '1'
      - --
      - sh
      - -c
      - "/usr/local/bin/nvidia-container-first-boot"
  restartPolicy: Never

Otra posible causa del problema es cuando se pierden las imágenes del controlador de NVIDIA después del reinicio del nodo o el mantenimiento del host. Esto puede ocurrir en nodos confidenciales o con GPUs que usan almacenamiento SSD local efímero. En esta situación, GKE precarga las imágenes de contenedor nvidia-installer-driver en los nodos y las mueve del disco de arranque al SSD local durante el primer inicio.

Para confirmar que hubo un evento de mantenimiento del host, usa el siguiente filtro de registro:

resource.type="gce_instance"
protoPayload.serviceName="compute.googleapis.com"
log_id("cloudaudit.googleapis.com/system_event")

Para mitigar el problema de mantenimiento del host, actualiza tu versión de GKE a una de las siguientes:

  • 1.27.13-gke.1166000 y versiones posteriores
  • 1.29.3-gke.1227000 y versiones posteriores
  • 1.28.8-gke.1171000 y versiones posteriores

Error: No se pudieron configurar los directorios de instalación del controlador de GPU: No se pudo crear la superposición lib64: No se pudo crear el directorio /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: No es un directorio.

Encontrarás este error en el contenedor del instalador del controlador de GPU dentro del complemento de dispositivo de GPU cuando el socket rápido de NCCL esté habilitado:

failed to configure GPU driver installation dirs: failed to create lib64 overlay: failed to create dir /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: not a directory.

Este problema solo ocurre en los clústeres y nodos que ejecutan GKE 1.28 y 1.29.

El problema se debe a una condición de carrera de NCCL fastsocket con el instalador del controlador de GPU.

Para mitigar este problema, actualiza tu versión de GKE a una de las siguientes:

  • 1.28.8-gke.1206000 y versiones posteriores
  • 1.29.3-gke.1344000 y versiones posteriores

Error: No se pudo obtener el dispositivo para nvidia0: No se encontró el dispositivo nvidia0.

En el siguiente error, se indica que XID 62 y RmInitAdapter fallaron en la GPU con la versión menor 0:

Failed to get device for nvidia0: device nvidia0 not found.

La versión 525.105.17 del controlador de NVIDIA tiene un error que puede causar errores de comunicación (XID) y evitar que la GPU se inicialice correctamente, lo que genera un error de inicialización de la GPU.

Para solucionar este problema, actualiza el controlador NVIDIA a la versión 525.110.11 o una posterior.

¿Qué sigue?

Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.