Bird
Raised Fist0
Kubernetesdevops~20 mins

Jobs and CronJobs for batch processing in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Batch Processing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
Output of a Kubernetes Job status command
What is the output of the following command after the Job completes successfully?

kubectl get jobs batch-job -o jsonpath='{.status.succeeded}'
A0
BError: job not found
Cnull
D1
Attempts:
2 left
💡 Hint
The .status.succeeded field shows how many pods completed successfully.
🧠 Conceptual
intermediate
1:30remaining
Understanding CronJob schedule format
Which of the following CronJob schedule strings runs a job every day at 3:30 AM?
A30 3 * * *
B3 30 * * *
C0 3 * * *
D30 15 * * *
Attempts:
2 left
💡 Hint
Cron format is: minute hour day month weekday
❓ Configuration
advanced
2:30remaining
Correct YAML for a Kubernetes Job with restartPolicy
Which YAML snippet correctly defines a Kubernetes Job with a pod restart policy of 'Never'?
A
apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: example
        image: busybox
        command: ['echo', 'hello']
      restartPolicy: Always
B
apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: example
        image: busybox
        command: ['echo', 'hello']
      restartPolicy: Never
C
apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  restartPolicy: Never
  template:
    spec:
      containers:
      - name: example
        image: busybox
        command: ['echo', 'hello']
D
apiVersion: batch/v1
kind: Job
metadata:
  name: example-job
spec:
  template:
    spec:
      containers:
      - name: example
        image: busybox
        command: ['echo', 'hello']
Attempts:
2 left
💡 Hint
The restartPolicy must be under spec.template.spec and set to 'Never' for Jobs.
❓ Troubleshoot
advanced
2:00remaining
Troubleshooting a CronJob that never runs
A CronJob is created with schedule '0 25 * * *'. What is the likely reason it never runs?
AThe CronJob needs a manual trigger to start the first run.
BThe minute field '0' is invalid; minutes must be 1-59.
CThe hour field '25' is invalid; hours must be 0-23.
DThe CronJob requires a restartPolicy of Always to run.
Attempts:
2 left
💡 Hint
Check the valid ranges for cron schedule fields.
🔀 Workflow
expert
3:00remaining
Order the steps to create and verify a Kubernetes CronJob
Put these steps in the correct order to create and verify a Kubernetes CronJob that runs a batch task every hour.
A1,2,3,4
B2,1,3,4
C1,3,2,4
D3,1,2,4
Attempts:
2 left
💡 Hint
Think about writing, applying, then checking status and logs.

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

  1. Step 1: Understand the purpose of a Job

    A Kubernetes Job runs a batch task once and completes when the task finishes.
  2. Step 2: Understand the purpose of a CronJob

    A CronJob schedules Jobs to run repeatedly at specified times, like a clock.
  3. Final Answer:

    Job runs a task once; CronJob runs tasks repeatedly on a schedule. -> Option D
  4. 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?
easy
A. apiVersion: batch/v1 kind: Job metadata: name: example-job spec: template: spec: containers: - name: task image: busybox command: ["echo", "Hello"] restartPolicy: Never
B. apiVersion: batch/v1 kind: Job metadata: name: example-job spec: containers: - name: task image: busybox command: ["echo", "Hello"] restartPolicy: Always
C. apiVersion: batch/v1 kind: Job metadata: name: example-job spec: template: containers: - name: task image: busybox command: ["echo", "Hello"] restartPolicy: Always
D. apiVersion: batch/v1 kind: Job metadata: name: example-job spec: template: spec: containers: - name: task image: busybox command: ["echo", "Hello"] restartPolicy: Always

Solution

  1. Step 1: Check Job YAML structure

    A Job spec requires a template with a pod spec inside it, including containers and restartPolicy.
  2. Step 2: Validate restartPolicy and container placement

    Restart policy must be Never or OnFailure for Jobs, and containers must be under spec.template.spec.
  3. Final Answer:

    Correct structure with template.spec.containers and restartPolicy: Never -> Option A
  4. Quick Check:

    Job YAML needs template.spec with restartPolicy Never [OK]
Hint: Job YAML needs template.spec and restartPolicy Never [OK]
Common Mistakes:
  • Placing containers directly under spec
  • Using restartPolicy Always in Job
  • Missing template.spec nesting
3. Given this CronJob YAML snippet, what will happen?
apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello-cron
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo", "Hello World"]
          restartPolicy: OnFailure
medium
A. The job runs every 5 minutes but never prints anything.
B. The job runs once and never repeats.
C. The job runs every 5 minutes, printing "Hello World" once each time.
D. The job runs continuously without stopping.

Solution

  1. Step 1: Understand the schedule field

    The schedule "*/5 * * * *" means run every 5 minutes.
  2. Step 2: Understand the jobTemplate behavior

    Each scheduled time creates a Job that runs the container once, printing "Hello World".
  3. Final Answer:

    The job runs every 5 minutes, printing "Hello World" once each time. -> Option C
  4. Quick Check:

    CronJob schedule "*/5 * * * *" = every 5 minutes [OK]
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

  1. Step 1: Check required CronJob fields

    The schedule field is mandatory to tell when to run the job.
  2. Step 2: Identify impact of missing schedule

    Without schedule, the CronJob controller cannot trigger jobs, so none run.
  3. Final Answer:

    Missing schedule field prevents CronJob from running. -> Option A
  4. 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

  1. Step 1: Understand cron schedule format

    The format is: minute hour day month weekday.
  2. 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.
  3. Final Answer:

    "0 0 * * *" runs daily at midnight. -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard