Tarefas

Sobre Tarefas

Diferentemente de "Apps" (processos de longa duração), o Tarefas é executado por um período finito e, em seguida, para. As tarefas são executadas nos próprios contêineres com base na configuração do app principal e podem ser configuradas para usar recursos limitados (por exemplo, CPU/memória/armazenamento de disco periférico).

Casos de uso do Tarefas

  • Como migrar um banco de dados
  • Como executar um job em lote (programado/não programado)
  • Como enviar um e-mail
  • Transformação de dados (ETL)
  • Processamento de dados (upload/backup/download)

Como o Tarefas funciona

As tarefas são executadas de forma assíncrona e executadas independentemente do app pai ou de outras tarefas em execução no mesmo app. Um app criado para executar tarefas não tem rotas criadas ou atribuídas, e o ciclo de vida Executar é ignorado. Os ciclos de vida do código-fonte e criação ainda prosseguem e resultam em uma imagem de contêiner usada para executar o Tarefas depois de enviar o app. Consulte "Ciclos de vida do app" em Como implantar um aplicativo.

O ciclo de vida de uma tarefa é o seguinte:

  1. Você envia um app para executar tarefas com o comando kf push APP_NAME --task.
  2. Você executa uma tarefa no app com o comando kf run-task APP_NAME. A tarefa herda as variáveis de ambiente, vinculações de serviço, alocação de recursos, comando de inicialização e grupos de segurança vinculados ao app.
  3. Kf cria um PipelineRun do Tekton com valores do app e de parâmetros do comando run-task.
  4. O Tekton PipelineRun cria um pod do Kubernetes que inicia um contêiner com base nas configurações do app e da tarefa.
  5. A execução da tarefa é interrompida (a tarefa é encerrada ou encerrada manualmente), o pod subjacente é interrompido ou encerrado. Os pods de tarefas interrompidas são preservados e, portanto, os registros de Tarefas são acessíveis por meio do comando kf logs APP_NAME --task.
  6. Se você encerrar uma tarefa antes de ela parar, o Tekton PipelineRun será cancelado (consulte Como cancelar um PipelineRun), o pod subjacente com os registros será excluído. Os registros de Tarefas rescindidas são entregues aos fluxos de registros no nível do cluster, se configurados (por exemplo, Stackdriver ou Fluentd).
  7. Se o número de tarefas executadas em um app for maior que 500, as Tarefas mais antigas serão excluídas automaticamente.

Política de retenção de tarefas

As tarefas são criadas como recursos personalizados no cluster do Kubernetes. Portanto, é importante não esgotar o espaço do banco de dados etcd subjacente. Por padrão, o kf mantém apenas as 500 tarefas mais recentes por app. Quando o número de tarefas chegar a 500, as Tarefas mais antigas (junto com os pods e registros subjacentes) serão excluídas automaticamente.

Geração de registros e histórico de execução

Todos os dados ou mensagens que a tarefa gera para STDOUT ou STDERR são disponibilizados usando o comando kf logs APP_NAME --task. O mecanismo de geração de registros no nível de cluster (como Stackdriver e Fluentd) enviará os registros de tarefas para o destino de geração de registros configurado.