Pode executar fluxos de trabalho de curta duração executando-os como tarefas no Kf. As tarefas são executadas em Apps, o que significa que cada tarefa tem de ter uma app associada. Cada execução de tarefas usa os artefactos de compilação da app principal. Uma vez que as tarefas são de curta duração, a app não é implementada como uma aplicação de execução prolongada e não devem ser criadas rotas para a app ou a tarefa.
Envie uma app para executar tarefas
Navegue para o diretório do manifesto da app ou do código fonte e crie uma app para executar tarefas com o comando kf push APP_NAME --task
. A flag --task
indica que a app se destina a ser usada para executar tarefas e, por isso, não são criadas rotas na app, e esta não é implementada como uma aplicação de execução prolongada.
$ kf push helloworld --task
Confirme que não foram criadas instâncias nem rotas de apps ao listar a app.
$ kf apps
Listing Apps in Space: test-space
Name Instances Memory Disk CPU URLs
helloworld stopped 1Gi 1Gi 100m <nil>
Executar tarefa na app
Quando executa uma tarefa na app, pode especificar opcionalmente um comando de início através do sinalizador --command
. Se não for especificado nenhum comando de início, é usado o comando de início especificado na app. Se a app não tiver um comando de início especificado, procura a configuração CMD da imagem do contentor. Tem de existir um comando de início para executar a tarefa com êxito.
$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.
O nome da tarefa é gerado automaticamente no servidor da API Kubernetes. Tem como prefixo o nome da app e como sufixo uma string arbitrária. O nome da tarefa é um identificador exclusivo para tarefas no mesmo cluster.
Especifique os limites de recursos de tarefas
Os limites de recursos (como núcleos de CPU/limite de memória/quota de disco) podem ser especificados na app (durante kf push
) ou durante o comando kf run-task
. Os limites especificados no comando kf run-task
têm precedência sobre os limites especificados na app.
Para especificar limites de recursos numa app, pode usar as flags --cpu-cores
, --memory-limit
e --disk-quota
no comando kf push
.
$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task
Para substituir estes limites na app, pode usar as flags --cpu-cores
, --memory-limit
e --disk-quota
no comando kf run-task
.
$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G
Especifique um nome a apresentar personalizado para uma tarefa
Opcionalmente, pode usar a flag --name
para especificar um nome a apresentar personalizado para uma tarefa para facilitar a identificação/agrupamento.
$ 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>
Gerir tarefas
Veja todas as tarefas de uma app com o 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>
Cancele uma tarefa
Cancele uma tarefa ativa através do comando kf terminate-task
.
Cancelar uma tarefa pelo nome da tarefa.
$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination
Em alternativa, cancele uma tarefa por APP_NAME + ID da tarefa.
$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
- Nota: só pode cancelar tarefas pendentes/em execução. Não é possível cancelar tarefas concluídas.
As tarefas canceladas têm o 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 registos de tarefas
Veja os registos de uma tarefa através do comando kf logs APP_NAME --task
.
$ kf logs helloworld --task