Blog
Wild & Free Tools

Kubernetes CronJob Schedule Visualizer

Last updated: April 2026 6 min read

Table of Contents

  1. Kubernetes CronJob Schedule Format
  2. Visualizing Your CronJob Schedule
  3. ConcurrencyPolicy and startingDeadlineSeconds
  4. Debugging CronJob Timing Issues
  5. Frequently Asked Questions

Kubernetes CronJob uses standard 5-field cron syntax running in UTC by default. Paste your schedule: value into our free crontab visualizer to see the next 20 run times on a calendar and verify the timing before deploying.

Kubernetes 1.25+ added a timeZone field that lets you specify a timezone — but most clusters still default to UTC. This guide covers both behaviors.

Kubernetes CronJob Schedule Format

The schedule is set in the CronJob spec:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "0 9 * * 1-5"
  timeZone: "America/New_York"   # k8s 1.25+ only
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: worker
            image: my-image:latest

Key behaviors:

How to Visualize Your Kubernetes CronJob Schedule

Copy the value from your schedule: field and paste it into the crontab visualizer. The tool shows the next 20 UTC run times.

If your cluster is using the timeZone field, the visualizer's output will be in UTC — convert the hours mentally for your configured timezone, or use the visualizer alongside a UTC offset reference.

Common Kubernetes CronJob schedules:

GoalExpression
Daily at midnight UTC0 0 * * *
Hourly0 * * * *
Every 15 minutes*/15 * * * *
Weekdays 9 AM UTC0 9 * * 1-5
Weekly Sunday 2 AM UTC0 2 * * 0
First of month0 0 1 * *

Also build expressions from scratch using the cron generator, then verify them in the visualizer.

Sell Custom Apparel — We Handle Printing & Free Shipping

ConcurrencyPolicy and startingDeadlineSeconds

Two settings affect when and whether CronJob instances actually run:

concurrencyPolicy: Controls what happens when a job is still running when the next schedule triggers:

startingDeadlineSeconds: How long (in seconds) Kubernetes will wait after a missed schedule before giving up. If a CronJob is skipped more than 100 times (e.g., after cluster downtime), Kubernetes won't try to catch up — it simply starts from the next scheduled time.

spec:
  schedule: "*/5 * * * *"
  concurrencyPolicy: Forbid
  startingDeadlineSeconds: 200

Debugging Kubernetes CronJob Timing Problems

Check the CronJob's schedule and last run with:

kubectl get cronjob
# Shows: SCHEDULE, SUSPEND, ACTIVE, LAST SCHEDULE, AGE

kubectl describe cronjob my-cronjob
# Shows events, schedule history, job references

Common issues:

Validate the schedule expression first with the visualizer to rule out expression errors before debugging cluster-level issues.

Try It Free — No Signup Required

Runs 100% in your browser. No account, no install, no limits.

Open Free Crontab Visualizer

Frequently Asked Questions

Does Kubernetes CronJob support seconds in the cron expression?

No. Kubernetes CronJob uses standard 5-field cron syntax (minute hour day month weekday) — seconds are not supported. The minimum scheduling granularity is 1 minute. For sub-minute intervals, use a cron job that runs every minute and loops internally with sleep commands, or use a different mechanism like a long-running deployment.

How do I set a Kubernetes CronJob to a specific timezone?

In Kubernetes 1.25+, add "timeZone: America/New_York" (or your IANA timezone) to the CronJob spec alongside the schedule. This requires the CronJobTimeZone feature gate, which is enabled by default in k8s 1.27+. On older clusters, you must convert your desired time to UTC manually and write the expression in UTC.

Why did my Kubernetes CronJob miss a scheduled run?

Common causes: (1) concurrencyPolicy: Forbid — the previous job is still running; (2) startingDeadlineSeconds expired — the job start was delayed past the deadline; (3) cluster was down or the controller was restarting; (4) the job was suspended (spec.suspend: true). Check "kubectl describe cronjob " for events that explain missed runs.

Launch Your Own Clothing Brand — No Inventory, No Risk