Tareas

Acerca de Tasks

A diferencia de las aplicaciones (procesos de larga duración), las tareas se ejecutan durante un tiempo finito y, después, se detienen. Las tareas se ejecutan en sus propios contenedores en función de la configuración de la aplicación principal y se pueden configurar para que usen recursos limitados (por ejemplo, CPU, memoria o almacenamiento en disco efímero).

Casos prácticos de las tareas

  • Migrar una base de datos
  • Ejecutar una tarea por lotes (programada o no programada)
  • Enviar un correo
  • Transformar datos (ETL)
  • Procesamiento de datos (subida, copia de seguridad o descarga)

Cómo funciona Tareas

Las tareas se ejecutan de forma asíncrona y se ejecutan de forma independiente de la aplicación principal o de otras tareas que se estén ejecutando en la misma aplicación. Una aplicación creada para ejecutar tareas no tiene rutas creadas ni asignadas, y se omite el ciclo de vida Ejecutar. Los ciclos de vida Subida de código fuente y Compilación siguen su curso y dan como resultado una imagen de contenedor que se usa para ejecutar tareas después de enviar la aplicación (consulta los ciclos de vida de las aplicaciones en Desplegar una aplicación).

El ciclo de vida de una tarea es el siguiente:

  1. Envías una aplicación para ejecutar tareas con el comando kf push APP_NAME --task.
  2. Ejecutas una tarea en la aplicación con el comando kf run-task APP_NAME. La tarea hereda las variables de entorno, las vinculaciones de servicios, la asignación de recursos, el comando de inicio y los grupos de seguridad vinculados a la aplicación.
  3. Kf crea un PipelineRun de Tekton con valores de la aplicación y parámetros del comando run-task.
  4. Tekton PipelineRun crea un pod de Kubernetes que inicia un contenedor basado en las configuraciones de la aplicación y la tarea.
  5. La ejecución de la tarea se detiene (la tarea finaliza o se cancela manualmente) y el pod subyacente se detiene o finaliza. Los pods de las tareas detenidas se conservan, por lo que se puede acceder a los registros de las tareas mediante el comando kf logs APP_NAME --task.
  6. Si finalizas una tarea antes de que se detenga, se cancelará el PipelineRun de Tekton (consulta Cancelar un PipelineRun) y se eliminará el pod subyacente junto con los registros. Los registros de las tareas finalizadas se envían a los flujos de registro a nivel de clúster si están configurados (por ejemplo, Stackdriver o Fluentd).
  7. Si el número de tareas que se ejecutan en una aplicación es superior a 500, las tareas más antiguas se eliminan automáticamente.

Política de conservación de tareas

Las tareas se crean como recursos personalizados en el clúster de Kubernetes, por lo que es importante no agotar el espacio de la base de datos etcd subyacente. De forma predeterminada, Kf solo conserva las 500 tareas más recientes de cada aplicación. Cuando el número de tareas llega a 500, las más antiguas (junto con los pods y los registros subyacentes) se eliminan automáticamente.

Registro de tareas e historial de ejecuciones

Todos los datos o mensajes que la tarea envía a STDOUT o STDERR están disponibles mediante el comando kf logs APP_NAME --task. El mecanismo de registro a nivel de clúster (como Stackdriver o Fluentd) enviará los registros de tareas al destino de registro configurado.