En esta página, se muestra cómo resolver problemas con Batch.
Si intentas solucionar problemas de un trabajo para el que no tienes un mensaje de error, consulta si el historial del trabajo contiene mensajes de error viendo los 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 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
Cuando intentas crear un trabajo, ocurre uno de los siguientes problemas:
Cuando el trabajo está en el estado
QUEUED
, aparece el siguiente problema en el campostatusEvents
: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 deQUOTA_NAME
impidieron el uso solicitado del trabajo (WANT_QUOTA
).Cuando el trabajo se encuentra en los estados
QUEUED
,SCHEDULED
oFAILED
, aparece uno de los siguientes problemas en el campostatusEvents
: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 excedió tu cuota de
QUOTA_NAME
, que tiene un límite deQUOTA_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 estos retrasos persisten, intenta evitar la cuota insuficiente realizando cualquiera de las siguientes acciones:
Crea trabajos que usen menos de esa cuota o una cuota diferente. Por ejemplo, puedes especificar una ubicación o un tipo de recurso permitidos diferentes para el trabajo, o bien dividir el uso de la 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 Cuotas y límites de lotes y Trabaja con cuotas.
No tienes permisos suficientes 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 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 aparecerá 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 permisos suficientes para actuar como la cuenta de servicio que usa el trabajo, lo que se controla con el permiso iam.serviceAccounts.actAs
.
Solución
Para solucionar el problema, haz lo siguiente:
- Si el trabajo usa una plantilla de instancia, verifica que la cuenta de servicio especificada en la plantilla de instancia coincida con la cuenta de servicio especificada en la definición del trabajo.
- Asegúrate de que el usuario que crea el trabajo tenga el rol 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. - 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 se produce 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 con una de las siguientes opciones:
- Plantilla de instancias de VM: Si deseas usar una plantilla de instancias de VM mientras creas este trabajo, debes especificar la red en la plantilla de instancias de VM.
- Campos
network
ysubnetwork
: Estos campos se pueden usar en el cuerpo de la solicitud cuando creas un trabajo con la API de Batch o en el archivo de configuración JSON cuando creas un trabajo con gcloud CLI. - Marcas
--network
y--subnetwork
: Estas marcas se pueden usar con el comandogcloud batch jobs submit
cuando creas un trabajo con gcloud CLI.
Para obtener más información, consulta Cómo especificar la red para un trabajo.
Red no 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 se produce porque intentas crear y ejecutar un trabajo con VMs que tienen direcciones IP externas en un perímetro de servicio de Controles del servicio de VPC.
Para resolver el problema, crea un trabajo que bloquee el acceso externo para todas las VMs.
Para obtener más información sobre cómo configurar la red 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 con los trabajos y errores de falla
Si tienes problemas con un trabajo que no se ejecuta correctamente o que falló 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 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 ocurrir por los siguientes motivos:
- La API de Cloud Logging no está habilitada para tu proyecto. Incluso si configuras correctamente todo lo demás para los registros de un trabajo, no se generarán 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 generar registros sin los permisos suficientes.
- El trabajo no se configuró para generar registros. Para generar registros en Cloud Logging, un trabajo debe tener habilitado Cloud Logging. Los ejecutables del trabajo también deben configurarse para escribir cualquier información que desees que aparezca en los registros en los flujos de salida estándar (stdout) y error estándar (stderr). Para obtener más información, consulta Cómo analizar un trabajo con registros.
- No se ejecutaron las tareas. No se pueden generar registros hasta que las tareas tengan recursos asignados y comiencen a ejecutarse.
- Cloud Logging se configuró para excluir automáticamente los registros del trabajo. Los registros de los trabajos de Batch no pueden aparecer si configuraste filtros de exclusión para Cloud Logging que provocan que se excluyan los registros de los trabajos de Batch.
Solución
Para solucionar este problema, haz lo siguiente:
- Asegúrate de que los registros no se hayan excluido automáticamente de Cloud Logging. Para ello, inhabilita los filtros de exclusión actuales de Cloud Logging.
- Asegúrate de que la API de Cloud Logging esté habilitada para tu proyecto.
- Asegúrate de que la cuenta de servicio del trabajo tenga el rol de IAM de escritor de registros (
roles/logging.logWriter
). Para obtener más información, consulta Cómo habilitar Batch para un proyecto. - Consulta 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 generó registros y pueden proporcionar información que esperabas obtener de los registros. Por ejemplo, haz lo siguiente:
- Para verificar que el registro esté habilitado, revisa el campo
logsPolicy
del trabajo. - Para verificar que el trabajo se ejecutó correctamente, revisa el campo
status
del trabajo.
- Para verificar que el registro esté habilitado, revisa el campo
Después de realizar los cambios, vuelve a crear el trabajo y espera a que termine de ejecutarse antes de consultar los registros.
No se generan informes de agente de servicio
Problema
El siguiente problema aparece en el 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 informa al agente del servicio de Batch.
Este problema suele ocurrir por los siguientes motivos:
- Las VMs del trabajo no tienen permisos suficientes.
Las VMs de un trabajo requieren permisos específicos para informar su estado al agente de servicio de Batch. Puedes proporcionar estos permisos para las VMs de un trabajo otorgando el rol de Batch Agent Reporter (
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 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 software de agente de servicio de Batch desactualizado. Las VMs del trabajo requieren software en la imagen de SO de la VM que proporcione las dependencias actuales para informar al agente de servicio de Batch.
Solución
Para solucionar el problema, haz lo siguiente:
Verifica que las VMs del trabajo tengan los permisos necesarios para informar su estado al agente de servicio de Batch.
- Para identificar la cuenta de servicio del trabajo, consulta los detalles del trabajo con gcloud CLI o la API de Batch. Si no se indica ninguna cuenta de servicio, el trabajo usa la cuenta de servicio predeterminada de Compute Engine.
Confirma que la cuenta de servicio del trabajo tenga permisos para el rol de Batch Agent Reporter (
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 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
- Reemplaza PROJECT_NUMBER por tu número de proyecto.
- Reemplaza PROJECT_ID por el ID del proyecto.
Verifica que las VMs del trabajo tengan acceso de red adecuado. Para obtener más información, consulta la Descripción general de las herramientas de redes por lotes y Soluciona problemas comunes de herramientas de redes.
Si especificaste la imagen de SO de la VM para el trabajo, verifica que la imagen de SO de la VM sea compatible actualmente.
Si habilitaste Cloud Logging para el trabajo, puedes identificar este problema verificando cualquiera de los siguientes registros del agente (
batch_agent_logs
). Para obtener más información, consulta Analiza un trabajo con registros.Registro del error de software desactualizado del agente de servicio de Batch:
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 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 una imagen de SO de la VM de Batch que usa el trabajo, por ejemplo,
batch-debian-11-20220909-00-p00
.
Puedes resolver este problema usando una imagen de SO de VM más reciente. Si el trabajo usa una imagen personalizada, vuelve a crearla en función de una de las versiones más recientes 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.
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 ocurrir por los siguientes motivos:
- La API no se habilitó para tu proyecto. Incluso si configuras correctamente todo lo demás en tu proyecto, es posible que las métricas de recursos no aparezcan hasta que se habilite la API de Cloud Monitoring. En el caso del agente de operaciones, también debes habilitar la API de Cloud Logging.
- No tienes los permisos suficientes para ver las métricas. No puedes ver las métricas sin los permisos suficientes.
- No se ejecutaron las VMs del trabajo. No se pueden generar métricas para un trabajo hasta que se ejecute al menos una de las VMs del trabajo.
- 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 admitir las métricas del Agente de operaciones, un trabajo debe cumplir con los requisitos del Agente de operaciones, instalarlo y usar una cuenta de servicio que pueda escribir métricas en Monitoring.
- Debes usar un método o 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 se borran. Además, las métricas no aparecerán si se omiten por los filtros o el período mostrado. Además, los gráficos de métricas tienen resoluciones ajustables que pueden hacer que pequeñas cantidades de datos sean demasiado escasas para mostrarse.
- Se borraron las métricas. No puedes ver las métricas después de que se borran, lo que sucede automáticamente después de los períodos de retención de Monitoring.
Solución
Si solo faltan las métricas del agente de operaciones, primero intenta resolver el problema de la siguiente manera:
- Para verificar la configuración del trabajo, haz lo siguiente:
- Para ver la información de configuración completa del trabajo, consulta los detalles del trabajo con gcloud CLI o la API de Batch. Usa el resultado para los pasos restantes.
- Asegúrate de que la cuenta de servicio del trabajo tenga los permisos para escribir métricas del agente de operaciones.
- Asegúrate de que el trabajo cumpla con todos los requisitos del agente de operaciones.
- 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 ejecutable, el método recomendado es instalarlo automáticamente configurando el campo
installOpsAgent
comotrue
.
- Si el problema persiste, consulta Soluciona problemas del agente de operaciones en la documentación de Google Cloud Observability.
De lo contrario, resuelve el problema de la siguiente manera:
- Asegúrate de que la API de Monitoring esté habilitada para tu proyecto:
- Asegúrate de que las VMs del trabajo hayan comenzado a ejecutarse y de que el tiempo de ejecución aún se encuentre dentro de los períodos de retención de la supervisión. Puedes ver el tiempo de ejecución del trabajo consultando sus detalles.
- Para verificar que no haya problemas con los métodos que usas para ver las métricas, haz lo siguiente:
- A menos que desees ver las métricas solo de los recursos en ejecución, asegúrate de ver las métricas con el Explorador de métricas o un panel personalizado creado a partir de los gráficos del Explorador de métricas. Otros métodos, como los paneles de Compute Engine, no muestran métricas para los recursos que se borraron.
- Asegúrate de que el período de publicación incluya el tiempo de ejecución del trabajo. En el caso de los gráficos, asegúrate también de que la resolución del gráfico sea adecuada para tus datos.
- Asegúrate de no tener filtros que oculten los datos.
- Si el problema persiste, consulta las páginas de Solución de problemas de Cloud Monitoring en la documentación de Google Cloud Observability.
Se incumplió la restricción para las direcciones IP externas de la VM
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, organización o carpeta configuró la restricción de la política de la organización compute.vmExternalIpAccess
de modo 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:
- Usa un proyecto que esté exento de la restricción.
- Crea un trabajo que bloquee el acceso externo para todas las VMs.
Se incumplió la restricción para las imágenes confiables
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 estableció la restricción de política de imágenes confiables (compute.trustedImageProjects
) de modo que no se permitan las imágenes de Batch, que se encuentran en el proyecto de imágenes batch-custom-image
.
Para solucionar el problema, realiza al menos una de las siguientes acciones:
- Vuelve a crear el trabajo para especificar una imagen de SO de VM que ya esté permitida por la restricción de la política de imágenes confiables.
- Pídele al administrador que permita modificar la restricción de la política de imágenes confiables para permitir imágenes del SO de VM del proyecto de imágenes
batch-custom-image
. Para obtener instrucciones, consulta Controla el acceso a imágenes del SO de VM para Batch.
El trabajo falló mientras se usaba una plantilla de instancias
Problema
El siguiente problema aparece en el campo statusEvents
de un trabajo con errores que usa una plantilla de instancia:
INVALID_FIELD_VALUE,BACKEND_ERROR
Este problema se produce debido a problemas poco claros con la plantilla de instancia del trabajo.
Solución
Para depurar el problema aún más, haz lo siguiente:
- Crea un MIG con la plantilla de instancias y observa si se producen errores con más detalles.
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 .
Códigos de salida de fallas de tareas
Cuando falla una tarea específica en un trabajo, la tarea devuelve un código de salida distinto de cero.
Según 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 ejecutable, 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 interrumpe una VM Spot para el trabajo durante el tiempo de ejecución.
Solución
Para solucionar el problema, realiza una de las siguientes acciones:
- Vuelve a intentar la tarea con reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.
- Para garantizar que no haya interrupciones, usa VMs con el modelo de aprovisionamiento estándar.
Se agotó el tiempo de espera del informe de la VM (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 hay un tiempo de espera en el backend que hace que Batch ya no reciba actualizaciones de una VM para el trabajo. Lamentablemente, muchas fallas de hardware o software pueden provocar que una VM no responda. Por ejemplo, una VM podría fallar debido a un evento temporal del host o a recursos insuficientes.
Solución
Para solucionar este problema, haz lo siguiente:
- En caso de que el problema sea temporal y se resuelva por sí solo, vuelve a intentar la tarea con los reintentos de tareas automatizados o vuelve a ejecutar el trabajo de forma manual.
Si el problema persiste, identifica y resuelve la causa por la que la VM no responde. Para ello, realiza una o más de las siguientes acciones:
Recomendación: Obtén asistencia a través de Google Cloud Asistencia o 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 de la siguiente manera:
Para identificar los nombres de las VMs de tu trabajo, haz lo siguiente:
- Visualiza los registros del trabajo.
- Filtrar registros para entradas que contengan la frase
report agent state:
Revisa los registros para determinar la VM de cada intento de cada tarea. Cada registro es similar al siguiente, en el que hay una frase de
instance:
y una o más frases detask_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
: Es el ID único (UID) del trabajo.TASK_INDEX
: Es el índice de la tarea.TASK_RETRIES
: Es el intento de la tarea que se ejecutó en esta VM, que se formatea como la cantidad de reintentos. Por ejemplo, este valor es0
para el primer intento de una tarea. Cada tarea solo se intenta una vez, a menos que habilites los reintentos de tareas automatizados.
Soluciona problemas de las VMs de tu trabajo con la documentación de Compute Engine. Por ejemplo, consulta Soluciona problemas de apagado y reinicio de las VMs y Soluciona problemas de inicio de VM.
La VM se reinició 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 para 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 se produce cuando una tarea alcanza el límite de tiempo de respuesta 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 más tiempo del máximo permitido (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 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 excedió, consulta los registros del trabajo y busca un registro que mencione el código de salida 50005
. Este campo textPayload
del registro indica dónde y cuándo se excedió el límite de tiempo.
Solución
Para resolver el problema, intenta verificar el tiempo de ejecución total que requiere la tarea o el ejecutable que superó el límite de tiempo. A continuación, realiza una de las siguientes acciones:
Si solo esperas este error de forma ocasional, por ejemplo, para 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 y aumentar la tasa de éxito.
De lo contrario, si la tarea o el ejecutable necesitan de forma constante y deliberada más tiempo para finalizar la ejecución del que permite el tiempo de espera actual, establece un tiempo de espera más largo.
Se volvió a crear la VM 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 para un trabajo 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.