website/content/pt-br/docs/tasks/job/automated-tasks-with-cron-j...

3.0 KiB

title min-kubernetes-server-version content_type weight
Executando tarefas automatizadas com CronJob v1.21 task 10

Esta página mostra como executar tarefas automatizadas usando o objeto {{< glossary_tooltip text="CronJob" term_id="cronjob" >}} no kubernetes.

{{% heading "prerequisites" %}}

  • {{< include "task-tutorial-prereqs.md" >}}

Criando um CronJob

Cron jobs requerem um arquivo de configuração. Aqui está um manifesto para CronJob que executa uma tarefa de demonstração simples a cada minuto:

{{% code_sample file="application/job/cronjob.yaml" %}}

Execute o exemplo de CronJob usando o seguinte comando:

kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml

A saída é semelhante a esta:

cronjob.batch/hello created

Após criar o cron job, obtenha o status usando este comando:

kubectl get cronjob hello

A saída é semelhante a esta:

NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     0        <none>          10s

Como você pode ver pelos resultados do comando, o cron job ainda não agendou ou executou uma tarefa ainda. {{< glossary_tooltip text="Observe" term_id="watch" >}} que a tarefa será criada em cerca de um minuto:

kubectl get jobs --watch

A saída é semelhante a esta:

NAME               COMPLETIONS   DURATION   AGE
hello-4111706356   0/1                      0s
hello-4111706356   0/1           0s         0s
hello-4111706356   1/1           5s         5s

Agora você viu uma tarefa em execução agendada pelo cron job "hello". Você pode parar de observá-lo e visualizar o cron job novamente para ver que ele agendou a tarefa:

kubectl get cronjob hello

A saída é semelhante a esta:

NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     0        50s             75s

Você deve ver que o cron job hello agendou uma tarefa com sucesso no tempo especificado em LAST SCHEDULE. Existem atualmente 0 tarefas ativas, o que significa que a tarefa foi concluída ou falhou.

Agora, encontre os pods da última tarefa agendada criada e veja a saída padrão de um dos pods.

{{< note >}} O nome da tarefa é diferente do nome do pod. {{< /note >}}

# Replace "hello-4111706356" with the job name in your system
pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[*].metadata.name})

Veja os logs do pod:

kubectl logs $pods

A saída é semelhante a esta:

Fri Feb 22 11:02:09 UTC 2019
Hello from the Kubernetes cluster

Deletando um CronJob

Quando você não precisar mais de um cron job, exclua-o com kubectl delete cronjob <cronjob name>:

kubectl delete cronjob hello

Excluindo o cron job remove todas as tarefas e pods que ele criou e impede a criação de novas tarefas. Você pode ler mais sobre como remover tarefas em garbage collection.