Bird
Raised Fist0
Kubernetesdevops~10 mins

Jobs and CronJobs for batch processing in Kubernetes - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the kind of Kubernetes resource for a batch job.

Kubernetes
apiVersion: batch/v1
kind: [1]
metadata:
  name: example-job
Drag options to blanks, or click blank then click option'
ADeployment
BPod
CService
DJob
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Pod' or 'Deployment' instead of 'Job'.
2fill in blank
medium

Complete the code to set the schedule for a CronJob to run every day at midnight.

Kubernetes
apiVersion: batch/v1
kind: CronJob
metadata:
  name: daily-job
spec:
  schedule: "[1]"
Drag options to blanks, or click blank then click option'
A0 12 * * *
B0 6 * * *
C0 0 * * *
D0 18 * * *
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing 12 with midnight, or using wrong hour values.
3fill in blank
hard

Fix the error in the container image name for the Job spec.

Kubernetes
spec:
  template:
    spec:
      containers:
      - name: batch-task
        image: [1]
      restartPolicy: Never
Drag options to blanks, or click blank then click option'
Abusybox:latest
Bbusybox
Cubuntu
Dnginx:latest
Attempts:
3 left
💡 Hint
Common Mistakes
Using image names without tags or incomplete names.
4fill in blank
hard

Fill both blanks to create a Job spec that runs a command and never restarts the pod.

Kubernetes
spec:
  template:
    spec:
      containers:
      - name: task
        image: busybox:latest
        command: ["[1]", "[2]"]
      restartPolicy: Never
Drag options to blanks, or click blank then click option'
Aecho
Bsleep
CHello, World!
D3600
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'sleep' with a string message or mixing command and arguments.
5fill in blank
hard

Fill all three blanks to define a CronJob that runs a backup script every hour at minute 15.

Kubernetes
apiVersion: batch/v1
kind: CronJob
metadata:
  name: hourly-backup
spec:
  schedule: "[1]"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: alpine:latest
            command: ["[2]", "[3]", "backup.sh"]
          restartPolicy: OnFailure
Drag options to blanks, or click blank then click option'
A15 * * * *
B/bin/sh
C-c
Dbackup.sh
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing cron syntax or command arguments.

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