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
- Completa y copia el siguiente comando.
- Abre la Google Cloud consola y activa Cloud Shell. Abrir la consola de Cloud
- Pega el comando copiado.
- Ejecuta el comando
gcpdiag
, que descarga la imagen de Dockergcpdiag
y, a continuación, realiza comprobaciones de diagnóstico. Si procede, sigue las instrucciones de salida para corregir las comprobaciones fallidas.
gcpdiag runbook dataproc/cluster-creation \
--parameter project_id=PROJECT_ID \
--parameter cluster_name=CLUSTER_NAME \
--parameter OPTIONAL_FLAGS
Docker
Puedes
ejecutar gcpdiag
mediante un envoltorio que inicie gcpdiag
en un
contenedor Docker. Debes tener instalado Docker o Podman.
- Copia y ejecuta el siguiente comando en tu estación de trabajo local.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- 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 proyectoservice_account
: el clúster de Dataproc Cuenta de servicio de la VMsubnetwork
: la ruta de URI completa de la subred del clúster de Dataprocinternal_ip_only
: Verdadero o falsocross_project
: el ID entre proyectos si el clúster de Dataproc usa una cuenta de servicio de VM en otro proyecto.
Marcas útiles:
--universe-domain
: Si procede, el dominio Trusted Partner Sovereign Cloud que aloja el recurso--parameter
o-p
: parámetros de runbook
Para ver una lista y una descripción de todas las marcas de la herramienta gcpdiag
, consulta las gcpdiag
instrucciones 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:
- Comprueba las advertencias de las reglas de cortafuegos.
- Asegúrate de que las reglas de cortafuegos correctas estén activadas. Para obtener más información, consulta el artículo Descripción general de las reglas de cortafuegos predeterminadas de Dataproc.
- Realiza una prueba de conectividad en la consola Google Cloud para determinar qué está bloqueando la comunicación entre los nodos de controlador y de trabajador.
Permiso
compute.subnetworks.use
obligatorio paraprojects/{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:
- Crea el clúster en otra zona.
- Usa la función Asignación automática de zonas de Dataproc.
Errores de cuota superada
Cuota de CPUS/CPUS_ALL_REGIONS insuficiente
Cuota de DISKS_TOTAL_GB insuficiente
Cuota de IN_USE_ADDRESSES insuficienteCausa: 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:
- Consulta las consideraciones y directrices sobre las acciones de inicialización.
- Examina los registros de salida. El mensaje de error debería proporcionar un enlace a los registros de Cloud Storage.
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:
- Revisa los registros de salida de la secuencia de comandos de inicio que se indican en el mensaje de error (
gs://PATH_TO_STARTUP_SCRIPT_OUTPUT
) y comprueba la causa del error de inicialización del nodo. - Entre las causas se incluyen problemas con la configuración de la red del clúster de Dataproc y errores en la instalación de las dependencias de los paquetes de Python.
- Si el problema no se resuelve después de revisar los registros del script de inicio, soluciona los problemas del lado del usuario y vuelve a intentarlo con una retirada exponencial. Si el problema persiste, ponte en contacto con el equipo de Asistencia de Google Cloud.
- Revisa los registros de salida de la secuencia de comandos de inicio que se indican en el mensaje de error (
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:
- Añade una ruta a Internet a la red de VPC de tu clúster:
0.0.0.0/0
para IPv4 y::/0
para IPv6 con--next-hop-gateway=default-internet-gateway
. - Añade reglas de cortafuegos para controlar el acceso.
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
oPROVISIONING
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 IPInstance failed to start
Permission denied
Unable to connect to service_name.googleapis.com
oCould not reach required Google APIs
Connection refused
onetwork 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.
- Ve a Explorador de registros: abre Explorador de registros en la consola de Google Cloud .
- Filtrar clústeres de Dataproc:
- En el desplegable Recurso, selecciona
Cloud Dataproc Cluster
. - Introduce tu
cluster_name
yproject_id
. También puedes filtrar porlocation
(región).
- En el desplegable Recurso, selecciona
- Examinar las entradas de registro:
- Busca mensajes de nivel
ERROR
oWARNING
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
yagent
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, comoCLUSTER_NAME-m
oCLUSTER_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.
- Busca mensajes de nivel
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
oStorage Object Admin
para Cloud Storage, oBigQuery Data Viewer
oBigQuery 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:
Identifica la cuenta de servicio: determina la cuenta de servicio de la VM que está configurada para usar tu clúster. Si no se especifica, el valor predeterminado es la cuenta de servicio predeterminada de Compute Engine.
Verifica los roles de gestión de identidades y accesos: ve a la página Gestión de identidades y accesos > Gestión de identidades y accesos de la consola Google Cloud , busca la cuenta de servicio de la VM del clúster y comprueba que tiene los roles necesarios para las operaciones del clúster. Asigna los roles que falten.
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
ylogging.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
oallow-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.
- Reglas predeterminadas: comprueba que las reglas de cortafuegos predeterminadas, como
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
ocurl
a dominios de APIs de Google externos, comostorage.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
ostartup-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
- Consulta más información sobre las herramientas de monitorización y solución de problemas de Dataproc.
- Consulta cómo diagnosticar clústeres de Dataproc.
- Consulta el documento de preguntas frecuentes de Dataproc .