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).
Usos de 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:
- Envías una aplicación para ejecutar tareas con el comando
kf push APP_NAME --task
. - 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. - Kf crea un PipelineRun de Tekton con valores de la aplicación y parámetros del comando
run-task
. - Tekton PipelineRun crea un pod de Kubernetes que inicia un contenedor basado en las configuraciones de la aplicación y la tarea.
- 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
. - 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).
- 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 ejecución
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.
Programar tareas
Como se ha descrito anteriormente, las tareas se pueden ejecutar de forma asíncrona mediante el comando kf run-task APP_NAME
.
También puedes programar tareas para que se ejecuten creando primero un trabajo con el comando kf create-job
y, a continuación, programándolo con el comando kf schedule-job JOB_NAME
. Puedes programar ese Job para que ejecute automáticamente Tareas según una programación cron para UNIX especificada.
Cómo se programan las tareas
Crea y programa una tarea para ejecutar la tarea. Un trabajo describe la tarea que se va a ejecutar y gestiona automáticamente la creación de tareas.
Las tareas se crean en la programación aunque las ejecuciones anteriores de la tarea sigan en curso. Si se pierde alguna ejecución por cualquier motivo, solo se ejecutará la que se haya perdido más recientemente cuando se recupere el sistema.
Si eliminas un trabajo, se eliminarán todas las tareas asociadas. Si alguna de las tareas asociadas aún estaba en curso, se eliminará de forma forzosa sin completarse.
Las tareas creadas por un trabajo programado siguen sujetas a la política de conservación de tareas.
Diferencias con PCF Scheduler
PCF Scheduler permite tener varias programaciones para un mismo trabajo, mientras que Kf solo admite una programación por trabajo. Puedes replicar el comportamiento de PCF Scheduler creando varias tareas, una por cada programación.