📖 Scenario: You work in a company that needs to run tasks automatically in Kubernetes. Some tasks run once, and some run repeatedly on a schedule. You will create Kubernetes Job and CronJob resources to handle these batch tasks.
🎯 Goal: Learn how to create a Kubernetes Job to run a one-time batch task and a CronJob to run a task on a schedule.
📋 What You'll Learn
Create a Kubernetes Job YAML manifest with exact metadata and spec
Add a CronJob YAML manifest with a schedule and job template
Use the correct container image and command for the batch task
Print the created resource names to confirm creation
💡 Why This Matters
🌍 Real World
Companies use Kubernetes Jobs to run one-time batch tasks like data processing or backups. CronJobs run scheduled tasks like report generation or cleanup jobs automatically.
💼 Career
Knowing how to create and manage Jobs and CronJobs is essential for DevOps engineers and site reliability engineers to automate and maintain batch workloads in Kubernetes.
Progress0 / 4 steps
1
Create a Kubernetes Job manifest
Create a YAML manifest named job.yaml for a Kubernetes Job with these exact details: metadata name batch-job, spec template with a single container named batch-task using image busybox and command ["/bin/sh", "-c", "echo Hello from Job"]. The restart policy must be Never.
Kubernetes
Hint
Remember to set kind to Job and use the exact container name and command.
2
Create a Kubernetes CronJob manifest
Create a YAML manifest named cronjob.yaml for a Kubernetes CronJob with these exact details: metadata name batch-cronjob, schedule "*/5 * * * *" (every 5 minutes), job template with a single container named cron-task using image busybox and command ["/bin/sh", "-c", "echo Hello from CronJob"]. The restart policy must be OnFailure.
Kubernetes
Hint
Use kind: CronJob and set the schedule to run every 5 minutes exactly as shown.
3
Apply the Job and CronJob manifests
Write the exact kubectl commands to apply both job.yaml and cronjob.yaml files to the Kubernetes cluster.
Kubernetes
Hint
Use kubectl apply -f with the exact file names.
4
Print the names of created Job and CronJob
Write the exact kubectl commands to list the names of Jobs and CronJobs in the current namespace.
Kubernetes
Hint
Use kubectl get jobs and kubectl get cronjobs with custom columns to show only names.
Practice
(1/5)
1. What is the main difference between a Kubernetes Job and a CronJob?
easy
A. Job runs tasks repeatedly; CronJob runs a task once.
B. Job automatically restarts pods; CronJob does not.
C. Job is for long-running services; CronJob is for batch tasks.
D. Job runs a task once; CronJob runs tasks repeatedly on a schedule.
Solution
Step 1: Understand the purpose of a Job
A Kubernetes Job runs a batch task once and completes when the task finishes.
Step 2: Understand the purpose of a CronJob
A CronJob schedules Jobs to run repeatedly at specified times, like a clock.
Final Answer:
Job runs a task once; CronJob runs tasks repeatedly on a schedule. -> Option D
Quick Check:
Job = one-time, CronJob = scheduled repeat [OK]
Hint: Jobs run once; CronJobs run on a schedule [OK]
Common Mistakes:
Confusing Job as repeating task
Thinking CronJob runs only once
Mixing up Job with long-running services
2. Which of the following is the correct minimal YAML snippet to define a Kubernetes Job?
Hint: CronJob schedule "*/5 * * * *" means every 5 minutes [OK]
Common Mistakes:
Thinking CronJob runs only once
Assuming continuous running container
Ignoring the command output
4. You created a CronJob but notice it never runs. Which YAML mistake could cause this?
medium
A. Missing schedule field in the CronJob spec.
B. Using restartPolicy: Always in the Job template.
C. Setting image to a valid container image.
D. Defining command as an array.
Solution
Step 1: Check required CronJob fields
The schedule field is mandatory to tell when to run the job.
Step 2: Identify impact of missing schedule
Without schedule, the CronJob controller cannot trigger jobs, so none run.
Final Answer:
Missing schedule field prevents CronJob from running. -> Option A
Quick Check:
CronJob needs schedule to run [OK]
Hint: CronJob must have schedule field to run [OK]
Common Mistakes:
Using restartPolicy Always (allowed but not cause no run)
Thinking image or command cause no run
Ignoring missing schedule field
5. You want to run a cleanup task every day at midnight using a CronJob. Which schedule string correctly sets this time?
hard
A. "0 * * * 0"
B. "0 0 * * *"
C. "* * 0 * *"
D. "0 12 * * *"
Solution
Step 1: Understand cron schedule format
The format is: minute hour day month weekday.
Step 2: Interpret each option
"0 0 * * *": "0 0 * * *" means at minute 0, hour 0 (midnight) every day. "* * 0 * *": "* * 0 * *" is invalid because day 0 does not exist. "0 * * * 0": "0 * * * 0" means every hour at minute 0 on Sundays only. "0 12 * * *": "0 12 * * *" means noon every day.
Final Answer:
"0 0 * * *" runs daily at midnight. -> Option B
Quick Check:
Midnight daily = "0 0 * * *" [OK]
Hint: Midnight daily cron is "0 0 * * *" [OK]
Common Mistakes:
Using day 0 which is invalid
Confusing hour 12 (noon) with midnight
Misplacing fields in schedule string
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.