Ejecutar tareas

Puedes ejecutar flujos de trabajo de corta duración ejecutándolos como tareas en Kf. Las tareas se ejecutan en Aplicaciones, lo que significa que cada tarea debe tener una aplicación asociada. Cada ejecución de una tarea usa los artefactos de compilación de la aplicación principal. Como las tareas son de corta duración, la aplicación no se desplegará como una aplicación de larga duración y no se deben crear rutas para la aplicación ni para la tarea.

Enviar una aplicación para ejecutar tareas

Ve al directorio del manifiesto de la aplicación o del código fuente y crea una aplicación para ejecutar tareas con el comando kf push APP_NAME --task. La marca --task indica que la aplicación se va a usar para ejecutar tareas, por lo que no se crearán rutas en la aplicación y no se desplegará como una aplicación de larga duración.

$ kf push helloworld --task

Confirma que no se han creado instancias ni rutas de la aplicación mostrando la aplicación.

$ kf apps
Listing Apps in Space: test-space
Name                     Instances  Memory  Disk  CPU   URLs
helloworld               stopped    1Gi     1Gi   100m  <nil>

Ejecutar tarea en la aplicación

Cuando ejecutas una tarea en la aplicación, puedes especificar un comando de inicio con la marca --command. Si no se especifica ningún comando de inicio, se usa el comando de inicio especificado en la aplicación. Si la aplicación no tiene ningún comando de inicio especificado, se busca la configuración CMD de la imagen de contenedor. Para que una tarea se ejecute correctamente, debe haber un comando de inicio.

$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.

El nombre de la tarea se genera automáticamente en el servidor de la API de Kubernetes. Tiene como prefijo el nombre de la aplicación y como sufijo una cadena arbitraria. El nombre de la tarea es un identificador único de las tareas del mismo clúster.

Especificar límites de recursos de tareas

Los límites de recursos (como los núcleos de CPU, el límite de memoria o la cuota de disco) se pueden especificar en la aplicación (durante kf push) o durante el comando kf run-task. Los límites especificados en el comando kf run-task tienen prioridad sobre los límites especificados en la aplicación.

Para especificar límites de recursos en una aplicación, puedes usar las marcas --cpu-cores, --memory-limit y --disk-quota en el comando kf push.

$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

Para anular estos límites en la aplicación, puedes usar las marcas --cpu-cores, --memory-limit y --disk-quota en el comando kf run-task.

$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

Especificar un nombre visible personalizado para una tarea

También puedes usar la marca --name para especificar un nombre visible personalizado de una tarea y así identificarla o agruparla más fácilmente.

$ kf run-task helloworld --command "printenv" --name foo
Task helloworld-6swct is submitted successfully for execution.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-6swct  3   foo                1m     21s       True       <nil>

Gestionar tareas

Consulta todas las tareas de una aplicación con el comando kf tasks APP_NAME.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>

Cancelar una tarea

Cancela una tarea activa con el comando kf terminate-task.

Cancelar una tarea por su nombre.

$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination

También puedes cancelar una tarea por APP_NAME + ID de tarea.

$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
  • Nota: Solo puedes cancelar las tareas pendientes o en curso. Las tareas completadas no se pueden cancelar.

Las tareas canceladas tienen el estado PipelineRunCancelled.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>
helloworld-6w6mz  2   helloworld-6w6mz   38s    11s       False      PipelineRunCancelled

Ver registros de tareas

Consulta los registros de una tarea con el comando kf logs APP_NAME --task.

$ kf logs helloworld --task