Solución de problemas

En esta página se explica cómo solucionar problemas con Batch.

Si estás intentando solucionar un problema de un trabajo del que no tienes ningún mensaje de error, comprueba si el historial del trabajo contiene algún mensaje de error consultando los eventos de estado antes de leer este documento.

Para obtener más información sobre cómo solucionar problemas de un trabajo, consulta los siguientes documentos:

Errores de creación de tareas

Si no puedes crear un trabajo, puede deberse a uno de los errores que se indican en esta sección.

Cuota insuficiente

Problema

Se produce uno de los siguientes problemas al intentar crear un trabajo:

  • Cuando la tarea está en el estado QUEUED, en el campo statusEvents aparece el siguiente problema:

    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 ha retrasado porque el uso actual (QUOTA_USAGE) y el límite (QUOTA_LIMIT) de la cuota de QUOTA_NAME han impedido que se lleve a cabo el uso solicitado (WANT_QUOTA) del trabajo.

  • Cuando la tarea está en los estados QUEUED, SCHEDULED o FAILED, aparece uno de los siguientes problemas 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 ha podido crear un recurso porque la solicitud ha superado la cuota de QUOTA_NAME, que tiene un límite de QUOTA_LIMIT en la ubicación especificada.

Solución

Para solucionar el problema, sigue estos pasos:

  • Si el trabajo se ha retrasado, espera a que se libere más cuota.

  • Si el trabajo ha fallado porque la cuota no era suficiente o si estos retrasos persisten, intenta evitar que la cuota sea insuficiente haciendo lo siguiente:

    • Crea trabajos que usen menos de ese cupo o un cupo diferente. Por ejemplo, especifica otra ubicación o tipo de recurso permitidos para la tarea, o divide el uso de tu cuota en proyectos adicionales.

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

Para obtener más información, consulta las páginas sobre cuotas y límites de las solicitudes por lotes y trabajar con cuotas.

No tienes permisos suficientes para actuar como cuenta de servicio

Problema

Se produce el siguiente problema cuando intentas crear un trabajo:

  • Si el trabajo no usa una plantilla de instancia, 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 instancia, 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 producirse porque el usuario que crea el trabajo no tiene permisos suficientes para actuar como la cuenta de servicio que usa el trabajo, que se controla mediante el permiso iam.serviceAccounts.actAs.

Solución

Para solucionar el problema, sigue estos pasos:

  1. Si la tarea usa una plantilla de instancia, comprueba que la cuenta de servicio especificada en la plantilla de instancia coincida con la cuenta de servicio especificada en la definición de la tarea.
  2. Asegúrate de que el usuario que crea el trabajo tenga asignado el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio especificada para el trabajo. Para obtener más información, consulta Gestionar el acceso.
  3. Vuelve a crear el trabajo.

Redes repetidas

Problema

Se produce el siguiente problema cuando intentas crear un trabajo:

Networks must be distinct for NICs in the same InstanceTemplate

Este problema se produce porque ha especificado la red de un trabajo más de una vez.

Solución

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

Para obtener más información, consulta Especificar la red de un trabajo.

Red no válida para Controles de Servicio de VPC

Problema

Se produce el siguiente problema 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 Controles de Servicio de VPC.

Para solucionar el problema, crea un trabajo que bloquee el acceso externo de todas las máquinas virtuales.

Para obtener más información sobre cómo configurar la red de un trabajo en un perímetro de servicio de Controles de Servicio de VPC, consulta Usar Controles de Servicio de VPC con Batch.

Problemas y errores de fallo de las tareas

Si tienes problemas con un trabajo que no se ejecuta correctamente o que ha fallado por motivos poco claros, puede deberse a uno de los errores de esta sección o a uno de los códigos de salida de la sección Códigos de salida de errores de tareas.

No hay registros en Cloud Logging

Problema

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

Este problema suele producirse por los siguientes motivos:

  • La API Cloud Logging no está habilitada en su proyecto. Aunque configures correctamente el resto de los elementos de los registros de un trabajo, no se generará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 generar registros si no tiene permisos suficientes.
  • El trabajo no se ha configurado para generar registros. Para generar registros en Cloud Logging, una tarea debe tener habilitado Cloud Logging. Los elementos ejecutables de la tarea también deben configurarse para escribir en los flujos de salida estándar (stdout) y de error estándar (stderr) cualquier información que quieras que aparezca en los registros. Para obtener más información, consulta Analizar un trabajo mediante registros.
  • Las tareas no se han ejecutado. No se pueden generar registros hasta que se hayan asignado recursos a las tareas y estas se hayan puesto en marcha.
  • Cloud Logging se ha configurado para excluir automáticamente los registros del trabajo. Los registros de los trabajos de Batch no pueden aparecer si has configurado filtros de exclusión para Cloud Logging que provoquen que se excluyan los registros de los trabajos de Batch.

Solución

Para solucionar este problema, sigue estos pasos:

  1. Comprueba que los registros no se hayan excluido automáticamente de Cloud Logging. Para ello, inhabilita los filtros de exclusión de Cloud Logging.
  2. Asegúrate de que la API Cloud Logging esté habilitada en tu proyecto.
  3. Asegúrate de que la cuenta de servicio del trabajo tenga el rol de gestión de identidades y accesos Escritor de registros (roles/logging.logWriter). Para obtener más información, consulta Habilitar Batch en un proyecto.
  4. Consulta los detalles de la tarea con la CLI de gcloud o la API de Batch. Los detalles del trabajo pueden ayudarte a entender por qué no se han generado registros y pueden proporcionarte la información que esperabas obtener de los registros. Por ejemplo, haz lo siguiente:
    1. Para verificar que el registro está habilitado, consulta el campo logsPolicy del trabajo.
    2. Para verificar que el trabajo se ha completado correctamente, consulta el campo status del trabajo.

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

No service agent reporting

Problema

El siguiente problema aparece en el campo statusEvents de un trabajo que no se está ejecutando correctamente o que ha fallado 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 máquinas virtuales de un trabajo envía información al agente del servicio Batch.

Este problema suele producirse por los siguientes motivos:

  • Las VMs del trabajo no tienen permisos suficientes. Las VMs de un trabajo requieren permisos específicos para informar de su estado al agente de servicio de Batch. Puedes proporcionar estos permisos para las VMs de un trabajo concediendo el rol Reporter de agente de Batch (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 a la red para comunicarse con el agente del servicio Batch.
  • Las VMs del trabajo usan una imagen de SO de VM de Batch obsoleta o una imagen de SO de VM con un software de agente de servicio de Batch obsoleto. Las VMs del trabajo requieren software en su imagen de SO de VM que proporcione las dependencias actuales para generar informes al agente del servicio Batch.

Solución

Para solucionar el problema, sigue estos pasos:

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

    1. Para identificar la cuenta de servicio de la tarea, consulta los detalles de la tarea mediante la CLI de gcloud o la API Batch. Si no se indica ninguna cuenta de servicio, la tarea usará de forma predeterminada la cuenta de servicio predeterminada de Compute Engine.
    2. Confirma que la cuenta de servicio del trabajo tiene permisos para el rol Reporter de agente de Batch (roles/batch.agentReporter). Para obtener más información, consulta Gestionar el acceso y Restringir el uso de cuentas de servicio.

      Por ejemplo, para conceder a la cuenta de servicio predeterminada de Compute Engine los permisos necesarios, 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. Comprueba que las VMs del trabajo tengan acceso de red adecuado. Para obtener más información, consulta los artículos Descripción general de las redes por lotes y Solucionar problemas de red habituales.

  3. Si has especificado la imagen del SO de la VM para el trabajo, comprueba que la imagen del SO de la VM sea compatible.

    1. Si has habilitado Cloud Logging para el trabajo, puedes identificar este problema buscando cualquiera de los siguientes registros del agente (batch_agent_logs). Para obtener más información, consulta Analizar un trabajo con registros.

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

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

        La 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 del SO de la VM de Batch obsoleta:

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

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

    2. Para solucionar este problema, puedes usar una imagen del SO de la máquina virtual más reciente. Si el trabajo usa una imagen personalizada, vuelve a crearla a partir de una de las últimas versiones de una imagen pública compatible.

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

  4. Vuelve a crear el trabajo.

Faltan métricas de recursos en Cloud Monitoring

Problema

Quieres ver las métricas de recursos de un trabajo, pero faltan algunas o todas las métricas esperadas.

Este problema suele producirse por los siguientes motivos:

  • La API no está habilitada en tu proyecto. Aunque configures correctamente el resto de los elementos de tu proyecto, es posible que las métricas de recursos no aparezcan hasta que se habilite la API Cloud Monitoring. En el caso del agente de Ops, también debes habilitar la API Cloud Logging.
  • No tienes permisos suficientes para ver las métricas. No puedes ver las métricas si no tienes los permisos suficientes.
  • Las VMs del trabajo no se han ejecutado. No se pueden generar métricas de una tarea hasta que se ejecute al menos una de las VMs de la tarea.
  • La configuración o los permisos del trabajo no admitían métricas del agente de operaciones. Algunas métricas de recursos solo las puede proporcionar el agente de Ops. Para admitir las métricas del agente de operaciones, un trabajo debe cumplir los requisitos del agente de operaciones, instalarlo y usar una cuenta de servicio que pueda escribir métricas en Monitoring.
  • Debes usar otro método o filtro para ver las métricas. Algunos métodos para ver métricas no muestran las métricas de las VMs después de que se hayan eliminado. Además, las métricas no aparecerán si se omiten por los filtros o el periodo que se muestra. Además, los gráficos de métricas tienen resoluciones ajustables, lo que puede provocar que pequeñas cantidades de datos sean demasiado escasas para mostrarse.
  • Se han eliminado las métricas. No puede ver las métricas después de que se hayan eliminado, lo que ocurre automáticamente tras los periodos de conservación de Monitoring.

Solución

Si solo faltan las métricas del agente de operaciones, prueba primero a resolver el problema haciendo lo siguiente:

  1. Para verificar la configuración del trabajo, haz lo siguiente:
    1. Para ver la información de configuración completa de la tarea, consulta los detalles de la tarea mediante la CLI de gcloud o la API Batch. Usa el resultado en los pasos restantes.
    2. Asegúrate de que la cuenta de servicio del trabajo tenga los permisos para escribir métricas del agente de operaciones.
    3. Asegúrate de que el trabajo cumpla todos los requisitos del agente de operaciones.
    4. Asegúrate de que el trabajo instale correctamente el agente de operaciones. Aunque es posible instalar el agente de operaciones manualmente en un ejecutable, el método recomendado es instalarlo automáticamente configurando el campo installOpsAgent en true.
  2. Si el problema persiste, consulta la sección Solucionar problemas del agente de Ops de la documentación de Google Cloud Observability.

De lo contrario, soluciona el problema de la siguiente manera:

  1. Comprueba que la API Monitoring esté habilitada en tu proyecto:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Asegúrate de que las VMs del trabajo se hayan puesto en marcha y de que el tiempo de ejecución siga estando dentro de los periodos de conservación de la monitorización. Para ver el tiempo de ejecución de la tarea, consulta los detalles de la tarea.
  3. Para comprobar que no hay ningún problema con los métodos que usas para ver las métricas, haz lo siguiente:
    1. A menos que solo quieras ver las métricas de los recursos en ejecución, asegúrate de que estás viendo las métricas con el explorador de métricas o con un panel de control personalizado creado a partir de gráficos del explorador de métricas. Otros métodos, como los paneles de control de Compute Engine, no muestran métricas de los recursos que se han eliminado.
    2. Asegúrate de que el periodo de publicación incluya el tiempo de ejecución del trabajo. En el caso de los gráficos, asegúrate de que la resolución del gráfico sea adecuada para tus datos.
    3. Asegúrese de que no haya ningún filtro que oculte los datos.
  4. Si el problema persiste, consulta las páginas sobre solución de problemas de Cloud Monitoring en la documentación de Google Cloud Observability.

Se ha infringido la restricción de las direcciones IP externas de las VMs

Problema

El siguiente problema aparece en el campo statusEvents de un trabajo fallido:

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 se produce porque tu proyecto, carpeta u organización ha definido la restricción de política de organización compute.vmExternalIpAccess para que solo las VMs incluidas en la lista de permitidas puedan usar direcciones IP externas.

Solución

Para solucionar el problema, vuelve a crear el trabajo y haz una de las siguientes acciones:

Se ha incumplido una restricción de imágenes de confianza

Problema

El siguiente problema aparece en el campo statusEvents de un trabajo fallido:

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 tu proyecto ha definido la restricción de política de imágenes de confianza (compute.trustedImageProjects) de forma que no se permiten las imágenes de Batch, que están en el proyecto de imágenes batch-custom-image.

Para solucionar el problema, haz al menos una de las siguientes acciones:

La tarea ha fallado al usar una plantilla de instancia

Problema

El siguiente problema aparece en el campo statusEvents de un trabajo fallido que usa una plantilla de instancia:

INVALID_FIELD_VALUE,BACKEND_ERROR

Este problema se debe a problemas poco claros con la plantilla de instancia del trabajo.

Solución

Para depurar el problema, haz lo siguiente:

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

    Ir a Operaciones de Compute Engine

Códigos de salida de errores de tareas

Cuando falla una tarea específica de un trabajo, la tarea devuelve un código de salida distinto de cero. En función de cómo configures el campo ignoreExitStatus, es posible que una tarea fallida provoque o no que falle un trabajo.

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

Interrupción de VM (50001)

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 se produce cuando se expropia una VM de acceso puntual para el trabajo durante el tiempo de ejecución.

Solución

Para solucionar el problema, haz una de las siguientes acciones:

  • Vuelve a intentar realizar la tarea mediante reintentos de tareas automatizados o volviendo a ejecutar el trabajo manualmente.
  • Para asegurarte de que no haya expropiaciones, usa VMs con el modelo de aprovisionamiento estándar.

Tiempo de espera de los informes de máquinas virtuales (50002)

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 se produce cuando se agota el tiempo de espera en el backend, lo que provoca que Batch deje de recibir actualizaciones de una VM para el trabajo. Desafortunadamente, muchos errores de hardware o software pueden provocar que una máquina virtual no responda. Por ejemplo, una máquina virtual puede fallar debido a un evento temporal del host o a recursos insuficientes.

Solución

Para solucionar este problema, sigue estos pasos:

  1. Si el problema es temporal y se resuelve solo, vuelve a intentar realizar la tarea mediante reintentos de tareas automatizados o volviendo a ejecutar el trabajo manualmente.
  2. Si el problema persiste, identifique y resuelva la causa por la que la máquina virtual no responde. Para ello, haga una o varias de las siguientes acciones:

    • Recomendación: Obtén asistencia a través de Google Cloud Asistencia o de la etiqueta de lote en los foros de Cloud.

    • Intenta identificar y resolver el problema por tu cuenta. Por ejemplo, si conoces Compute Engine, puedes intentar solucionar los problemas de las VMs del trabajo haciendo lo siguiente:

      1. Para identificar los nombres de las VMs de tu trabajo, haz lo siguiente:

        1. Consulta los registros de la tarea.
        2. Filtra los registros para las entradas que contengan la frase report agent state:.
        3. Revisa los registros para determinar la máquina virtual de cada intento de cada tarea. Cada registro es similar al siguiente, en el que hay una frase instance: y una o varias frases task_id:.

          report agent state: ... instance:"INSTANCE_NAME" ... task_id:"task/JOB_UID-group0-TASK_INDEX/TASK_RETRIES/0 ..."
          

          Este registro incluye los siguientes valores:

          • INSTANCE_NAME: el nombre de la VM.
          • JOB_UID: el ID único (UID) del trabajo.
          • TASK_INDEX: el índice de la tarea.
          • TASK_RETRIES: el intento de la tarea que se ha ejecutado en esta máquina virtual, que se muestra como el número de reintentos. Por ejemplo, este valor es 0 para el primer intento de una tarea. Cada tarea se intenta solo una vez, a menos que habilites los reintentos de tareas automatizados.
      2. Soluciona los problemas de las VMs de tu trabajo con la documentación de Compute Engine. Por ejemplo, consulta los artículos Solucionar problemas de apagado y reinicio de máquinas virtuales y Solucionar problemas de inicio de máquinas virtuales.

La VM se ha reiniciado durante la ejecución (50003)

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 se produce cuando una VM de un trabajo se reinicia inesperadamente durante el tiempo de ejecución.

Solución

Para solucionar este problema, vuelve a intentar realizar la tarea mediante reintentos de tareas automatizados o volviendo a ejecutar el trabajo manualmente.

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 se produce cuando una tarea alcanza el límite de tiempo de falta de respuesta y no se puede cancelar.

Solución

Para solucionar este problema, vuelve a intentar realizar la tarea mediante reintentos de tareas automatizados o volviendo a ejecutar el trabajo manualmente.

La tarea supera el tiempo de ejecución máximo (50005)

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 se produce en los siguientes casos:

  • El tiempo de ejecución de una tarea supera el límite especificado en el campo maxRunDuration.
  • El tiempo de ejecución de un elemento ejecutable supera el límite de tiempo especificado en el campo timeout.

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

Solución

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

  • Si solo esperas que se produzca este error de vez en cuando, por ejemplo, en una tarea o un elemento ejecutable con un tiempo de ejecución incoherente, puedes intentar volver a crear el trabajo y configurarlo para automatizar los reintentos de tareas con el fin de aumentar la tasa de éxito.

  • De lo contrario, si la tarea o el ejecutable necesita de forma constante e intencionada más tiempo para finalizar que el tiempo de espera actual, establece un tiempo de espera más largo.

VM recreada durante la ejecución (50006)

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 se produce cuando se vuelve a crear una VM de un trabajo de forma inesperada durante el tiempo de ejecución.

Solución

Para solucionar este problema, vuelve a intentar realizar la tarea mediante reintentos de tareas automatizados o volviendo a ejecutar el trabajo manualmente.

Siguientes pasos