Tarefas em execução

Você pode executar fluxos de trabalho de curta duração executando-os como Tarefas no Kafka. As tarefas são executadas em "Apps", o que significa que cada tarefa deve ter um app associado. Cada execução de tarefa usa os artefatos de compilação do app pai. Como as Tarefas são de curta duração, o app não será implantado como um aplicativo de longa duração, e não será preciso criar nenhuma rota para o app ou para a tarefa.

Enviar um app para executar tarefas

Navegue até o diretório do manifesto do app ou do código-fonte e crie um app para executar tarefas com o comando kf push APP_NAME --task. A sinalização --task indica que o app deve ser usado para executar tarefas. Portanto, nenhuma rota será criada no app e não será implantada como um aplicativo de longa duração.

$ kf push helloworld --task

Verifique se nenhuma instância ou rota do app foi criada listando o aplicativo.

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

Executar tarefa no app

Ao executar uma Tarefa no app, você tem a opção de especificar um comando inicial usando a sinalização --command. Se nenhum comando inicial for especificado, ele usará o comando inicial especificado no app. Se o app não tiver um comando inicial especificado, ele pesquisará a configuração de CMD da imagem do contêiner. É preciso ter um comando inicial para executar a tarefa.

$ 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. Ele tem o prefixo do app e é fixado com uma string arbitrária. O nome da tarefa é um identificador exclusivo do Tarefas no mesmo cluster.

Especificar limites de recursos da tarefa

Os limites de recursos (como núcleos de CPU/limite de memória/cota de disco) podem ser especificados no 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 no app.

Para especificar os limites de recursos em um app, use as sinalizações --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 modificar esses limites no App, use as sinalizações --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

Especificar um nome de exibição personalizado para uma tarefa

Opcionalmente, você pode usar a sinalização --name para especificar um nome de exibição 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>

Como gerenciar tarefas

Veja todas as tarefas de um 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>

Cancelar uma tarefa

Cancele uma tarefa ativa usando o comando kf terminate-task.

Cancelar uma tarefa por nome de tarefa.

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

Ou cancele uma tarefa de APP_NAME + ID da tarefa.

$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
  • Observação: você só pode cancelar tarefas que estejam pendentes/em execução. As tarefas concluídas não podem ser canceladas.

Tarefas canceladas têm status 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 da tarefa

Veja os registros de uma tarefa usando o comando kf logs APP_NAME --task.

$ kf logs helloworld --task