O CronJob é um workload que não gerencia Pods diretamente; ele cria instâncias de Job independentes conforme um agendamento e rastreia seu status. Utilize-o para tarefas periódicas, como backups, geração de relatórios ou envio de e-mails. Este tópico mostra como criar um CronJob no console ou com kubectl.
Crie um CronJob pelo console do ACK ou via kubectl.
As imagens de exemplo são públicas. Seu cluster precisa de acesso à Internet para baixá-las:
Ativar acesso à Internet para um cluster existente (recomendado): Crie um NAT gateway público na Virtual Private Cloud (VPC) que hospeda o cluster para habilitar o acesso à Internet para todos os recursos.
Atribuir IPs públicos estáticos aos nós: Nós com IPs públicos podem baixar imagens públicas, mas cada nó que executa o workload precisa ter um IP público.
Pré-requisitos
Um cluster ACK com acesso à Internet
(Para kubectl) kubectl conectado ao cluster
Crie um CronJob pelo console
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel à esquerda, selecione Workloads > CronJobs.
Na página CronJobs, clique em Create from Image.
Na página Basic Information, defina as configurações básicas e clique em Next para ir à página Container.
-
Na seção General, defina Image Name como
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest. Na seção Lifecycle, configure o parâmetro Start. Clique em Next para acessar a página Advanced.Command:
/bin/shParameter:
["-c", "echo 'starting...'; COUNTER=0; while [ $COUNTER -lt 5 ]; do sleep 2; COUNTER=$((COUNTER+1)); echo $COUNTER; done; echo 'finished'; exit 0"]
ImportanteO cluster precisa de acesso à Internet para baixar
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest. Se você selecionou Configure SNAT for VPC durante a criação do cluster, essa opção já está ativada. Caso contrário, ative o acesso à Internet para o cluster.
-
Na página Advanced, configure o agendamento e as definições do job. Neste exemplo, defina o agendamento para cada 2 minutos e mantenha as demais opções nos valores padrão. Clique em Create.
CronJob settings
Parâmetro
Descrição
Schedule
Frequência. Escolha uma predefinição (horária, diária, semanal, mensal) ou insira uma expressão cron personalizada (
minuto hora dia-do-mês mês dia-da-semana). Consulte Sintaxe de expressão cron.Concurrency policy
Comportamento quando um novo Job deve iniciar enquanto o anterior ainda está em execução.
Forbid: ignora o novo Job (para jobs sequenciais ou dependentes).Allow: executa ambos simultaneamente (para jobs independentes).Replace: encerra o Job em execução e inicia um novo (quando apenas o resultado mais recente importa).Job history
Parâmetro
Descrição
Successful Jobs History Limit
Quantidade de Jobs bem-sucedidos recentes a serem retidos. Os mais antigos são excluídos.
Failed Jobs History Limit
Quantidade de Jobs com falha recentes a serem retidos.
Job settings
Parâmetro
Campo Kubernetes
Descrição
Padrão
Completions
jobTemplate.spec.completionsNúmero de Pods que precisam ser concluídos para que o Job tenha sucesso.
—
Parallelism
jobTemplate.spec.parallelismNúmero máximo de Pods executados simultaneamente.
—
Timeout
jobTemplate.spec.activeDeadlineSecondsTempo máximo de execução de um Job. O Job é interrompido ao atingir esse limite, independentemente do status de conclusão.
600 segundos
BackoffLimit
jobTemplate.spec.backoffLimitNúmero máximo de tentativas em todos os Pods antes que o Job seja marcado como falho.
6
Restart
jobTemplate.spec.template.spec.restartPolicyComportamento de reinicialização do Pod em caso de falha.
Never: reinicia o container localmente sem criar um novo Pod (as reinicializações não contam para obackoffLimit).On Failure: cria um novo Pod para substituir aquele que falhou.—
Labels, annotations
Parâmetro
Descrição
Pod Labels
Rótulos adicionados a cada Pod. O ACK adiciona
app: <application-name>por padrão. Usados para associar Pods a workloads e serviços.Pod Annotations
Anotações adicionadas a cada Pod. Alguns recursos do ACK exigem anotações específicas.

-
Após a criação, os Jobs aparecem em intervalos de 2 minutos.

Crie um CronJob com kubectl
Conecte-se ao cluster via kubectl antes de prosseguir.
-
Salve o YAML a seguir como
cronjob.yaml. A especificaçãojobTemplate.specpossui a mesma estrutura de uma especificação de Job independente.apiVersion: batch/v1 kind: CronJob metadata: name: example-cronjob labels: app: cronjob spec: schedule: "*/2 * * * *" # Run every 2 minutes concurrencyPolicy: Forbid # Skip new Job if previous one is still running successfulJobsHistoryLimit: 3 # Keep the 3 most recent successful Jobs failedJobsHistoryLimit: 2 # Keep the 2 most recent failed Jobs jobTemplate: spec: completions: 1 # Job succeeds after 1 Pod completes parallelism: 1 # Run one Pod at a time template: spec: containers: - name: counter image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 command: - /bin/sh - -c - | echo "starting..."; COUNTER=0; while [ $COUNTER -lt 5 ]; do sleep 2; COUNTER=$((COUNTER+1)); echo "${COUNTER}"; done; echo "finished"; exit 0 restartPolicy: Never # Do not restart the Pod on failure -
Aplique o manifesto:
kubectl apply -f cronjob.yamlSaída esperada:
cronjob.batch/example-cronjob created
Verifique o CronJob
Confirme se o CronJob executa conforme o agendamento.
-
Verifique o status do CronJob:
kubectl get cronjob example-cronjobSaída esperada:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE example-cronjob */2 * * * * False 0 <none> 15sO campo
SUSPENDestá definido comoFalse, indicando que o CronJob está ativo e dispara conforme o agendamento. -
Após cerca de 10 minutos, liste os Jobs criados pelo CronJob:
kubectl get jobSaída esperada:
NAME STATUS COMPLETIONS DURATION AGE example-cronjob-2901**22 Complete 1/1 31s 5m13s example-cronjob-2901**23 Complete 1/1 31s 3m13s example-cronjob-2901**24 Complete 1/1 26s 73sOs Jobs surgem em intervalos de 2 minutos e exibem o status
Completeao terminar. -
Consulte os logs de um Pod do Job:
# List Pods for the most recent Job kubectl get pods --selector=job-name=<job-name> # View logs kubectl logs <pod-name>Substitua
<job-name>pelo nome de um Job obtido na saída acima (por exemplo,example-cronjob-2901**24). Uma execução bem-sucedida termina comfinished.
Sintaxe de expressão cron
Uma expressão cron consiste em cinco campos separados por espaços:
# .---------------- minute (0–59)
# | .------------- hour (0–23)
# | | .---------- day of month (1–31)
# | | | .------- month (1–12)
# | | | | .---- day of week (0–6, Sunday to Saturday)
# | | | | |
* * * * *
Atalhos comuns:
|
Entrada |
Descrição |
Equivalente |
|
|
Executa uma vez por hora, no início da hora |
|
|
|
Executa uma vez por dia, à meia-noite |
|
|
|
Executa uma vez por semana, à meia-noite de domingo |
|
|
|
Executa uma vez por mês, à meia-noite do primeiro dia |
|
|
|
Executa uma vez por ano, à meia-noite de 1º de janeiro |
|
Crie e valide expressões cron com crontab.guru.