Soluciona problemas de creación de clústeres

En este documento, se explican los mensajes de error comunes relacionados con la creación de clústeres y se brindan sugerencias para solucionar problemas relacionados con la creación de clústeres.

Mensajes de error comunes de la creación de clústeres

  • El usuario no está autorizado para actuar como cuenta de servicio

    Causa: La principal que intenta crear el clúster de Managed Service para Apache Spark no tiene los permisos necesarios para usar la cuenta de servicio especificada. Los usuarios de Managed Service para Apache Spark deben tener permiso de ActAs de la cuenta de servicio para implementar recursos de Managed Service para Apache Spark. Este permiso se incluye en el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) (consulta Roles de Managed Service para Apache Spark).

    Solución: Identifica la cuenta de usuario o de servicio que intenta crear el clúster de Managed Service para Apache Spark. Otorga a esa principal el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio que está configurada para usar el clúster (por lo general, la cuenta de servicio de VM de Managed Service para Apache Spark).

  • Se agotó el tiempo de espera de la operación: Solo se ejecutan 0 de cada 2 nodos de datos o administradores de nodos mínimos necesarios.

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

    Solución:

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

    Causa: Este error puede ocurrir cuando intentas configurar un clúster de Managed Service para Apache Spark con una red de VPC en otro proyecto y la cuenta de servicio del agente de servicio de Managed Service para Apache Spark no tiene los permisos necesarios en el proyecto de VPC compartida que aloja la red.

    Solución: Sigue los pasos que se indican en Crea 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 usa para crear el clúster no tiene suficientes recursos.

    Solución:

    • Usa la función de posición de zona automática de Managed Service para Apache Spark para crear el clúster en cualquiera de las zonas de una región con recursos disponibles.
    • Crea el clúster en una zona diferente.
  • Errores de cuota excedida

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

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

    Solución: Solicita una cuota adicional en la consola deGoogle Cloud .

  • No se pudo realizar la acción de inicialización

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

    Solución:

  • No se pudo inicializar el nodo CLUSTER-NAME-m… Consulta el resultado en: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Causa: No se pudo inicializar el nodo del controlador del clúster de Managed Service para Apache Spark.

    Solución:

  • No se pudo crear el clúster: Se agotó el espacio de direcciones IP

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

    Solución:

    • Crea un clúster con menos nodos trabajadores, pero con un tipo de máquina más grande.
    • Crea un clúster en una subred o red diferente.
    • Reduce el uso en 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 de versión

    Causa: Se borró el repositorio de backports de Debian oldstable.

    Solución:

    Agrega 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
    
  • Se agotó el tiempo de espera de la instancia DATAPROC_CLUSTER_VM_NAME para informar o No se puede acceder a la red: dataproccontrol-REGION.googleapis.com

    Causa: Estos mensajes de error indican que la configuración de redes de tu clúster de Managed Service para Apache Spark está incompleta: es posible que falte la ruta a la puerta de enlace de Internet predeterminada o las reglas de firewall.

    Solución:

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

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

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

    El resultado de la prueba de conectividad te ayudará a comprender si la ruta a la puerta de enlace de Internet predeterminada y el firewall de salida permitido están configurados correctamente.

    Según los resultados de las pruebas de conectividad, haz lo siguiente:

  • Error debido a una actualización

    Causa: El clúster aceptó un trabajo enviado al servicio de Managed Service para Apache Spark, pero no pudo escalar verticalmente ni reducir su escala de forma manual o a través del escalado automático. Este error también puede deberse a una configuración no estándar del clúster.

    Solución:

    • Restablecimiento del clúster: Abre un ticket de asistencia, incluye un archivo tar de diagnóstico y solicita que se restablezca el clúster al estado RUNNING.

    • 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.

Sugerencias para solucionar problemas de clústeres

En esta sección, se proporciona orientación adicional para solucionar problemas habituales que pueden impedir la creación de clústeres de Managed Service para Apache Spark.

Cuando no se puede aprovisionar un clúster de Managed Service para Apache Spark, a menudo se produce un mensaje de error genérico o se informa un estado PENDING o PROVISIONING antes de que falle. La clave para diagnosticar y resolver los problemas de fallas del clúster es examinar los registros del clúster y evaluar los puntos de falla comunes.

Síntomas comunes

Los siguientes son síntomas comunes asociados con errores de creación de clústeres:

  • El estado del clúster permanece como PENDING o PROVISIONING durante un período 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: Relacionado con las cuotas de CPU, disco o dirección 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 la falla de las acciones de inicialización, como errores de ejecución de secuencias de comandos y no se encontró el archivo.

Revisa los registros del clúster

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

  1. Ve al Explorador de registros: Abre el Explorador de registros en la consola de Google Cloud .
  2. Filtra los clústeres de Managed Service para Apache Spark:
    • En el menú desplegable Recurso, selecciona Cloud Managed Service for Apache Spark Cluster.
    • Ingresa tu cluster_name y project_id. También puedes filtrar por location (región).
  3. Examina las entradas de registro:
    • Busca mensajes de nivel ERROR o WARNING que se produzcan cerca del momento de la falla en la creación del clúster.
    • Presta atención a los registros de los componentes master-startup, worker-startup y agent para obtener estadísticas sobre problemas a nivel de la VM o del agente de Managed Service para Apache Spark.
    • Para obtener información sobre los problemas de tiempo de inicio de la VM, filtra los registros por resource.type="gce_instance" y busca mensajes de los nombres de instancias asociados con 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 fallas de secuencia de comandos que ocurren al principio del ciclo de vida de la VM.

Causas comunes de fallas en el clúster y sugerencias para solucionar problemas

En esta sección, se describen los motivos comunes por los que podría fallar la creación de clústeres de Managed Service para Apache Spark y se proporcionan sugerencias para solucionar problemas relacionados con fallas en los clústeres.

Permisos de IAM insuficientes

La cuenta de servicio de la VM que usa tu clúster de Managed Service para Apache Spark debe tener los roles de IAM adecuados para aprovisionar instancias de Compute Engine, acceder a los buckets de Cloud Storage, escribir registros y, también, interactuar con otros servicios de Google Cloud .

  • Función de Worker requerida: Verifica que la cuenta de servicio de VM tenga la función de Trabajador de Managed Service para Apache Spark (roles/dataproc.worker). Esta función tiene los permisos mínimos requeridos para que Managed Service para Apache Spark administre los recursos del clúster.
  • Permisos de acceso a los 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.

Sugerencias para solucionar problemas:

Se superaron las cuotas de recursos

Los clústeres de Managed Service para Apache Spark consumen recursos de Compute Engine y otros servicios de Google Cloud . Si se superan las cuotas regionales o del proyecto, se pueden producir errores en la creación del clúster.

  • Cuotas comunes de Managed Service para Apache Spark que debes verificar:
    • CPUs (regional)
    • DISKS_TOTAL_GB (regional)
    • IN_USE_ADDRESSES (regional para IPs internas y global para IPs externas)
    • Cuotas de la API de Dataproc, como ClusterOperationRequestsPerMinutePerProjectPerRegion

Sugerencias 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 la "API de Compute Engine" y la "API de Dataproc".
  • Comprueba el uso en comparación con el límite: Identifica las cuotas que están en su límite o cerca de él.
  • Si es necesario, solicita un aumento de la cuota.

Problemas de configuración de red

Los problemas de configuración de red, como la configuración incorrecta de la red de VPC, la subred, el firewall o el DNS, son una causa común de errores en la 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 subred y la red de VPC del clúster existan y estén configuradas correctamente.
    • Verifica que la subred tenga un rango suficiente de direcciones IP disponibles.
  • Acceso privado a 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, verifica que el acceso privado a Google esté habilitado en la subred. De forma predeterminada, los clústeres de Managed Service para Apache Spark creados con versiones de imágenes 2.2 y posteriores aprovisionan VMs con direcciones IP solo internas y con el Acceso privado a 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, verifica que los extremos de Private Service Connect necesarios estén configurados correctamente para las APIs de Google de las que depende el Servicio administrado para Apache Spark, como dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com y logging.googleapis.com. Las entradas de DNS para las APIs deben resolverse en direcciones IP privadas. Ten en cuenta que el uso de Private Service Connect no elimina la necesidad de usar el peering de VPC para comunicarse con otras redes de VPC administradas por el cliente.
  • Intercambio de tráfico entre VPCs: Si tu clúster se comunica con recursos en otras redes de VPC, como proyectos host de VPC compartida o otras VPCs de clientes, verifica que el intercambio de tráfico entre VPCs esté configurado correctamente y que las rutas se propaguen.
  • Reglas de firewall:

    • Reglas predeterminadas: Verifica que las reglas de firewall predeterminadas, como allow-internal o allow-ssh, no sean demasiado restrictivas.
    • Reglas personalizadas: Si hay reglas de firewall personalizadas, verifica que permitan las rutas de acceso de comunicación necesarias:

      • Comunicación interna dentro del clúster (entre los nodos -m y -w)
      • Tráfico saliente de las VMs del clúster a las APIs de Google, ya sea con IPs públicas o una puerta de enlace de Internet, Acceso privado a Google o extremos de Private Service Connect

      • Tráfico a cualquier fuente de datos o servicio externos de los que dependan tus trabajos

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

Sugerencias para solucionar problemas:

  • Revisa la configuración de la red: Inspecciona la configuración de la red de VPC y la subred en la que se implementa el clúster.
  • Verifica las reglas de firewall: Revisa las reglas de firewall en la red de VPC o en el proyecto host de VPC compartida.
  • Prueba la conectividad: Inicia una VM temporal de Compute Engine en la subred del clúster y sigue estos pasos:
    • ping o curl a dominios externos de la API de Google, como storage.googleapis.com
    • nslookup para verificar la resolución de DNS en las direcciones IP esperadas (Acceso privado a Google o Private Service Connect).
    • Ejecuta Google Cloud pruebas de conectividadpara diagnosticar las rutas desde una VM de prueba hasta los extremos pertinentes.

Fallas en las acciones de inicialización

Las acciones de inicialización de Managed Service para Apache Spark son secuencias de comandos que se ejecutan en las VMs del clúster durante la creación del clúster. Los errores en estas secuencias de comandos pueden impedir el inicio del clúster.

Sugerencias para solucionar problemas:

  • Examina los registros en busca de errores de acción de inicialización: Busca entradas de registro relacionadas con init-actions o startup-script para las instancias del clúster en Cloud Logging.
  • Verifica las rutas de acceso y los permisos de las secuencias de comandos: Comprueba que las secuencias de comandos de acciones 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.
  • Depura la lógica de la secuencia de comandos: Prueba la lógica de la secuencia de comandos en una VM de Compute Engine separada que simule el entorno del clúster para identificar errores. Agrega un registro detallado a la secuencia de comandos.

Disponibilidad regional de recursos (agotamientos)

En ocasiones, un tipo de máquina o un recurso de una región o zona experimentan una falta de disponibilidad temporal (agotamiento de existencias). Por lo general, esto genera errores de RESOURCE_EXHAUSTED que no están relacionados con problemas de cuota del proyecto.

Sugerencias para solucionar problemas:

  • Prueba con otra zona o región: Intenta crear el clúster en otra zona de la misma región o en otra región.
  • Usa la posición de zona automática: Usa la función de posición de zona automática de Managed Service para Apache Spark 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 eso resuelve el problema.

Comunícate con Atención al cliente de Cloud

Si sigues teniendo problemas con las fallas del clúster, comunícate con Atención al cliente de Cloud. Describe el problema de falla del clúster y los pasos de solución de problemas que seguiste. Además, proporciona la siguiente información:

  • Datos de diagnóstico del clúster
  • Resultado del siguiente comando:
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      
  • Son los registros exportados del clúster que falló.

Usa la herramienta gcpdiag

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

La herramienta gcpdiag te ayuda a descubrir los siguientes problemas de creación de clústeres de Managed Service para Apache Spark realizando las siguientes verificaciones:

  • Errores de falta de stock: Evalúa los registros del Explorador de registros para detectar faltas de stock en regiones y zonas.
  • Cuota insuficiente: Verifica la disponibilidad de la cuota en el proyecto del clúster de Managed Service para Apache Spark.
  • Configuración de red incompleta: Realiza pruebas de conectividad de red, incluidas las verificaciones de las reglas de firewall necesarias y la configuración de IP externa e interna. Si se borró el clúster, la herramienta gcpdiag no puede realizar una verificación de conectividad de red.
  • Configuración incorrecta entre proyectos: Verifica las cuentas de servicio entre proyectos y revisa la aplicación de roles adicionales y políticas de la organización.
  • Faltan roles de IAM de la red de nube privada virtual compartida: Si el clúster de Managed Service para Apache Spark usa una red de VPC compartida, se verifica que se hayan agregado los roles de cuenta de servicio necesarios.
  • Fallas en la acción de inicialización: Evalúa los registros del Explorador de registros para descubrir fallas y tiempos de espera en las secuencias de comandos de acción de inicialización.

Para obtener una lista de los pasos de gcpdiag de Dataproc, incluidos los pasos de creación de clústeres, consulta Pasos de Managed Service para Apache Spark.

Ejecuta el comando gcpdiag

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

Consola deGoogle Cloud

  1. Completa y, luego, copia el siguiente comando.
  2. gcpdiag runbook managed-spark/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. Abre la consola de Cloud
  5. Pega el comando copiado.
  6. Ejecuta el comando gcpdiag, que descarga la imagen de Docker gcpdiag y, luego, realiza verificaciones de diagnóstico. Si corresponde, sigue las instrucciones de salida para corregir las verificaciones que fallaron.

Docker

Puedes ejecutar gcpdiag con un wrapper que inicie gcpdiag en un contenedor de Docker. Se debe instalar 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 managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Consulta los parámetros disponibles para este runbook.

Reemplaza lo siguiente:

    • PROJECT_ID: ID del proyecto que contiene el recurso
    • CLUSTER_NAME: Es el nombre del clúster de Managed Service para Apache Spark de destino en tu proyecto.
    • OPTIONAL_PARAMETERS: Agrega uno o más de los siguientes parámetros opcionales. Estos parámetros son obligatorios si se borró el clúster.
      • cluster_uuid: Es el UUID del clúster de Managed Service para Apache Spark de destino en tu proyecto.
      • service_account: La cuenta de servicio de la VM del clúster de Managed Service para Apache Spark
      • subnetwork: Es la ruta de URI completa de la subred del clúster de Managed Service para Apache Spark.
      • internal_ip_only: Verdadero o falso
      • cross_project: Es el ID entre proyectos si el clúster de Managed Service para Apache Spark usa una cuenta de servicio de VM en otro proyecto.

Marcas útiles:

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

¿Qué sigue?