Kubernetes CronJob Cron Expression Guide

Kubernetes CronJob uses standard 5-field cron syntax plus @hourly, @daily, @weekly, @monthly, and @yearly aliases. The builder generates a complete CronJob YAML manifest — copy and apply directly with kubectl.

Live Builder

Valid
MINMinute
0
HRHour
9
DOMDay of Month
*
MONMonth
*
DOWDay of Week
1-5

In plain English

At 09:00 AM, Monday through Friday

English → Cron

Try: "every 5 minutes", "every weekday at 9am", "every Monday at 3pm", "every month on the 1st"

Next 10 Executions

UTC
  1. 1Mon, May 18, 09:00 AM UTCin 3d
  2. 2Tue, May 19, 09:00 AM UTCin 4d
  3. 3Wed, May 20, 09:00 AM UTCin 5d
  4. 4Thu, May 21, 09:00 AM UTCin 6d
  5. 5Fri, May 22, 09:00 AM UTCin 7d
  6. 6Mon, May 25, 09:00 AM UTCin 10d
  7. 7Tue, May 26, 09:00 AM UTCin 11d
  8. 8Wed, May 27, 09:00 AM UTCin 12d
  9. 9Thu, May 28, 09:00 AM UTCin 13d
  10. 10Fri, May 29, 09:00 AM UTCin 14d
crontab entrybash
# Add to crontab with: crontab -e
0 9 * * 1-5    /path/to/your/script.sh

Syntax Overview

Field order

MIN

Minute

HR

Hour

DOM

Day of Month

MON

Month

DOW

Day of Week

0 9 * * 1-5

Example: At 09:00 AM, Monday through Friday

Common Expressions

0 9 * * 1-5Every weekday at 9am
@dailyOnce per day at midnight
*/5 * * * *Every 5 minutes
@hourlyOnce per hour
0 0 1 * *1st of every month at midnight
0 2 * * *Every day at 2am for overnight jobs

Frequently Asked Questions

What timezone does Kubernetes CronJob use?
By default, Kubernetes CronJob uses UTC. As of Kubernetes 1.25+, you can specify a timezone with the "timeZone" field in the CronJob spec: timeZone: "America/New_York".
How do I prevent concurrent CronJob executions?
Set "spec.concurrencyPolicy: Forbid" to skip a run if the previous one hasn't finished, or "Replace" to cancel the running job and start a new one. The default "Allow" permits concurrent executions.
What is startingDeadlineSeconds in a CronJob?
"startingDeadlineSeconds" defines how many seconds past a missed schedule the job can still start. If a job misses its scheduled time (e.g., the controller was down), it will only start if the delay is within this window.
How many missed jobs does Kubernetes track?
Kubernetes tracks the last 100 missed schedules. If more than 100 are missed, the CronJob controller logs an error and the missed runs are lost. This is relevant if the controller is offline for a long period.
Can I manually trigger a Kubernetes CronJob?
Yes — run: kubectl create job --from=cronjob/my-cronjob manual-trigger-1. This creates a Job directly from the CronJob template without waiting for the next scheduled run.