Zum Inhalt springen
CronExplain

Kubernetes-CronJob-Zeitpläne erklärt

Ein Kubernetes-CronJob erzeugt Jobs nach einem wiederkehrenden Zeitplan in Standard-Cron-Syntax. Füge den Wert von spec.schedule ein, um zu sehen, was er bedeutet und wann die nächsten Jobs erstellt werden.

Bedeutung

Kubernetes CronJob: fünf Standardfelder plus Makros. Mit spec.timeZone lässt sich eine andere Zeitzone als die des Controllers festlegen.

✓ Gültig · Bedeutung

Zur vollen Stunde, alle 6 Stunden

Vorlagen

Nächste 10 Ausführungen

#In UTCDeine Ortszeit
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

Derselbe Zeitplan in anderen Dialekten

  • Standard-crontab0 */6 * * *
  • Quartz0 0 */6 * * ?
  • AWS EventBridgecron(0 */6 * * ? *)EventBridge-Regeln verwenden UTC.
  • Spring0 0 */6 * * *

Visueller Editor

Wähle Werte pro Feld. Der Editor erzeugt einen Standard-Ausdruck mit fünf Feldern, der beim Übernehmen in den gewählten Dialekt umgewandelt wird.

Minute
Stunde
Tag im Monat
Monat
Wochentag
0 9 * * 1-5

Das Feld schedule

spec.schedule erwartet einen Cron-Ausdruck mit fünf Feldern, etwa "0 */6 * * *" für alle sechs Stunden. Kubernetes akzeptiert auch Makros wie @hourly, @daily, @weekly, @monthly und @yearly. Setze den Wert in YAML in Anführungszeichen, damit die Sternchen nicht falsch interpretiert werden.

Zeitzonen mit spec.timeZone

Ohne Zeitzone werden Zeitpläne in der Zeitzone des kube-controller-manager interpretiert, meist UTC. Seit Kubernetes 1.27 kannst du spec.timeZone auf einen IANA-Namen wie Europe/Berlin setzen. Wähle dieselbe Zone im Tool, um die genauen Erstellungszeiten inklusive Zeitumstellung zu sehen.

Verpasste Läufe und Nebenläufigkeit

Verpasst der Controller einen geplanten Zeitpunkt, entscheidet startingDeadlineSeconds, wie spät ein Job noch starten darf. concurrencyPolicy legt fest, was passiert, wenn ein Lauf noch aktiv ist: Allow, Forbid oder Replace. Behalte diese Einstellungen bei häufigen Zeitplänen wie jeder Minute im Blick.

Mit kubectl create job --from=cronjob/<name> <job-name> startest du beim Testen sofort einen Lauf, und kubectl get cronjob zeigt die Spalten LAST SCHEDULE und ACTIVE. Die Events am CronJob-Objekt erklären, warum ein geplanter Zeitpunkt übersprungen wurde oder warum ein Job nicht starten konnte. So lassen sich Fehler im Zeitplan schnell von Fehlern im Container unterscheiden.

Ein minimales Manifest

Ein CronJob nutzt apiVersion batch/v1 und kind CronJob, mit spec.schedule, optional spec.timeZone und einem jobTemplate, das den auszuführenden Pod beschreibt. Mit suspend: true pausierst du den Zeitplan, ohne ihn zu löschen; successfulJobsHistoryLimit und failedJobsHistoryLimit steuern, wie viele beendete Jobs zur Fehlersuche erhalten bleiben.

Häufige Fragen

Unterstützt ein Kubernetes-CronJob Sekunden?
Nein. Der Zeitplan hat fünf Felder, das kleinste Intervall ist also eine Minute.
Kann ich CRON_TZ im Zeitplan verwenden?
Nein. Die Präfixe TZ und CRON_TZ werden nicht unterstützt; verwende stattdessen das Feld spec.timeZone.
Was bedeutet 0 */6 * * *?
Alle sechs Stunden zur vollen Stunde: 00:00, 06:00, 12:00 und 18:00.
Warum lief mein CronJob doppelt oder gar nicht?
Prüfe startingDeadlineSeconds und concurrencyPolicy und ob der Controller ausgefallen war. CronJobs streben etwa einen Job pro geplanter Zeit an, garantieren es aber nicht.