O atributo spec.backoffLimit determina a quantidade de vezes que um Job tenta executar seu workload até que o comando termine com exit code 0(sucesso).
O valor default para backoffLimit é 6, isto significa que o Job executará o workload 6 vezes antes que seja considerado que a execução foi malsucedida.
Somos obrigados a informar um valor para a Restart Policy no manifesto do Job através do atributo spec.template.spec.restartPolicy. O valor Always(proibido) faz com que o Kubernetes Scheduler sempre reinicie o Pod mesmo que o container termine com exit code 0. Os únicos valores permitidos para Restart Policy nos Pods sob um Job são OnFailure e Never.
<aside> 💡 Lembrando que a Restart Policy é aplicada aos containers do Pod e quando um Pod falhar a Restart Policy será considerada. Se a Restart Policy for Never o Job descartará o Pod e criará outros Pods até que o backoffLimit seja atingido. O backoffLimit especifica a quantidade máxima de tentativas antes de assumir que o Job falhou, o valor default é 6.
</aside>
Tentando Criar Job sem Declarar o Atributo spec.template.spec.restartPolicy
$ kubectl apply -f job.yaml
The Job "my-job" is invalid: spec.template.spec.restartPolicy:
Required value: valid values: "OnFailure", "Never"
Manifesto Definindo Atributos Customizados
apiVersion: batch/v1
kind: Job
metadata:
name: my-job
labels:
section: 06-pod-design
spec:
template:
metadata:
name: my-job
spec:
containers:
- name: job-container
image: nginx
command: ["/bin/sh", "-c"]
args: ["echo hello world"]
restartPolicy: Never
parallelism: 1 # Specifies the maximum desired number of pods the job should run at any given time.
completions: 1 # Desired number of successfully finished pods the job should be run with
backoffLimit: 5 # Specifies the number of retries before marking this job failed. Defaults to 6
A figura abaixo demonstra o comportamento de um Job que utiliza a restart policy OnFailure nos seus Pods. Em caso de falha do container, essa política simplesmente reexecutará o container no mesmo Pod.
Figure 6-8. Restart policy OnFailure
A figura abaixo mostra o comportamento de um Job que utiliza a restart policy Never nos seus Pods. Esta política não reinicia o container em caso de falha. Em vez disso, ela inicia um novo Pod.
Figure 6-9. Restart policy Never
Referência de campos para o Job - Lifecycle - backoffLimit.
Documentação Job