Pular para o conteúdo
CronExplain

Explicador de agendamento do Kubernetes CronJob

Um CronJob do Kubernetes cria Jobs segundo um agendamento recorrente escrito em sintaxe cron padrão. Cole o valor de spec.schedule para ver o que ele significa e quando os próximos Jobs serão criados.

O que significa

Kubernetes CronJob: cinco campos padrão mais macros. Defina spec.timeZone para usar um fuso diferente do controlador.

✓ Válida · O que significa

Na hora certa, a cada 6 horas

Atalhos

Próximas 10 execuções

#Em UTCSeu horário local
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

O mesmo agendamento em outros dialetos

  • crontab padrão0 */6 * * *
  • Quartz0 0 */6 * * ?
  • AWS EventBridgecron(0 */6 * * ? *)As regras do EventBridge usam UTC.
  • Spring0 0 */6 * * *

Construtor visual

Escolha valores para cada campo. O construtor gera uma expressão padrão de cinco campos, convertida para o dialeto selecionado ao ser usada.

Minuto
Hora
Dia do mês
Mês
Dia da semana
0 9 * * 1-5

O campo schedule

spec.schedule recebe uma expressão cron de cinco campos, por exemplo "0 */6 * * *" para a cada seis horas. O Kubernetes também aceita macros como @hourly, @daily, @weekly, @monthly e @yearly. Coloque o valor entre aspas no YAML para que os asteriscos não sejam mal interpretados.

Fusos horários com spec.timeZone

Sem fuso horário, os agendamentos são interpretados no fuso do kube-controller-manager, geralmente UTC. Desde o Kubernetes 1.27 você pode definir spec.timeZone com um nome IANA como America/Sao_Paulo. Escolha o mesmo fuso na ferramenta para ver os horários exatos de criação, incluindo mudanças de horário.

Execuções perdidas e concorrência

Se o controlador perder um horário agendado, startingDeadlineSeconds define com quanto atraso um Job ainda pode começar. concurrencyPolicy controla o que acontece quando uma execução ainda está ativa: Allow, Forbid ou Replace. Leve essas configurações em conta ao escolher agendamentos frequentes, como a cada minuto.

Use kubectl create job --from=cronjob/<nome> <nome-do-job> para iniciar uma execução imediata durante os testes, e kubectl get cronjob para conferir as colunas LAST SCHEDULE e ACTIVE. Os eventos do objeto CronJob explicam por que um horário agendado foi pulado ou por que um Job não conseguiu iniciar.

Um manifesto mínimo

Um CronJob usa apiVersion batch/v1 e kind CronJob, com spec.schedule, um spec.timeZone opcional e um jobTemplate que descreve o Pod a executar. Defina suspend: true para pausar o agendamento sem apagá-lo, e use successfulJobsHistoryLimit e failedJobsHistoryLimit para controlar quantos Jobs concluídos ficam guardados para depuração.

Perguntas frequentes

O CronJob do Kubernetes suporta segundos?
Não. O agendamento tem cinco campos, então o menor intervalo é de um minuto.
Posso usar CRON_TZ no agendamento?
Não. Os prefixos TZ e CRON_TZ não são suportados; use o campo spec.timeZone.
O que significa 0 */6 * * *?
A cada seis horas, na hora cheia: 00:00, 06:00, 12:00 e 18:00.
Por que meu CronJob rodou duas vezes ou não rodou?
Verifique startingDeadlineSeconds e concurrencyPolicy, e se o controlador estava fora do ar. CronJobs buscam criar cerca de um Job por horário agendado, mas não garantem isso.