Solución de problemas

En esta página, se muestra cómo resolver problemas con Batch.

Si intentas solucionar problemas en un trabajo que no tienes un mensaje de error, verifica si el historial del trabajo contiene mensajes de error mediante la visualización de eventos de estado antes de revisar este documento.

Para obtener más información sobre la solución de problemas de un trabajo, consulta también documentos:

Errores de creación de trabajos

Si no puedes crear un trabajo, es posible que se deba a uno de los errores de esta sección.

Cuota insuficiente

Problema

Uno de los siguientes problemas ocurre cuando intentas crear un trabajo:

  • Cuando el trabajo esté en Estado QUEUED, aparece el siguiente problema en la Campo statusEvents:

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    Este problema indica que el trabajo se retrasó debido a que la uso actual (QUOTA_USAGE) y límite (QUOTA_LIMIT) de QUOTA_NAME impidió el acceso del trabajo uso solicitado (WANT_QUOTA).

  • Cuando el trabajo esté en Estados QUEUED, SCHEDULED o FAILED, aparece uno de los siguientes problemas en la Campo statusEvents:

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    Este problema indica que la creación de un recurso falló porque el superó tu cuota de QUOTA_NAME, que tiene un límite de QUOTA_LIMIT en la ubicación especificada.

Solución

Para solucionar el problema, haz lo siguiente:

  • Si el trabajo se retrasó, espera a que se libere más cuota.

  • Si el trabajo falló debido a una cuota insuficiente o si los retrasos persisten, Intenta evitar una cuota insuficiente mediante una de las siguientes opciones:

    • Crea trabajos que usen menos de esa cuota o una cuota diferente. Por ejemplo, especifica una ubicación permitida o un tipo de recurso diferente para el trabajo o dividir el uso de la cuota en proyectos adicionales.

    • Solicita un límite de cuota más alto para tu proyecto de Google Cloud.

Para obtener más información, consulta Cuotas y límites por lotes Trabaja con cuotas.

Permisos insuficientes para actuar como la cuenta de servicio

Problema

El siguiente problema ocurre cuando intentas crear un trabajo:

  • Si el trabajo no usa una plantilla de instancias, el problema aparece como el siguiente:

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • Si el trabajo usa una plantilla de instancias, el problema aparece de la siguiente manera:

    Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
    

Por lo general, este problema ocurre porque el usuario que crea el trabajo no tiene los permisos necesarios para actuar como la cuenta de servicio que usa el trabajo controlado por el Permiso iam.serviceAccounts.actAs.

Solución

Para solucionar el problema, haz lo siguiente:

  1. Si el trabajo usa una plantilla de instancias, verifica que la cuenta de servicio especificados en la plantilla de instancias coincide con la cuenta de servicio especificadas en la definición del trabajo.
  2. Asegúrate de que se haya otorgado al usuario que crea el trabajo. Rol Usuario de cuentas de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio especificada para el trabajo. Para obtener más información, consulta Administra el acceso.
  3. Vuelve a crear el trabajo.

Redes repetidas

Problema

El siguiente problema ocurre cuando intentas crear un trabajo:

Networks must be distinct for NICs in the same InstanceTemplate

Este problema ocurre porque especificaste la red para un trabajo más de una vez.

Solución

Para resolver el problema, vuelve a crear el trabajo y especifica la red mediante una de las siguientes opciones:

Para obtener más información, consulta Especifica la red para un trabajo.

La red no es válida para los Controles del servicio de VPC

Problema

El siguiente problema ocurre cuando intentas crear un trabajo:

no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true

Solución

Este problema ocurre porque intentas crear y ejecutar un trabajo con VMs con direcciones IP externas en un perímetro de servicio de Controles del servicio de VPC.

Para resolver el problema, Crear un trabajo que bloquee el acceso externo para todas las VMs.

Obtén más información sobre cómo configurar las redes para un trabajo en un perímetro de servicio de los Controles del servicio de VPC, consulta Usa los Controles del servicio de VPC con Batch.

Problemas de trabajo y errores de falla

Si tienes problemas con un trabajo que no se ejecuta de forma correcta o que falló por motivos poco claros, puede deberse a uno de los errores de esta sección o uno de los códigos de salida en las siguientes Sección Códigos de salida de fallas de tareas.

No hay registros en Cloud Logging

Problema

Necesitas depurar un trabajo, pero no aparecen registros para el trabajo en Cloud Logging.

Este problema suele ocurrir por los siguientes motivos:

  • La API de Cloud Logging no está habilitada para tu proyecto. Incluso si configuras todo lo demás para los registros de un trabajo, no producirá registros si el servicio no está habilitado para tu proyecto.
  • La cuenta de servicio del trabajo no tiene permiso para escribir registros. Un trabajo no puede producir registros si no tiene los permisos suficientes.
  • El trabajo no se configuró para producir registros. Para producir registros en Cloud Logging, un trabajo debe tener habilitado Cloud Logging. El nombre del los ejecutables también deben configurarse para escribir cualquier información que desees aparecer en los registros a la salida estándar (stdout) y estándar de errores estándar (stderr). Para obtener más información, consulta Analiza un trabajo mediante registros.
  • No se ejecutaron las tareas. No se pueden producir registros hasta que las tareas se hayan a los recursos asignados y comenzar a ejecutarlos.
  • Cloud Logging se configuró para excluir automáticamente los registros del trabajo. Los registros de los trabajos por lotes no pueden aparecer si los configuraste filtros de exclusión para Cloud Logging que excluyan los registros de los trabajos por lotes.

Solución

Para solucionar este problema, haz lo siguiente:

  1. Asegúrate de que los registros no se excluyeran automáticamente de Cloud Logging inhabilitando el acceso filtros de exclusión para Cloud Logging.
  2. Asegúrate de que la API de Cloud Logging esté habilitada para tu proyecto.
  3. Asegúrate de que la cuenta de servicio del trabajo tenga la Rol de IAM de escritor de registros (roles/logging.logWriter). Para obtener más información, consulta Habilita Batch para un proyecto.
  4. Visualiza los detalles del trabajo con gcloud CLI o la API de Batch. Los detalles del trabajo pueden ayudarte a entender por qué el trabajo no producen registros y pueden proporcionar información que esperabas obtener de los registros. Por ejemplo, haz lo siguiente:
    1. Para verificar que el registro esté habilitado, revisa el estado Campo logsPolicy.
    2. Para verificar que el trabajo haya terminado de ejecutarse correctamente, revisa el estado Campo status.

Después de realizar los cambios, vuelve a crear el trabajo y espera a que termine de ejecutarse antes de verificar los registros.

No hay informes de agente de servicio

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo que no se ejecuta correctamente o que falló antes de que se crearan las VMs:

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

El problema indica que ninguna de las VMs de un trabajo se reporta al Agente de servicio por lotes.

Este problema suele ocurrir por los siguientes motivos:

  • Las VMs del trabajo no tienen los permisos suficientes. Las VMs de un trabajo requieren permisos específicos para informar su estado al Agente de servicio de Batch. Puedes otorgar estos permisos para las VMs de un trabajo otorgando el Función de generador de informes de agentes por lotes (roles/batch.agentReporter) a la cuenta de servicio del trabajo.
  • Las VMs del trabajo tienen problemas de red. Las VMs de un trabajo requieren conexiones de red para comunicarse con el agente de servicio de Batch.
  • Las VMs del trabajo usan una imagen de SO de VM de Batch desactualizada o una imagen de SO de VM. con el software de agente de servicio de Batch desactualizado. Las VMs del trabajo requieren software en su imagen de SO de la VM que proporcione la las dependencias actuales para informar al Agente de servicio de Batch.

Solución

Para solucionar el problema, haz lo siguiente:

  1. Verifica que las VMs del trabajo tengan los permisos necesarios para informar su estado al agente de servicio de Batch.

    1. Para identificar la cuenta de servicio del trabajo, Visualiza los detalles del trabajo con gcloud CLI o la API de Batch. Si no aparece ninguna cuenta de servicio, el trabajo usa las Compute Engine cuenta de servicio predeterminada.
    2. Confirma que la cuenta de servicio del trabajo tenga los permisos para acceder Función de informante del agente por lotes (roles/batch.agentReporter). Para obtener más información, consulta Administrar acceso y Restringe el uso de la cuenta de servicio.

      Por ejemplo, para otorgar a la a la cuenta de servicio predeterminada de Compute Engine usa el siguiente comando:

      gcloud projects add-iam-policy-binding PROJECT_ID \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      
  2. Verifica que las VMs del trabajo tengan el acceso adecuado a la red. Para obtener más información, consulta Descripción general de las herramientas de redes por lotes Soluciona problemas comunes de red.

  3. Si especificaste la imagen de SO de la VM para el trabajo, verifica que el En la actualidad, se admite la imagen de SO de la VM.

    1. Si habilitaste Cloud Logging para el trabajo, puedes para identificar este problema verificando cualquiera de los siguientes registros del agente (batch_agent_logs). Para obtener más información, consulta Analiza un trabajo mediante registros.

      • Registro del error de software del agente de servicio de Batch desactualizado:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        BATCH_AGENT_VERSION es la versión de software de con el agente de servicio de Batch que usa tu trabajo, por ejemplo, cloud-batch-agent_20221103.00_p00.

      • Registro del error de imagen de SO de la VM de Batch desactualizada:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        BATCH_VM_OS_IMAGE_NAME es la versión específica de un Imagen de SO de la VM de Batch que usa el trabajo, por ejemplo, batch-debian-11-20220909-00-p00.

    2. Para resolver este problema, usa una imagen de SO de VM más reciente. Si el trabajo usa una imagen personalizada, vuelve a crearla según una versión más reciente de una imagen pública compatible.

      Para obtener más información, consulta Imágenes de SO de VM compatibles. y Ver imágenes de SO de la VM.

  4. Vuelve a crear el trabajo.

Faltan métricas de recursos en Cloud Monitoring

Problema

Deseas Ver métricas de recursos de un trabajo pero faltan algunas o todas las métricas esperadas.

Este problema suele ocurrir por los siguientes motivos:

  • La API no estaba habilitada para tu proyecto. Incluso si configuras correctamente todo lo demás en tu proyecto, la configuración Es posible que las métricas no aparezcan hasta que se habilite la API de Cloud Monitoring. Para el Agente de operaciones, también debes habilitar la API de Cloud Logging.
  • No tienes permisos suficientes para ver las métricas. No puedes sin permisos suficientes.
  • No se ejecutaron las VMs del trabajo. No se pueden producir métricas para un trabajo hasta que al menos una de las VMs del trabajo esté en ejecución.
  • La configuración o los permisos del trabajo no admitían las métricas del Agente de operaciones. Algunas métricas de recursos solo las puede proporcionar el Agente de operaciones. Para brindar asistencia a Ops métricas del agente, un trabajo debe cumplir los requisitos para el Agente de operaciones, el Agente de operaciones y usar una cuenta de servicio que pueda escribir métricas para Supervisión
  • Debes usar un método o un filtro diferente para ver las métricas. Algunos métodos para ver las métricas no muestran las métricas de las VMs después de que las VMs se borran. Además, las métricas no aparecerán si los filtros las omiten o el período que se muestra. Además, los gráficos de métricas tienen valores que causan que las cantidades pequeñas de datos sean demasiado delgadas para mostrarse.
  • Se borraron las métricas. No puedes ver las métricas después de borrarlas, que ocurre automáticamente después de la etapa de retención en los períodos de prueba.

Solución

Si solo faltan las métricas del Agente de operaciones, primero intenta resolver el problema siguiendo los pasos que se indican a continuación: lo siguiente:

  1. Para verificar la configuración del trabajo, haz lo siguiente:
    1. Para ver la información de configuración completa del trabajo, Visualiza los detalles del trabajo con gcloud CLI o la API de Batch. Usa el resultado para los pasos restantes.
    2. Asegúrate de que la cuenta de servicio del trabajo tenga permisos para escribir métricas del Agente de operaciones.
    3. Asegúrate de que el trabajo cumpla con todos Requisitos del Agente de operaciones
    4. Asegúrate de que el trabajo instale correctamente el Agente de operaciones. Si bien es posible instalar el Agente de operaciones de forma manual en un entorno recomendado es instalar automáticamente el Agente de operaciones estableciendo Campo installOpsAgent a true.
  2. Si el problema persiste, consulta Soluciona problemas del Agente de operaciones en la documentación de Google Cloud Observability.

De lo contrario, sigue estos pasos para resolver el problema:

  1. Asegúrate de que la API de Monitoring esté habilitada para tu proyecto:

    Habilita la API

  2. Asegúrate de que las VMs del trabajo comiencen a ejecutarse y que el tiempo de ejecución en el Supervisa los períodos de retención. Puedes ver el tiempo de ejecución del trabajo visualizar los detalles del trabajo.
  3. Verifica que no haya problemas con los métodos que usas para ver las métricas de la siguiente manera:
    1. A menos que quieras ver solo las métricas de los recursos en ejecución, asegúrate de lo siguiente: estás viendo métricas con el Explorador de métricas o una basado en los gráficos del Explorador de métricas. Otros métodos, como como los paneles de Compute Engine, no muestran las métricas de los recursos que se borraron.
    2. Asegúrate de que los período de visualización incluye el tiempo de ejecución del trabajo. En el caso de los gráficos, también asegúrate de que los resolución del gráfico es adecuado para tus datos.
    3. Asegúrate de no tener filtros que ocultan los datos.
  4. Si el problema persiste, consulta la Soluciona problemas de Cloud Monitoring en la documentación de Google Cloud Observability.

Se infringió la restricción para las direcciones IP externas de la VM

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo con errores:

Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER.
Add instance VM_NAME to the constraint to use external IP with it.

Este problema ocurre porque tu proyecto, organización o carpeta estableció la Restricción de la política de la organización de compute.vmExternalIpAccess para que solo las VMs incluidas en la lista de entidades permitidas puedan usar direcciones IP externas.

Solución

Para resolver el problema, vuelve a crear el trabajo y realiza una de las siguientes acciones:

Se incumplió la restricción de las imágenes de confianza

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo con errores:

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

Solución

Este problema ocurre porque tu proyecto estableció la Restricción de la política de imágenes confiables (compute.trustedImageProjects) para que las imágenes de Batch, que se encuentran en batch-custom-image de imágenes en el proyecto. No se permiten.

Para resolver el problema, realiza al menos una de las siguientes acciones:

El trabajo falló mientras se usaba una plantilla de instancias

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo con errores que usa una plantilla de instancias:

INVALID_FIELD_VALUE,BACKEND_ERROR

Este problema ocurre debido a problemas poco claros con la plantilla de instancias del trabajo.

Solución

Para depurar aún más el problema, haz lo siguiente:

  1. Crea un MIG mediante la plantilla de instancias y observa si se producen errores con más detalles.
  2. Opcional: Para obtener más información, consulta la operación de larga duración que crea el MIG en la consola de Google Cloud.

    Ir a Operaciones de Compute Engine

Códigos de salida de tareas con errores

Cuando falla una tarea específica de un trabajo, la tarea muestra un valor código de salida. Según cómo configures Campo ignoreExitStatus, una tarea con errores puede o no hacer que un trabajo falle.

Además de los códigos de salida que definas en un elemento ejecutable, un Batch tiene varios códigos de salida reservados, incluido el los siguientes códigos de salida.

Interrupción de VM (50001)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

Este problema ocurre cuando se genera una VM Spot para el trabajo. se interrumpe durante el tiempo de ejecución.

Solución

Para resolver el problema, realiza una de las siguientes acciones:

  • Vuelve a intentar la tarea con reintentos automatizados de tareas o volver a ejecutarlo de forma manual.
  • Para garantizar que no haya interrupción, usa VMs con de aprovisionamiento estándar.

Tiempo de espera de los informes de la VM (50,002)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.

Este problema ocurre cuando hay un tiempo de espera en el backend que causó un que el trabajo ya no reciba actualizaciones.

Solución

Para resolver este problema, vuelve a realizar la tarea con reintentos automatizados de tareas o volver a ejecutarlo de forma manual.

La VM se reinició durante la ejecución (50,003)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.

Este problema ocurre cuando una VM para un trabajo se reinicia inesperadamente durante el tiempo de ejecución.

Solución

Para resolver este problema, vuelve a realizar la tarea con reintentos automatizados de tareas o volver a ejecutarlo de forma manual.

La VM y la tarea no responden (50,004)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.

Este problema ocurre cuando una tarea alcanza el límite de tiempo para dejar de responder y no se puede cancelar.

Solución

Para resolver este problema, vuelve a realizar la tarea con reintentos automatizados de tareas o volver a ejecutarlo de forma manual.

La tarea se ejecuta durante el tiempo de ejecución máximo (50005)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.

Este problema ocurre en los siguientes casos:

  • El tiempo de ejecución de una tarea supera el límite de tiempo especificado en la Campo maxRunDuration
  • El tiempo de ejecución de un ejecutable excede el límite de tiempo especificado en Campo timeout

Para identificar específicamente qué límite de tiempo se superó, visualizar los registros del trabajo y busca un registro que mencione el código de salida 50005. Este campo textPayload de este registro indica dónde y cuándo se superó el límite de tiempo.

Solución

Para resolver el problema, intenta verificar el tiempo total de ejecución requerido por la tarea o ejecutable que superó el límite de tiempo. A continuación, realiza una de las siguientes acciones:

  • Si solo esperas ocasionalmente este error, como para una tarea o ejecutable con un tiempo de ejecución incoherente, puedes intentar volver a crear el trabajo y configurar para automatizar los reintentos de tareas para intentar aumentar la tasa de éxito.

  • De lo contrario, si la tarea o ejecutable necesita de forma intencional y coherente más de tiempo para terminar de ejecutarse que lo que permite el tiempo de espera actual establecer un tiempo de espera más largo.

Se volvió a crear la VM durante la ejecución (50006)

Problema

El siguiente problema aparece en la Campo statusEvents para un trabajo:

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.

Este problema ocurre cuando se vuelve a crear una VM para un trabajo de forma inesperada durante el tiempo de ejecución.

Solución

Para resolver este problema, vuelve a realizar la tarea con reintentos automatizados de tareas o volver a ejecutarlo de forma manual.

¿Qué sigue?