Kubernetes Job ist ein Workload-Controller für endliche Aufgaben: Er startet einen oder mehrere Pods und gilt erst dann als abgeschlossen, wenn eine definierte Anzahl von Pods erfolgreich beendet wurde. Während ein Deployment dafür sorgt, dass ein Prozess dauerhaft läuft, ist ein Job die passende Wahl für Batch-Verarbeitung, Datenmigrationen, Backups oder einmalige Initialisierungen.
Wie ein Job funktioniert
Ein Job wird als batch/v1-Ressource definiert. Sein Pod-Template muss restartPolicy: Never oder OnFailure verwenden – Always ist bei Jobs nicht erlaubt, weil ein Job keine unendlich laufende Arbeit beschreibt. Der Job-Controller beobachtet die zugehörigen Pods und meldet den Job als fertig, sobald die gewünschte Anzahl erfolgreich abgeschlossen ist.
apiVersion: batch/v1
kind: Job
metadata:
name: datenmigration
spec:
completions: 1
parallelism: 1
template:
spec:
restartPolicy: Never
containers:
- name: migrieren
image: mein-image:latest
Wichtige Felder
spec.completions: wie viele Pods insgesamt erfolgreich fertig werden müssen (Standard 1).spec.parallelism: wie viele Pods gleichzeitig laufen dürfen.spec.backoffLimit: wie oft ein fehlgeschlagener Pod neu gestartet wird, bevor der Job als fehlgeschlagen gilt (Standard 6).spec.activeDeadlineSeconds: maximale Gesamtlaufzeit des Jobs – danach bricht Kubernetes ihn ab.spec.ttlSecondsAfterFinished: nach Ablauf dieser Zeit räumt Kubernetes den fertigen Job samt Pods automatisch auf.
Nach dem Start lassen sich die Pods wie gewohnt mit kubectl beobachten (kubectl get jobs, kubectl logs). Typische Einsätze: einmalige Datenmigrationen, Batch-Jobs nachts, Test- oder Setup-Aufgaben. Verwandt: der Kubernetes CronJob startet Jobs zeitgesteuert, und ein ReplicaSet hält dagegen eine feste Anzahl dauerhaft laufender Pods.