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.
Job definition file
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']
Parallelism
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']
Failure Retries & Execution Deadline
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
Commands
k get jobs
- list jobs
k get pods
- list job executions (search for job name in the pods)