Getty Images
Es gibt zwei Hauptansätze für die Bewältigung von Aufgaben in Kubernetes: Jobs und CronJobs. Das Verständnis ihrer Unterschiede und Eigenschaften ist entscheidend für die richtige Aufgabenverwaltung.
Kubernetes ist ein Standard zur Automatisierung und Orchestrierung von Container-basierten Anwendungsumgebungen. Die Verwaltung dieser Umgebungen umfasst häufig Kubernetes-Jobs: die Ausführung von Aufgaben. Viele Aufgaben sind einmalig oder ad-hoc. In anderen Fällen müssen Teams Aufgaben planen, indem sie Gruppen oder Sätze verwandter Aufgaben für eine wiederkehrende Ausführung organisieren. Daher sind Jobs und CronJobs jeweils auf eine bestimmte Aufgabenhäufigkeit ausgerichtet: Jobs sind für einmalige, bedarfsabhängige Aufgaben gedacht. CronJobs sind wiederkehrend.
Obwohl Kubernetes Jobs und CronJobs beide wichtige Aufgaben ausführen können, hängt die Entscheidung, ob die Aufgaben geplant werden sollen, von ihrem Typ ab.
Jobs in Kubernetes
Kubernetes Jobs sind für einmalige oder bedarfsgesteuerte Aufgaben gedacht. Ein Job erstellt einen oder mehrere Pods von Containern, um eine kurzfristige oder sequenzielle Batch-Aufgabe auszuführen. Das Besondere an Jobs ist ihr kurzfristiger Charakter. Während die meisten Pods über einen längeren Zeitraum laufen, wird der an einem Job beteiligten Pod nur so lange ausgeführt, bis eine bestimmte Anzahl von Abschlüssen erfolgt ist, und erst dann wird der Job beendet. Jobs können parallele Aufgaben unterstützen, die auf mehreren Pods ausgeführt werden, bei Fehlern automatisch einen neuen Versuch starten und die Fertigstellung verfolgen. IT-Mitarbeiter können Jobs manuell und programmatisch löschen oder aussetzen.
Die Spezifikation eines Kubernetes Jobs kann mehrere Schlüsselelemente umfassen:
- Er wird mithilfe einer YAML-Datei konfiguriert und über eine Kubernetes-Befehlszeile ausgeführt.
- Job-Vorlagen, mit denen Pods erstellt werden können, führen bestimmte Aufgaben aus. Vorlagen ermöglichen es IT-Mitarbeitern, standardisierte und wiederverwendbare Aufgaben zu erstellen, um eine breite Palette von Vorgängen abzuwickeln.
- Die Neustart-Richtlinie bestimmt das Verhalten des Pods nach einem Ausfall oder einer Fertigstellung.
- Eine bestimmte Anzahl erfolgreicher Abschlüsse ist erforderlich, um den Auftrag als abgeschlossen zu betrachten. Diese Anzahl muss nicht 100 Prozent betragen.
- Die Parallelität wird durch die Anzahl der Pods – und die maximale Anzahl der Pods – definiert, die gleichzeitig laufen können, um die gewünschte Aufgabe zu erledigen.
Teams können Jobs in Kubernetes mit dem Kubernetes-Befehl kubectl get all überprüfen, um eine Liste abzurufen.
CronJobs in Kubernetes
Ein CronJob ist ein Job, der nach einem wiederkehrenden oder festgelegten Zeitplan ausgeführt wird. Der Zeitplan basiert auf einem deklarativen Cron-Format und Parametern, wobei Cron ein Befehlszeilen-Dienstprogramm zur Auftragsplanung auf Unix-Betriebssystemen ist. Die CronJob-Funktionalität ist in die Kubernetes-REST-API integriert.
Aufgaben werden wie ein typischer Job in Kubernetes spezifiziert, aber die wiederkehrende Absicht von CronJobs bedeutet, dass die zugrunde liegenden Jobs oft für sich wiederholende Vorgänge geeignet sind. Beispiele hierfür sind Backups, Datensynchronisierung und Berichterstellung.
Bei Kubernetes-CronJobs müssen mehrere Aspekte berücksichtigt werden:
- Mit Jobvorlagen können Pods erstellt werden, die bestimmte Aufgaben ausführen. Wie bei gewöhnlichen individuellen Jobs unterstützen Vorlagen standardisierte und wiederverwendbare Aufgaben mit CronJobs.
- Der CronJob muss den Zeitplan festlegen, einschließlich der Zeit und Häufigkeit der CronJob-Ausführung.
- Gleichzeitigkeit, ob beabsichtigt oder unbeabsichtigt, liegt vor, wenn ein CronJob startet, während ein vorheriger CronJob noch läuft. Der CronJob sollte angeben, wie er diese Art von überlappenden Zeitplänen behandelt.
- Der CronJob sollte die maximal zulässige Zeit oder eine Frist für den Start der Aufgabe festlegen, bevor die Aufgabe fehlschlägt.
Es gibt drei erwähnenswerte Einschränkungen für CronJobs:
- IT-Mitarbeiter können dem CronJob-Zeitplan Zeitzonen hinzufügen, aber der Zeitplan unterstützt möglicherweise einige Zeitzonen nicht. Ist das der Fall, werden während der Ausführung Warnungen ausgegeben.
- Ein CronJob gilt nur für neue Aufträge. Wenn ein vorhandener CronJob geändert wird, gelten die Änderungen nur für neue Aufträge, die nach den Änderungen gestartet werden. Das bedeutet, dass CronJobs keine Jobs aktualisieren, die bereits ausgeführt werden.
- Es ist möglich, dass während eines Zyklus keine Jobs gestartet werden oder dass sich Jobs überschneiden, wie bei versehentlicher oder unerwarteter Gleichzeitigkeit. Das ist auf die Funktionsweise des Kubernetes Schedulers zurückzuführen. Geplante Startzeiten sind nicht präzise.
Beispiele für Kubernetes Jobs versus CronJobs
Jobs eignen sich am besten für einmalige oder bedarfsgesteuerte Aufgaben wie Bildverarbeitung, regelmäßige Datenreplikation oder -wiederherstellung, Datentransformation und -normalisierung sowie andere Datenverarbeitungsaufgaben und Analysen. Eine Datenwiederherstellung kann beispielsweise für ein Unternehmen von entscheidender Bedeutung sein, wird aber nur in den seltenen Fällen benötigt, in denen ein Datenverlust auftritt.
CronJobs eignen sich am besten für geplante oder wiederkehrende Aufgaben, zum Beispiel für Datensicherungen, Datensynchronisierung oder -aggregation, Protokollbereinigung und andere Systemwartungsaktivitäten sowie zeitbasierte Ressourcenskalierung. Zum Beispiel können IT-Operationen regelmäßige Bereinigungen von Protokollen erfordern, so dass die Planung solcher Aufgaben durch CronJobs bedeutet, dass sich niemand mehr an die Durchführung der Bereinigung erinnern muss.