Soluciona problemas

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

Si intentas solucionar problemas en un trabajo para el que no tienes un mensaje de error, visualiza los eventos de estado antes de revisar este documento para verificar si el historial del trabajo contiene mensajes de error.

Para obtener más información sobre la solución de problemas de un trabajo, consulta los siguientes 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 tiene el estado QUEUED, aparece el siguiente problema en el 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ó porque el uso actual (QUOTA_USAGE) y el límite (QUOTA_LIMIT) de la cuota QUOTA_NAME impidieron el uso solicitado (WANT_QUOTA) del trabajo.

  • Cuando el trabajo tiene los estados QUEUED, SCHEDULED o FAILED, uno de los siguientes problemas aparece en el 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 no se pudo crear un recurso porque la solicitud 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ó, intenta esperar a que se libere más cuota.

  • Si el trabajo falló debido a una cuota insuficiente o si estas demoras persisten, intenta evitar que la cuota sea 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 divide tu uso de la cuota entre 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 y Trabaja con cuotas.

No tienes permisos suficientes para actuar como la cuenta de servicio

Problema

El siguiente problema se produce cuando intentas crear un trabajo:

  • Si el trabajo no usa una plantilla de instancias, el problema se muestra de la siguiente manera:

    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 se muestra 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
    

Este problema suele ocurrir porque el usuario que crea el trabajo no tiene los permisos suficientes para actuar como la cuenta de servicio que usa el trabajo, que se controla con 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 especificada en la plantilla coincida con la cuenta de servicio especificada en la definición del trabajo.
  2. Asegúrate de que al usuario que crea el trabajo se le haya otorgado la función de usuario de cuenta 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 se produce 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:

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

Red no válida para los Controles del servicio de VPC

Problema

El siguiente problema se produce 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 se produce porque intentas crear y ejecutar un trabajo con VMs que tienen direcciones IP externas en un perímetro de servicio de los Controles del servicio de VPC.

Para resolver el problema, crea un trabajo que bloquee el acceso externo a todas las VM.

Si quieres obtener más información sobre cómo configurar las herramientas de 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.

Errores de errores del trabajo

Si tienes problemas con un trabajo que no se ejecuta de forma correcta o falla por motivos poco claros, es posible que se deba a uno de los errores de esta sección o a uno de los códigos de salida de la siguiente sección Códigos de salida para errores de tareas.

No hay registros en Cloud Logging

Problema

Debes 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 de forma correcta todo lo demás para los registros de un trabajo, no se producirán registros si el servicio no está habilitado en tu proyecto.
  • La cuenta de servicio del trabajo no tiene permiso para escribir registros. Un trabajo no puede producir registros sin los permisos suficientes.
  • El trabajo no se configuró para producir registros. Para producir registros en Cloud Logging, un trabajo debe tener habilitado Cloud Logging. Los ejecutables del trabajo también se deben configurar para escribir cualquier información que desees que aparezca en los registros en las transmisiones de salida estándar (stdout) y error estándar (stderr). Para obtener más información, consulta Analiza un trabajo mediante registros.
  • No se ejecutaron las tareas. Los registros no se pueden producir hasta que se les asignen recursos a las tareas y comiencen a ejecutarse.

Solución

Para solucionar este problema, haz lo siguiente:

  1. Asegúrate de que la API de Cloud Logging esté habilitada para tu proyecto.
  2. Asegúrate de que la cuenta de servicio para el trabajo tenga la función de IAM de Escritor de registros (roles/logging.logWriter). Si quieres obtener más información, consulta Habilita Batch para un proyecto.
  3. Visualiza los detalles del trabajo con gcloud CLI o la API de Batch. Los detalles del trabajo pueden ayudarte a comprender por qué el trabajo no produjo registros y podrían proporcionar información que esperabas obtener de los registros. Por ejemplo, haz lo siguiente:
    1. Para verificar que el registro esté habilitado, revisa el campo logsPolicy del trabajo.
    2. Para verificar que el trabajo se ejecutó de forma correcta, revisa el campo status del trabajo.

No hay informes de agente de servicio

Problema

El siguiente problema aparece en el campo statusEvents cuando un trabajo no se ejecuta de forma correcta o 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 informa al agente de servicio de Batch.

Este problema suele ocurrir por los siguientes motivos:

  • Las VMs del trabajo no tienen permisos suficientes. Las VM de un trabajo requieren permisos específicos para informar su estado al agente de servicio de Batch. Puedes proporcionar estos permisos para las VM de un trabajo si otorgas la función de Informante del agente 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 acceso de red para comunicarse con el agente de servicio de Batch.
  • Las VM del trabajo usan una imagen de SO de VM de Batch desactualizada o una imagen de SO de VM con un software de agente de servicio de Batch desactualizado. Las VM del trabajo requieren software en su imagen de SO de VM que proporciona las dependencias actuales para informar al agente de servicio de Batch.

Solución

Para solucionar el problema, haz lo siguiente:

  1. Verifica que las VM 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, consulta los detalles del trabajo con gcloud CLI o la API de Batch. Si no se muestra ninguna cuenta de servicio, el trabajo usará la cuenta de servicio predeterminada de Compute Engine de forma predeterminada.
    2. Confirma que la cuenta de servicio del trabajo tenga permisos para la función Informante del agente por lotes (roles/batch.agentReporter). Para obtener más información, consulta Administra el acceso y Restringe el uso de cuentas de servicio.

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

      gcloud projects add-iam-policy-binding \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      

      Reemplaza PROJECT_NUMBER por el número de proyecto.

  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 y Soluciona problemas comunes de red.

  3. Si especificaste la imagen de SO de la VM para el trabajo, verifica que la imagen de SO de la VM sea compatible en la actualidad.

    1. Si habilitaste Cloud Logging para el trabajo, puedes identificar este problema si verificas cualquiera de los siguientes registros del agente (batch_agent_logs). Si deseas 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 del software para comunicarse con el agente de servicio de Batch que usa el trabajo, por ejemplo, cloud-batch-agent_20221103.00_p00.

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

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

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

    2. Puedes resolver este problema con una imagen de SO de VM más reciente. Si el trabajo usa una imagen personalizada, vuelve a crearla según una de la 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 Cómo ver imágenes de SO de VM.

  4. Vuelve a crear el trabajo.

Restricción que se infringió para las direcciones IP externas de la VM

Problema

El siguiente problema aparece en el campo statusEvents cuando se produce 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 el proyecto, la carpeta o la organización estableció la restricción de la política de la organización 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:

Restricción que se incumplió para las imágenes de confianza

Problema

El siguiente problema aparece en el campo statusEvents cuando se produce 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 se produce porque el proyecto estableció la restricción de la política de imágenes de confianza (compute.trustedImageProjects) para que no se permitan las imágenes de Batch, que se encuentran en el proyecto de imágenes batch-custom-image.

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 el campo statusEvents cuando se produce 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 con la plantilla de instancias y observa si se producen errores con más detalles.
  2. Opcional: Para intentar encontrar 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 con errores de la tarea

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

Además de los códigos de salida que defines en un ejecutable, un lote tiene varios códigos de salida reservados, incluidos los siguientes.

Interrupción de VM (50,001)

Problema

El siguiente problema aparece en el campo statusEvents de 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 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 los reintentos automatizados de tareas o con una nueva ejecución del trabajo de forma manual.
  • Para garantizar que no haya interrupciones, usa las VMs con el modelo de aprovisionamiento estándar en su lugar.

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

Problema

El siguiente problema aparece en el campo statusEvents de 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 provocó que una VM para el trabajo ya no reciba actualizaciones.

Solución

Para resolver este problema, vuelve a intentar la tarea con los reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.

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

Problema

El siguiente problema aparece en el campo statusEvents de 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 de un trabajo se reinicia de forma inesperada durante el tiempo de ejecución.

Solución

Para resolver este problema, vuelve a intentar la tarea con los reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.

La VM y la tarea no responden (50004)

Problema

El siguiente problema aparece en el campo statusEvents de 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 no responder y no se puede cancelar.

Solución

Para resolver este problema, vuelve a intentar la tarea con los reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.

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

Problema

El siguiente problema aparece en el campo statusEvents de 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 el campo maxRunDuration.
  • El tiempo de ejecución de un ejecutable supera el límite de tiempo especificado en el campo timeout

Para identificar específicamente qué límite de tiempo se superó, consulta 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 el ejecutable que excedió el límite de tiempo. A continuación, realiza una de las siguientes acciones:

  • Si solo esperas este error ocasionalmente, como en el caso de una tarea o que se puede ejecutar con un tiempo de ejecución incoherente, puedes intentar volver a crear el trabajo y configurarlo para automatizar los reintentos de tareas a fin de aumentar la tasa de éxito.

  • De lo contrario, si la tarea o que se puede ejecutar de manera coherente e intencional necesita más tiempo para terminar de ejecutarse de lo que permite el tiempo de espera actual, establece un tiempo de espera más largo.

VM recreada durante la ejecución (50,006)

Problema

El siguiente problema aparece en el campo statusEvents de 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 una VM para un trabajo se vuelve a crear de forma inesperada durante el tiempo de ejecución.

Solución

Para resolver este problema, vuelve a intentar la tarea con los reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.

¿Qué sigue?