K8s Jobs are used to run a set of pods to perform a given task. Unlike ReplicaSet, they are used to orchestrate short-lived pods (jobs). When a job is run, it creates a pod that should run to completion.
The below file will create a K8s job to run 3 pods sequentially. If any of the pods fail to complete, it will be terminated and another pod will be spawned in its place such that 3 pods run successfully in total.
template
defines the pod that should be run for the job execution.
apiVersion: batch/v1
kind: Job
metadata:
name: math-add-job
spec:
completions: 3
template:
spec:
restartPolicy: Never
containers:
- name: math-add
image: ubuntu
command: ['expr', '3', '+', '2']
The above job can also be executed in parallel using the parallelism
property which signifies the maximum number of pods that can be run in parallel at any given time.
apiVersion: batch/v1
kind: Job
metadata:
name: math-add-job
spec:
completions: 3
parallelism: 3
template:
spec:
restartPolicy: Never
containers:
- name: math-add
image: ubuntu
command: ['expr', '3', '+', '2']
Max retries for this job = 5
Max execution time = 100s
apiVersion: batch/v1
kind: Job
metadata:
name: very-long-pi
namespace: ckad-job
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(1024)"]
restartPolicy: Never
backoffLimit: 5
activeDeadlineSeconds: 100
k get jobs
- list jobsk get pods
- list job executions (search for job name in the pods)