Puedes ejecutar flujos de trabajo de corta duración y ejecutarlos como tareas en Kf. Las tareas se ejecutan en apps, lo que significa que cada tarea debe tener una aplicación asociada. Cada ejecución de tareas usa los artefactos de compilación de la app principal. Como las tareas son de corta duración, la aplicación no se implementará como una aplicación de larga duración y no se deben crear rutas para la aplicación ni la tarea.
Envía una app para ejecutar tareas
Navega al directorio del manifiesto de la app o al código fuente y crea una app para ejecutar las tareas con el comando kf push APP_NAME --task
. La marca --task
indica que la aplicación está diseñada para usarse en la ejecución de tareas, por lo que no se crearán rutas en la app y no se implementará como una aplicación de larga duración.
$ kf push helloworld --task
Para confirmar que no se crearon instancias o rutas de apps, enumera la app.
$ kf apps
Listing Apps in Space: test-space
Name Instances Memory Disk CPU URLs
helloworld stopped 1Gi 1Gi 100m <nil>
Ejecuta tareas en la app
Cuando ejecutas una tarea en la aplicación, tienes la opción de especificar un comando de inicio con la marca --command
. Si no se especifica ningún comando de inicio, este usa el comando de inicio especificado en la aplicación. Si la app no tiene un comando de inicio especificado, busca la configuración de CMD de la imagen del contenedor. Debe existir un comando de inicio para ejecutar la tarea de forma correcta.
$ 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 un prefijo con el nombre de la aplicación y un sufijo con una string arbitraria. El nombre de la tarea es un identificador único para tareas dentro del mismo clúster.
Especifica los límites de recursos de las tareas
Los límites de recursos (como el núcleo de la CPU, el límite de memoria o la cuota de disco) se pueden especificar en la app (durante kf push
) o en el comando kf run-task
. Los límites especificados en el comando kf run-task
tienen prioridad sobre los límites especificados en la app.
Para especificar los límites de recursos en una app, 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 app, 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
Especifica un nombre visible personalizado para una tarea
De forma opcional, puedes usar la marca --name
a fin de especificar un nombre visible personalizado para una tarea a fin de facilitar la identificación o agrupación.
$ 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>
Administra las tareas
Usa el comando kf tasks APP_NAME
para consultar todas las tareas de una app.
$ 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>
Cancela una tarea
Cancela una tarea activa con el comando kf terminate-task
.
Cancela una tarea por su nombre.
$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination
O cancela una tarea con APP_NAME + el ID de la tarea.
$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
- Nota: Solo puedes cancelar tareas que estén pendientes o en ejecución; 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
Consulta los registros de tareas
Usa el comando kf logs APP_NAME --task
para ver los registros de una tarea.
$ kf logs helloworld --task