Introduction to Jobs

In Kubernetes, a Job creates one or more pods and ensures they successfully terminate. Jobs are useful for batch processing and tasks that are expected to terminate once completed.

I’ve found that using k explain to get the right field names is specially helpful with jobs and cronjobs, you can also have a quick look at the documentation during the exam if you are stuck with some field.

Creating and Running Jobs

To create a Kubernetes Job, define its configuration in a YAML file.

Example YAML for a simple Job:

apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: example-container
        image: busybox
        command: ['sh', '-c', 'echo Hello from Kubernetes Job!']
      restartPolicy: Never

Create the Job with kubectl:

kubectl apply -f example-job.yaml

Monitoring Job Execution

To monitor the status of a running Job:

kubectl get jobs

To get more detailed information:

kubectl describe job example-job

Handling Failed Jobs

If a Job fails, you can inspect the pod to troubleshoot:

kubectl get pods --selector=job-name=example-job
kubectl logs <pod-name>

To delete a failed Job:

kubectl delete job example-job

CronJobs and Scheduled Tasks

A CronJob runs Jobs on a time-based schedule.

Example YAML for a CronJob:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: example-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: example-container
            image: busybox
            command: ['sh', '-c', 'date']
          restartPolicy: OnFailure

Create the CronJob:

kubectl apply -f example-cronjob.yaml

List existing CronJobs:

kubectl get cronjobs

Exercise

Setup

  1. Save the example Job YAML to a file named example-job.yaml.
  2. Save the example CronJob YAML to a file named example-cronjob.yaml.

Steps

  1. Create the Job: kubectl apply -f example-job.yaml
  2. Monitor the Job: kubectl get jobs
  3. Create the CronJob: kubectl apply -f example-cronjob.yaml
  4. Monitor the CronJob: kubectl get cronjobs

Troubleshooting

  • Check pod logs: kubectl logs <pod-name>
  • Describe for more info: kubectl describe job <job-name>

Solution

Make sure the Job and CronJob are successfully created and monitored.