Saltar al contenido
CronExplain

Explicador de programación de Kubernetes CronJob

Un CronJob de Kubernetes crea Jobs según una programación repetitiva escrita con sintaxis cron estándar. Pega el valor de spec.schedule para ver qué significa y cuándo se crearán los próximos Jobs.

Qué significa

Kubernetes CronJob: cinco campos estándar más macros. Define spec.timeZone para usar una zona distinta a la del controlador.

✓ Válida · Qué significa

En punto, cada 6 horas

Ajustes rápidos

Próximas 10 ejecuciones

#En UTCTu hora local
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

La misma programación en otros dialectos

  • crontab estándar0 */6 * * *
  • Quartz0 0 */6 * * ?
  • AWS EventBridgecron(0 */6 * * ? *)Las reglas de EventBridge usan UTC.
  • Spring0 0 */6 * * *

Constructor visual

Elige valores para cada campo. El constructor genera una expresión estándar de cinco campos que se convierte al dialecto seleccionado al usarla.

Minuto
Hora
Día del mes
Mes
Día de la semana
0 9 * * 1-5

El campo schedule

spec.schedule acepta una expresión cron de cinco campos, por ejemplo "0 */6 * * *" para cada seis horas. Kubernetes también acepta macros como @hourly, @daily, @weekly, @monthly y @yearly. Pon el valor entre comillas en YAML para que los asteriscos no se interpreten mal.

Zonas horarias con spec.timeZone

Sin zona horaria, las programaciones se interpretan en la zona del kube-controller-manager, que suele ser UTC. Desde Kubernetes 1.27 puedes definir spec.timeZone con un nombre IANA como Europe/Madrid. Elige la misma zona en la herramienta para previsualizar las horas exactas de creación, incluidos los cambios de horario.

Ejecuciones perdidas y concurrencia

Si el controlador se pierde una hora programada, startingDeadlineSeconds decide cuánto tarde puede empezar aún un Job. concurrencyPolicy controla qué pasa cuando una ejecución sigue activa: Allow, Forbid o Replace. Tenlo en cuenta al elegir programaciones frecuentes como cada minuto.

Usa kubectl create job --from=cronjob/<nombre> <nombre-job> para lanzar una ejecución inmediata mientras pruebas, y kubectl get cronjob para revisar las columnas LAST SCHEDULE y ACTIVE. Los eventos del objeto CronJob explican por qué se saltó una hora programada o por qué un Job no pudo arrancar.

Un manifiesto mínimo

Un CronJob usa apiVersion batch/v1 y kind CronJob, con spec.schedule, un spec.timeZone opcional y un jobTemplate que describe el Pod a ejecutar. Pon suspend: true para pausar la programación sin borrarla, y usa successfulJobsHistoryLimit y failedJobsHistoryLimit para decidir cuántos Jobs terminados se conservan para depurar.

Preguntas frecuentes

¿Un CronJob de Kubernetes admite segundos?
No. La programación tiene cinco campos, así que el intervalo mínimo es un minuto.
¿Puedo usar CRON_TZ en la programación?
No. Los prefijos TZ y CRON_TZ no están soportados; usa el campo spec.timeZone.
¿Qué significa 0 */6 * * *?
Cada seis horas en punto: 00:00, 06:00, 12:00 y 18:00.
¿Por qué mi CronJob se ejecutó dos veces o ninguna?
Revisa startingDeadlineSeconds y concurrencyPolicy, y si el controlador estuvo caído. Los CronJobs intentan crear un Job por hora programada, pero no lo garantizan.