1001Ferramentas
Dev

K8s CronJob YAML

Gere um Kubernetes CronJob em YAML com a expressão de schedule e o container a executar. Agende tarefas recorrentes no cluster e aplique com kubectl.

YAML

Agendar tarefa no cluster sem errar aninhamento

Você quer um backup rodando às duas da manhã dentro do cluster, e a resposta é um CronJob. O problema é a estrutura: um spec dentro de jobTemplate dentro de spec dentro de template dentro de outro spec, cinco níveis antes de chegar ao container. É o objeto do Kubernetes em que mais gente erra a indentação e desiste no meio, voltando para o crontab de uma máquina qualquer.

A saída traz apiVersion batch/v1, o nome que você digitou, o schedule entre aspas e um único container chamado job com a imagem informada, mais restartPolicy OnFailure. As aspas no schedule não são enfeite: sem elas, certas expressões viram outra coisa no parser de YAML. Não há campo para command nem args, então a imagem precisa já fazer o trabalho certo no próprio ENTRYPOINT.

O detalhe que pega quase todo mundo: o schedule roda no fuso do controlador, normalmente UTC, a menos que você declare o campo timeZone. No horário de Brasília, um agendamento marcado para as 2h dispara às 23h do dia anterior. Se a imagem for genérica como a alpine, acrescente command e args. E para tarefa que não pode sobrepor a execução anterior, adicione concurrencyPolicy Forbid. O YAML é gerado no navegador.

Perguntas frequentes

O horário do schedule usa o meu fuso?
Não por padrão. O CronJob segue o fuso do kube-controller-manager, que quase sempre é UTC. A partir do Kubernetes 1.27 dá para declarar spec.timeZone com algo como America/Sao_Paulo.
Como passo um comando para o container?
Adicione command e args dentro do bloco do container, no mesmo nível de image. A página não gera esses campos, então é edição manual depois de copiar.
Por que meus Jobs antigos ficam acumulando?
É o comportamento padrão: três execuções bem-sucedidas e uma com falha ficam guardadas. Ajuste successfulJobsHistoryLimit e failedJobsHistoryLimit no spec do CronJob.

Ferramentas Relacionadas