Was ist ein CronJob?
Ein CronJob ist ein Job-Typ im Kubernetes-Container-Orchestrierungssystem, der eine bestimmte Aufgabe nach einem periodischen Zeitplan ausführt.
Der Zeitplan wird mit einem Cron-Ausdruck definiert, der die Häufigkeit angibt, mit der die Aufgabe ausgeführt werden soll. CronJobs sind nützlich für die Ausführung regelmäßiger Aufgaben, wie das Sichern einer Datenbank oder das Senden von E-Mails.
Wie erstellt man einen CronJob?
Um einen CronJob zu erstellen, müssen Sie eine Ressource in der Kubernetes-API definieren. Die Ressourcendefinition enthält den Zeitplan für den Job sowie die Vorlage für den zu erstellenden Job.
Die Vorlage gibt den Container an, der als Teil des Auftrags ausgeführt werden soll, sowie alle anderen erforderlichen Parameter, wie die Neustartrichtlinie.
Code-Beispiel
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: my-cron-job
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: my-task
image: my-task-image
command: ["my-task-command"]
restartPolicy: OnFailure
Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck ist eine Zeichenfolge, die den Zeitplan für einen CronJob angibt. Sie besteht aus sechs durch Leerzeichen getrennten Feldern, die Folgendes darstellen: Minute (0–59), Stunde (0–23), Tag des Monats (1–31), Monat (1–12), Wochentag (0–6, wobei 0 für Sonntag steht) und ein optionales Jahresfeld.
Jedes Feld kann einen einzelnen Wert, eine Liste von Werten oder eine Reihe von Werten enthalten.
Das Sonderzeichen „*“ kann verwendet werden, um anzugeben, dass das Feld mit einem beliebigen Wert übereinstimmen soll. Beispiel: „0 0 * * *“ ist ein Cron-Ausdruck, der angibt, dass eine Aufgabe jeden Tag um Mitternacht ausgeführt werden soll.
Was passiert, wenn ein CronJob fehlschlägt?
Wenn ein CronJob fehlschlägt, hängt dies vom Wert des Feldes ‘restartPolicy’ in der Job-Vorlage ab. Wenn die ‘restartPolicy’ auf ‘OnFailure’ gesetzt ist, wird der Container neu gestartet, wenn er fehlschlägt.
Wenn die ‘restartPolicy’ auf ‘Never’ gesetzt ist, wird der Container nicht neu gestartet. Sie können die ‘restartPolicy’ auch auf ‘Always’ setzen, um den Container immer neu zu starten, oder auf ‘OnFailure’, mit einem ‘backoffLimit’, um anzugeben, wie oft der Container maximal neu gestartet werden soll.
Kann ein CronJob pausiert werden?
Ja, Sie können einen CronJob anhalten, indem Sie das Feld ‘suspend’ in der CronJob-Ressource auf ‘true’ setzen.
Dadurch wird verhindert, dass der CronJob weitere Aufgaben ausführt, die bereits erstellten Aufgaben werden jedoch nicht gelöscht.
Um den CronJob wieder aufzunehmen, setzen Sie das ‘Suspend-Feld’ auf ‘false’.
Kann ein CronJob mehrere Aufgaben gleichzeitig ausführen?
Standardmäßig führt ein CronJob immer nur eine Aufgabe gleichzeitig aus.
Sie können jedoch die Anzahl der gleichzeitig auszuführenden Aufgaben festlegen, indem Sie das Feld ‘concurrencyPolicy’ in der CronJob-Ressource auf ‘Allow’ und das Feld ‘parallelism’ auf die gewünschte Anzahl von Aufgaben setzen. Dadurch kann der CronJob mehrere Aufgaben gleichzeitig ausführen.