Solucionar problemas de creación de clústeres

Usar la herramienta gcpdiag

gcpdiag es una herramienta de código abierto. No es un producto Google Cloud oficialmente compatible. Puedes usar la gcpdiag herramienta para identificar y solucionar Google Cloudproblemas de proyectos. Para obtener más información, consulta el proyecto gcpdiag en GitHub.

La herramienta gcpdiag le ayuda a descubrir los siguientes problemas de creación de clústeres de Dataproc realizando las siguientes comprobaciones:

  • Errores de falta de stock: evalúa los registros del Explorador de registros para detectar las faltas de stock en regiones y zonas.
  • Cuota insuficiente: comprueba la disponibilidad de la cuota en el proyecto del clúster de Dataproc.
  • Configuración de red incompleta: realiza pruebas de conectividad de red, incluidas comprobaciones de las reglas de cortafuegos necesarias y de la configuración de IP externa e interna. Si el clúster se ha eliminado, la herramienta gcpdiag no puede realizar una comprobación de la conectividad de red.
  • Configuración incorrecta entre proyectos: comprueba las cuentas de servicio entre proyectos y revisa la aplicación de roles y políticas de organización adicionales.
  • Faltan roles de gestión de identidades y accesos de la red de nube privada virtual compartida: si el clúster de Dataproc usa una red VPC compartida, comprueba que se hayan añadido los roles de cuenta de servicio necesarios.
  • Errores de acciones de inicialización: evalúa los registros de Explorador de registros para detectar errores y tiempos de espera de las secuencias de comandos de acciones de inicialización.

Para ver una lista de los gcpdiag pasos para crear un clúster, consulta la sección Pasos posibles.

Ejecuta el comando gcpdiag.

Puedes ejecutar el comando gcpdiag desde Cloud Shell en la consola o en un contenedor Docker.Google Cloud

Google Cloud consola

  1. Completa y copia el siguiente comando.
  2. gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Abre la Google Cloud consola y activa Cloud Shell.
  4. Abrir la consola de Cloud
  5. Pega el comando copiado.
  6. Ejecuta el comando gcpdiag, que descarga la imagen de Docker gcpdiag y, a continuación, realiza comprobaciones de diagnóstico. Si procede, sigue las instrucciones de salida para corregir las comprobaciones fallidas.

Docker

Puedes ejecutar gcpdiag mediante un envoltorio que inicie gcpdiag en un contenedor Docker. Debes tener instalado Docker o Podman.

  1. Copia y ejecuta el siguiente comando en tu estación de trabajo local.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Ejecuta el comando gcpdiag.
    ./gcpdiag runbook dataproc/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Consulta los parámetros disponibles de este runbook.

Haz los cambios siguientes:

    • PROJECT_ID: ID del proyecto que contiene el recurso.
    • CLUSTER_NAME: nombre del clúster de Dataproc de destino de tu proyecto.
    • OPTIONAL_PARAMETERS: añade uno o varios de los siguientes parámetros opcionales. Estos parámetros son obligatorios si se ha eliminado el clúster.
      • cluster_uuid: el UUID del clúster de Dataproc de destino de tu proyecto
      • service_account: el clúster de Dataproc Cuenta de servicio de la VM
      • subnetwork: la ruta de URI completa de la subred del clúster de Dataproc
      • internal_ip_only: Verdadero o falso
      • cross_project: el ID entre proyectos si el clúster de Dataproc usa una cuenta de servicio de VM en otro proyecto.

Marcas útiles:

Para ver una lista y una descripción de todas las marcas de la herramienta gcpdiag, consulta las gcpdiaginstrucciones de uso.

Entender y corregir errores de creación de clústeres

En esta sección se enumeran los mensajes de error de Dataproc, así como sus causas y soluciones habituales.

  • Tiempo de espera agotado para la operación: solo se están ejecutando 0 de los 2 nodos de datos o gestores de nodos necesarios.

    Causa: El nodo de controlador no puede crear el clúster porque no puede comunicarse con los nodos de trabajo.

    Solución:

  • Permiso compute.subnetworks.use obligatorio para projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Causa: este error puede producirse cuando intentas configurar un clúster de Dataproc con una red VPC de otro proyecto y la cuenta de servicio agente de servicio de Dataproc no tiene los permisos necesarios en el proyecto de VPC compartida que aloja la red.

    Solución: sigue los pasos que se indican en Crear un clúster que use una red de VPC en otro proyecto.

  • La zona projects/zones/{zone} no tiene suficientes recursos disponibles para completar la solicitud (resource type:compute)

    Causa: La zona que se está usando para crear el clúster no tiene suficientes recursos.

    Solución:

  • Errores de cuota superada

    Cuota de CPUS/CPUS_ALL_REGIONS insuficiente
    Cuota de DISKS_TOTAL_GB insuficiente
    Cuota de IN_USE_ADDRESSES insuficiente

    Causa: tu solicitud de CPU, disco o dirección IP supera la cuota disponible.

    Solución: Solicita un aumento de la cuota en la Google Cloud consola.

  • No se ha podido realizar la acción de inicialización

    Causa: No se ha podido instalar la acción de inicialización proporcionada durante la creación del clúster.

    Solución:

  • No se ha podido inicializar el nodo CLUSTER-NAME-m. ... Consulta el resultado en: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: no se ha podido inicializar el nodo del controlador del clúster de Dataproc.

    Solución:

  • Error al crear el clúster: se ha agotado el espacio de direcciones IP

    Causa: El espacio de direcciones IP necesario para aprovisionar los nodos de clúster solicitados no está disponible.

    Solución:

    • Crea un clúster en otra subred o red.
    • Reduce el uso de la red para liberar espacio de direcciones IP.
    • Espera hasta que haya suficiente espacio de IP disponible en la red.
  • Mensaje de error del script de inicialización: el repositorio REPO_NAME ya no tiene un archivo Release

    Causa: se ha purgado el repositorio de versiones anteriores estables de Debian.

    Solución:

    Añade el siguiente código antes del código que ejecuta apt-get en tu secuencia de comandos de inicialización.

    oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}');
    stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}');
    
    matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)"
    if [[ -n "$matched_files" ]]; then
      for filename in "$matched_files"; do
        grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \
          sed -i -e 's/^.*-backports.*$//' "$filename"
      done
    fi
    
  • Tiempo de espera agotado para que la instancia DATAPROC_CLUSTER_VM_NAME envíe información o No se puede acceder a la red: dataproccontrol-REGION.googleapis.com

    Causa: estos mensajes de error indican que la configuración de red de tu clúster de Dataproc está incompleta: puede que falte la ruta a la pasarela de Internet predeterminada o las reglas de cortafuegos.

    Solución:

    Para solucionar este problema, puedes crear las siguientes pruebas de conectividad:

    • Crea una prueba de conectividad entre dos VMs de clúster de Dataproc. El resultado de esta prueba te ayudará a determinar si las reglas de cortafuegos de entrada o salida de tu red se aplican correctamente a las VMs del clúster.
    • Crea una prueba de conectividad entre una VM de clúster de Dataproc y una dirección IP de la API de control de Dataproc actual. Para obtener la dirección IP actual de la API de control de Dataproc, usa el siguiente comando:
    dig dataproccontrol-REGION.googleapis.com A
    

    Usa cualquiera de las direcciones IPv4 de la sección de respuestas del resultado.

    El resultado de la prueba de conectividad te ayudará a saber si la ruta a la pasarela de Internet predeterminada y el cortafuegos de salida están configurados correctamente.

    Según los resultados de las pruebas de conectividad:

  • Error debido a una actualización

    Causa: El clúster ha aceptado un trabajo enviado al servicio Dataproc, pero no ha podido aumentar o reducir su tamaño de forma manual o mediante el autoescalado. Este error también puede deberse a una configuración de clúster no estándar.

    Solución:

    • Restablecimiento del clúster: abre una incidencia, incluye un archivo tar de diagnóstico y pide que se restablezca el clúster al estado EN EJECUCIÓN.

    • Clúster nuevo: vuelve a crear el clúster con la misma configuración. Esta solución puede ser más rápida que un restablecimiento proporcionado por el equipo de Asistencia.

Consejos para solucionar problemas de clústeres

En esta sección se ofrecen directrices adicionales para solucionar problemas habituales que pueden impedir la creación de clústeres de Dataproc.

Cuando no se puede aprovisionar un clúster de Dataproc, a menudo se produce un mensaje de error genérico o se informa de un estado PENDING o PROVISIONING antes de que se produzca un error. La clave para diagnosticar y resolver los problemas de fallos de clústeres es examinar los registros de clústeres y evaluar los puntos de fallo habituales.

Síntomas y mensajes de error habituales

A continuación, se muestran algunos síntomas y mensajes de error habituales asociados a fallos en la creación de clústeres:

  • El estado del clúster sigue siendo PENDING o PROVISIONING durante un periodo prolongado.
  • El clúster pasa al estado ERROR.
  • Errores genéricos de la API durante la creación del clúster, como Operation timed out.
  • Mensajes de error registrados o de respuesta de la API, como los siguientes:

    • RESOURCE_EXHAUSTED: relacionadas con las cuotas de CPU, disco o direcciones IP
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com o Could not reach required Google APIs
    • Connection refused o network unreachable
    • Errores relacionados con el fallo de las acciones de inicialización, como errores de ejecución de secuencias de comandos y archivos no encontrados.

Revisar los registros del clúster

Un paso inicial importante para diagnosticar los fallos de creación de clústeres es revisar los registros detallados del clúster disponibles en Cloud Logging.

  1. Ve a Explorador de registros: abre Explorador de registros en la consola de Google Cloud .
  2. Filtrar clústeres de Dataproc:
    • En el desplegable Recurso, selecciona Cloud Dataproc Cluster.
    • Introduce tu cluster_name y project_id. También puedes filtrar por location (región).
  3. Examinar las entradas de registro:
    • Busca mensajes de nivel ERROR o WARNING que se produzcan cerca del momento en que se ha producido el error al crear el clúster.
    • Presta atención a los registros de los componentes master-startup, worker-startup y agent para obtener información sobre problemas a nivel de VM o del agente de Dataproc.
    • Para obtener información sobre los problemas de tiempo de arranque de las VMs, filtra los registros por resource.type="gce_instance" y busca mensajes de los nombres de instancia asociados a los nodos de tu clúster, como CLUSTER_NAME-m o CLUSTER_NAME-w-0. Los registros de la consola en serie pueden revelar problemas de configuración de red, problemas de disco y fallos de secuencias de comandos que se producen al principio del ciclo de vida de la VM.

Causas habituales de los fallos de clúster y consejos para solucionar problemas

En esta sección se describen los motivos habituales por los que puede fallar la creación de un clúster de Dataproc y se ofrecen consejos para solucionar problemas relacionados con los clústeres.

Permisos de gestión de identidades y accesos insuficientes

La cuenta de servicio de la VM que usa tu clúster de Dataproc debe tener los roles de gestión de identidades y accesos adecuados para aprovisionar instancias de Compute Engine, acceder a segmentos de Cloud Storage, escribir registros e interactuar con otros servicios de Google Cloud .

  • Rol de trabajador obligatorio: comprueba que la cuenta de servicio de la VM tenga el rol Trabajador de Dataproc (roles/dataproc.worker). Este rol tiene los permisos mínimos necesarios para que Dataproc gestione los recursos del clúster.
  • Permisos de acceso a datos: si tus trabajos leen o escriben datos en Cloud Storage o BigQuery, la cuenta de servicio necesita roles relacionados, como Storage Object Viewer, Storage Object Creator o Storage Object Admin para Cloud Storage, o BigQuery Data Viewer o BigQuery Editor para BigQuery.
  • Permisos de registro: la cuenta de servicio debe tener un rol con los permisos necesarios para escribir registros en Cloud Logging, como el rol Logging Writer.

Consejos para solucionar problemas:

Se han superado las cuotas de recursos

Los clústeres de Dataproc consumen recursos de Compute Engine y otros Google Cloud servicios. Si se superan las cuotas de proyectos o regionales, se pueden producir errores al crear clústeres.

  • Estas son algunas cuotas de Dataproc que se suelen comprobar:
    • CPUs (regional)
    • DISKS_TOTAL_GB (regional)
    • IN_USE_ADDRESSES (regional para IPs internas y global para IPs externas)
    • Cuotas de la API Dataproc, como ClusterOperationRequestsPerMinutePerProjectPerRegion .

Consejos para solucionar problemas:

  • Revisa las cuotas: ve a la página IAM y administración > IAM en la consola de Google Cloud . Filtra por "Servicio" para buscar "API de Compute Engine" y "API de Dataproc".
  • Comprobar el uso en comparación con el límite: identifica las cuotas que estén en el límite o cerca de él.
  • Si es necesario, solicita un aumento de cuota.

Problemas de configuración de red

Los problemas de configuración de red, como una configuración incorrecta de la red VPC, la subred, el cortafuegos o el DNS, son una causa habitual de los errores de creación de clústeres. Las instancias del clúster deben poder comunicarse entre sí y con las APIs de Google.

  • Red y subred de VPC:
    • Verifica que la red VPC y la subred del clúster existan y estén configuradas correctamente.
    • Verifica que la subred tenga un intervalo suficiente de direcciones IP disponibles.
  • Acceso privado de Google (PGA): si las VMs del clúster tienen direcciones IP internas y necesitan acceder a las APIs de Google para Cloud Storage, Cloud Logging y otras operaciones, comprueba que Acceso privado de Google esté habilitado en la subred. De forma predeterminada, los clústeres de Dataproc creados con versiones de imagen 2.2 o posteriores aprovisionan VMs con direcciones IP solo internas con Acceso privado de Google habilitado en la subred regional del clúster.
  • Private Service Connect (PSC): si usas Private Service Connect para acceder a las APIs de Google, comprueba que los endpoints de Private Service Connect necesarios estén configurados correctamente para las APIs de Google de las que depende Dataproc, como dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com y logging.googleapis.com. Las entradas DNS de las APIs deben resolverse en direcciones IP privadas. Ten en cuenta que, aunque uses Private Service Connect, sigues necesitando el emparejamiento entre redes de VPC para comunicarte con otras redes de VPC gestionadas por clientes. .
  • Emparejamiento entre VPCs: si tu clúster se comunica con recursos de otras redes de VPC, como proyectos host de VPC compartida u otras VPCs de clientes, comprueba que el emparejamiento entre VPCs esté configurado correctamente y que las rutas se propaguen.
  • Reglas de cortafuegos:

    • Reglas predeterminadas: comprueba que las reglas de cortafuegos predeterminadas, como allow-internal o allow-ssh, no sean demasiado restrictivas.
    • Reglas personalizadas: si hay reglas de cortafuegos personalizadas, comprueba que permitan las rutas de comunicación necesarias:

      • Comunicación interna dentro del clúster (entre nodos -m y -w).
      • Tráfico saliente de las VMs del clúster a las APIs de Google, mediante IPs públicas, una pasarela de Internet, Acceso privado de Google o puntos finales de Private Service Connect.

      • Tráfico a cualquier fuente de datos o servicio externos de los que dependan sus tareas.

  • Resolución de DNS: comprueba que las instancias del clúster puedan resolver correctamente los nombres de DNS de las APIs de Google y de cualquier servicio interno o externo.

Consejos para solucionar problemas:

  • Revisa la configuración de la red: inspecciona la red de VPC y los ajustes de la subred en los que se está desplegando el clúster.
  • Comprueba las reglas de cortafuegos: revisa las reglas de cortafuegos de la red VPC o del proyecto host de la VPC compartida.
  • Prueba la conectividad: inicia una máquina virtual de Compute Engine temporal en la subred del clúster y sigue estos pasos:
    • ping o curl a dominios de APIs de Google externos, como storage.googleapis.com.
    • nslookup para verificar la resolución de DNS a las direcciones IP esperadas (acceso privado a Google o Private Service Connect).
    • Ejecuta Google Cloud pruebas de conectividad para diagnosticar las rutas de una VM de prueba a los endpoints pertinentes.

Errores de acciones de inicialización

Las acciones de inicialización de Dataproc son secuencias de comandos que se ejecutan en las VMs de un clúster durante la creación del clúster. Si hay errores en estas secuencias de comandos, es posible que no se pueda iniciar el clúster.

Consejos para solucionar problemas:

  • Examina los registros para ver si hay errores en las acciones de inicialización: busca entradas de registro relacionadas con init-actions o startup-script en las instancias del clúster en Cloud Logging.
  • Comprueba las rutas y los permisos de las secuencias de comandos: verifica que las secuencias de comandos de la acción de inicialización estén ubicadas correctamente en Cloud Storage y que la cuenta de servicio de la VM del clúster tenga el rol Storage Object Viewer necesario para leer las secuencias de comandos de Cloud Storage.
  • Depurar la lógica de la secuencia de comandos: prueba la lógica de la secuencia de comandos en una VM de Compute Engine independiente que imite el entorno del clúster para identificar errores. Añade registros detallados a la secuencia de comandos.

Disponibilidad de recursos regionales (agotamiento de existencias)

En ocasiones, un tipo de máquina o un recurso de una región o zona no está disponible temporalmente (se agota). Por lo general, esto provoca RESOURCE_EXHAUSTED errores que no están relacionados con problemas de cuota del proyecto.

Consejos para solucionar problemas:

  • Prueba con otra zona u otra región: intenta crear el clúster en otra zona de la misma región o en otra región.
  • Usar la asignación automática de zonas: usa la función Asignación automática de zonas de Dataproc para seleccionar automáticamente una zona con capacidad.
  • Ajusta el tipo de máquina: si usas un tipo de máquina personalizado o especializado, prueba con un tipo de máquina estándar para ver si se soluciona el problema.

Contactar con Cloud Customer Care

Si sigues teniendo problemas con el clúster, ponte en contacto con Cloud Customer Care. Describe el problema de fallo del clúster y los pasos que has seguido para solucionarlo. Además, proporciona la siguiente información:

  • Datos de diagnóstico de clústeres
  • Resultado del siguiente comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          -region=REGION
      
  • Se han exportado los registros del clúster que ha fallado.

Siguientes pasos