Kubernetes Jobs and CronJobs in 2026: Batch Work That Finishes (or Fails) Cleanly
TL;DR: Deployments run forever; Jobs run to completion β and that one difference changes how you configure everything. A production Job needs an explicit contract: restartPolicy: Never (or OnFailure, knowingly), a backoffLimit you chose, an activeDeadlineSeconds so nothing runs forever, and ttlSecondsAfterFinished so finished work cleans itself up. CronJobs add three decisions on top: a timeZone , a concurrencyPolicy that matches whether runs may overlap, and a startingDeadlineSeconds so a controller outage doesn't fire a pile of missed runs at once. Batch failures are normal β design for retries that are idempotent, and alert on failure rather than discovering it in the data.
Originally published on DevOps Enginer .
The workload Deployments can't express
Everything earlier in this series assumes services: replicas that should always exist, replaced when they die.β¦