Jobs

Jobs

K8s Jobs are used to run a set of pods to perform a given task. Unlike
ReplicaSet
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)