Nicht jede Anwendung in Kubernetes läuft dauerhaft als Service. Viele Aufgaben sollen einmalig oder zeitgesteuert ausgeführt werden: Backups, Datenmigrationen, Reports oder Cleanup-Jobs. Genau dafür gibt es Jobs und CronJobs.
In diesem Artikel erfährst du ausführlich, wie Kubernetes Jobs und CronJobs funktionieren, worin sie sich unterscheiden und wie du sie produktiv einsetzt.
Du lernst:
- was Jobs und CronJobs in :contentReference[oaicite:0]{index=0} sind
- wann man Job oder CronJob verwendet
- wie Wiederholungen und Fehlerbehandlung funktionieren
- YAML-Beispiele aus der Praxis
- Best Practices und typische Fehler
1) Was ist ein Kubernetes Job?
Ein Kubernetes Job ist ein Workload-Objekt, das einen oder mehrere Pods startet, um eine Aufgabe erfolgreich abzuschließen.
Im Gegensatz zu Deployments oder DaemonSets läuft ein Job nicht dauerhaft. Sobald die Aufgabe erfolgreich beendet ist, gilt der Job als abgeschlossen.
Merksatz: Job = Aufgabe ausführen, beenden, fertig
2) Typische Anwendungsfälle für Jobs
- Datenbank-Migrationen
- Einmalige Datenverarbeitung
- Initialisierung von Systemen
- Batch-Processing
- Manuelle Wartungsaufgaben
3) Beispiel: Einfacher Kubernetes Job
Dieser Job gibt einmalig einen Text aus und beendet sich anschließend erfolgreich.
apiVersion: batch/v1
kind: Job
metadata:
name: hello-job
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["sh", "-c", "echo Hello Kubernetes Job"]
restartPolicy: Never
kubectl apply -f hello-job.yaml
kubectl get jobs
kubectl get pods
4) Fehlerbehandlung & Wiederholungen bei Jobs
Jobs können fehlschlagen. Kubernetes bietet mehrere Mechanismen, um damit umzugehen.
4.1 backoffLimit
Gibt an, wie oft ein Job bei Fehlern neu gestartet werden darf.
spec:
backoffLimit: 3
4.2 completions und parallelism
Damit lassen sich mehrere erfolgreiche Durchläufe oder parallele Pods steuern.
spec:
completions: 5
parallelism: 2
5) Was ist ein Kubernetes CronJob?
Ein CronJob ist eine Erweiterung des Jobs: Er erstellt Jobs automatisch nach einem Zeitplan.
Der Zeitplan basiert auf der bekannten cron-Syntax.
Merksatz: CronJob = Job + Zeitplan
6) Typische Anwendungsfälle für CronJobs
- regelmäßige Backups
- Cleanup alter Daten
- Reports & Exporte
- regelmäßige Health-Checks
- Automatisierte Wartung
7) Beispiel: Kubernetes CronJob
Dieser CronJob wird jede Minute ausgeführt.
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello-cronjob
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["sh", "-c", "date; echo Hello CronJob"]
restartPolicy: Never
kubectl apply -f hello-cronjob.yaml
kubectl get cronjobs
kubectl get jobs
8) Wichtige CronJob-Optionen
8.1 concurrencyPolicy
Allow– mehrere Jobs parallelForbid– neuer Job startet nur, wenn der alte fertig istReplace– laufender Job wird beendet
concurrencyPolicy: Forbid
8.2 successfulJobsHistoryLimit / failedJobsHistoryLimit
Begrenzt die Anzahl gespeicherter alter Jobs.
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
9) Job & CronJob im Vergleich
| Kriterium | Job | CronJob |
|---|---|---|
| Ausführung | Einmalig | Zeitgesteuert |
| Manueller Start | Ja | Nein (automatisch) |
| Typische Nutzung | Migrations / Batch | Backups / Wartung |
10) Best Practices für Jobs & CronJobs
- restartPolicy immer explizit setzen
- Logs sauber auswerten
- Ressourcen-Limits definieren
- History-Limits konfigurieren
- Jobs regelmäßig aufräumen
11) Häufige Fehler & Troubleshooting
- Jobs bleiben auf Running → Prozess beendet sich nicht
- CronJob startet nicht → schedule prüfen
- Zu viele alte Jobs → History-Limits fehlen
kubectl describe job <job-name>
kubectl logs <pod-name>
kubectl get events
12) Fazit
Kubernetes Jobs und CronJobs sind essenziell, um einmalige oder wiederkehrende Aufgaben sauber im Cluster auszuführen.
Jobs eignen sich für kontrollierte Batch-Aufgaben, CronJobs für zeitgesteuerte Automatisierung.
Faustregel: Einmal ausführen → Job. Regelmäßig ausführen → CronJob.