Executar tarefas

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