De forma predeterminada, cada tarea se ejecuta durante 10 minutos como máximo: puedes cambiar a un tiempo más corto o a un máximo de 168 horas (7 días). Para las tareas que usan GPUs, el tiempo de espera máximo disponible es de 12 horas (versión preliminar).
Puedes establecer el tiempo de espera de las tareas como se describe en esta página. No hay un tiempo de espera explícito en la ejecución de un trabajo: cuando se completan todas las tareas, la ejecución del trabajo finaliza.
Las unidades especifican una duración. Puedes especificar la duración del tiempo de espera como un valor de número entero en segundos, minutos u horas. Por ejemplo, para establecer la duración del tiempo de espera en
10 minutos y 5 segundos, especifica el valor como 605 segundos.
Si tu trabajo tiene habilitados los reintentos, el parámetro de configuración del tiempo de espera se aplica a cada intento de una tarea. Si el intento de tarea no se completa en este tiempo, se detendrá. Cuanto más tiempo se ejecute un trabajo, más probable será que tenga problemas que provoquen su falla, como fallas de dependencia descendente, errores de memoria insuficiente o problemas de infraestructura. Te recomendamos que habilites los reintentos para todos los trabajos, pero, en especial, para los que tienen tareas de larga duración.
Eventos de mantenimiento
Las tareas que no usan GPU se migran en vivo durante los eventos de mantenimiento. Las tareas que usan GPUs no se pueden migrar en vivo y, en su lugar, se finalizan. Obtén más información.
El proceso de migración conserva el estado de la tarea, con una excepción notable: las conexiones de red de VPC salientes se interrumpen durante los eventos de mantenimiento. Te recomendamos que uses bibliotecas cliente que puedan manejar restablecimientos ocasionales de la conexión.
Cloud Run imprime un mensaje de registro cada vez que se inicia y finaliza una tarea.
Además, si deseas supervisar o controlar los eventos de mantenimiento de una manera específica,
puedes detectar el indicador SIGTSTP, que se envía 10 segundos antes de que se migre
una tarea. Después de la migración, la tarea recibe una señal SIGCONT de inmediato después de reiniciar la tarea.
La siguiente muestra de Go es una función que detecta estas señales y, luego, imprime una entrada de registro:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
Trabajos de GPU de larga duración
En algunos casos, como los trabajos de GPU de larga duración, los eventos de mantenimiento pueden provocar la interrupción o finalización de las instancias sin migración en vivo.
Para controlar estos
eventos de forma correcta, una opción es detectar el indicador SIGTERM, que Cloud Run
envía 10 segundos antes de que finalice la tarea, para guardar el progreso escribiendo
puntos de control finales y guardando el estado en el almacenamiento persistente. Consulta
Diseña trabajos de GPU resilientes de larga duración para obtener más
detalles.
Sin embargo, ten en cuenta que tienes aproximadamente 10 segundos después de SIGTERM antes de que se finalice la tarea.
Este tiempo no es suficiente para escribir un punto de control de modelo grande. Trata el controlador SIGTERM
como un vaciado de mejor esfuerzo solo para estados pequeños y confía en los puntos de control
periódicos como tu protección principal. Elige el intervalo de puntos de control
en función de la cantidad de trabajo que puedas perder.
Debido a que las tareas de GPU no se migran en vivo, se espera que una tarea configurada con un tiempo de espera de varias horas se interrumpa al menos una vez antes de completarse. El tiempo de espera de la tarea es un máximo, no una garantía de ejecución ininterrumpida.
Roles obligatorios
Para obtener los permisos que necesitas para configurar los trabajos de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Desarrollador de Cloud Run (
roles/run.developer) en el trabajo de Cloud Run - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.
Establece el tiempo de espera de las tareas
A fin de especificar el tiempo de espera de la tarea para un trabajo de Cloud Run, sigue estos pasos:
Console
En la consola de Google Cloud , ve a la página de Cloud Run:
Selecciona Trabajos en el menú de navegación de Cloud Run:
Si creas un trabajo nuevo, haz clic en Implementar contenedor para completar la página de configuración inicial del trabajo.
Si quieres configurar un trabajo existente, selecciónalo y, luego, haz clic en Ver y editar la configuración del trabajo.
Haz clic en Contenedores, conexiones y seguridad para expandir la página de propiedades del trabajo.
En el campo Tiempo de espera de la tarea, especifica la duración máxima de las tareas de trabajo en el trabajo actual y selecciona una Unidad de tiempo. Solo puedes especificar la duración del tiempo de espera como un valor de número entero en segundos, minutos u horas. Por ejemplo, para establecer una duración de 10 minutos y 5 segundos, en el campo Tiempo de espera de la tarea, especifica
605y selecciona la Unidad de tiempo como segundos.Haz clic en Crear o Actualizar.
gcloud
Para un trabajo que estés creando, sigue estos pasos:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Reemplazar
- JOB_NAME por el nombre de tu trabajo.
IMAGE_URL: Es una referencia a la imagen de contenedor, por ejemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT por la duración máxima de las tareas de trabajo, mediante la especificación de la cantidad de tiempo y las unidades: por ejemplo,
10m5ses de diez minutos y cinco segundos.
Para un trabajo que estás actualizando:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Si creas un trabajo nuevo, omite este paso. Si actualizas un trabajo existente, descarga su configuración de YAML:
gcloud run jobs describe JOB --format export > job.yaml
Actualiza el atributo
timeoutSeconds::apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Reemplaza lo siguiente:
- JOB_NAME por el nombre de tu trabajo.
IMAGE_URL: Es una referencia a la imagen de contenedor, por ejemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT por la duración máxima de las tareas de trabajo,
y especifica la cantidad de tiempo y las unidades Solo puedes especificar la hora
como un valor de número entero en segundos, minutos u horas. Por ejemplo, para establecer
una duración de 10 minutos y 5 segundos, especifica
605.
También puedes especificar más opciones de configuración, como variables de entorno o límites de memoria.
Actualiza la configuración del trabajo existente:
gcloud run jobs replace job.yaml
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega lo siguiente a un recursogoogle_cloud_run_v2_job
en tu configuración de Terraform:Visualiza la configuración del tiempo de espera de las tareas
Para ver la configuración actual del tiempo de espera de las tareas de tu trabajo de Cloud Run, usa la consola de Google Cloud o Google Cloud CLI:
Console
En la consola de Google Cloud , ve a la página de trabajos de Cloud Run:
Haz clic en el trabajo para abrir la página Detalles del trabajo.
Haz clic en Ver y editar la configuración del trabajo.
Ubica la configuración del tiempo de espera de las tareas en los detalles de configuración.
gcloud
Ejecuta el comando siguiente:
gcloud run jobs describe JOB
Busca la configuración de tiempo de espera de las tareas en la configuración que se muestra.