Kubernetes CronJob "Cannot determine if job needs to be started" / Missed Schedule
A CronJob missed so many scheduled start times that the controller gave up scheduling new runs. This happens when the controller was down/paused, or startingDeadlineSeconds is set such that more than 100 missed windows accumulated.
What this error means
kubectl describe cronjob shows a Warning FailedNeedsStart ... Cannot determine if job needs to be started: too many missed start times (> 100). The CronJob stops firing new Jobs until the condition clears.
Warning FailedNeedsStart cronjob-controller Cannot determine if job needs to
be started: too many missed start times (> 100). Set or decrease
.spec.startingDeadlineSeconds or check clock skew.Common causes
Controller down / clock skew accumulated misses
If the cronjob controller (or control plane) was down for a long stretch, more than 100 schedule windows passed unstarted, and the controller refuses to backfill them all.
startingDeadlineSeconds too long with frequent schedule
A long startingDeadlineSeconds on a frequent schedule lets a large backlog of missed windows count, tripping the >100 guard after any pause.
How to fix it
Set a bounded startingDeadlineSeconds
A short deadline limits how far back the controller looks, so a brief pause does not accumulate 100+ missed windows.
spec:
schedule: "*/5 * * * *"
startingDeadlineSeconds: 200 # only consider recent missed windows
concurrencyPolicy: ForbidClear the condition and check time
- Confirm the control-plane/controller is healthy and node clocks are in sync.
- Re-apply the CronJob with a bounded
startingDeadlineSecondsso the guard resets. - If a single missed run matters, trigger it manually with
kubectl create job --from=cronjob/<name>.
kubectl create job manual-run --from=cronjob/reportHow to prevent it
- Set a bounded
startingDeadlineSecondsso brief pauses do not accumulate missed windows. - Keep node/control-plane clocks synced (NTP) to avoid skew-driven misses.
- Choose a
concurrencyPolicythat matches whether overlapping runs are safe.