Kubernetes 1.26: Effizientes Job-Tracking für massive Batch-Workloads!
Entdecken Sie die neuen Funktionen des Kubernetes 1.26 Releases für effektives Job-Tracking und parallele Verarbeitung.
Die Veröffentlichung von Kubernetes 1.26 bringt eine stabile Implementierung des Job Controllers mit sich, der zuverlässig eine große Anzahl an Jobs mit hohem Parallelitätsgrad nachverfolgen kann. Die Teams von SIG Apps und WG Batch haben seit Kubernetes 1.22 an dieser grundlegenden Verbesserung gearbeitet. Nach mehreren Iterationen und Skalierungsüberprüfungen ist dies jetzt die Standardimplementierung des Job Controllers.
In Kombination mit dem indizierten Abschlussmodus kann der Job Controller massiv parallele Batch-Jobs verwalten und unterstützt bis zu 100.000 gleichzeitige Pods.
Die neue Implementierung hat auch die Entwicklung der Pod-Fehlerpolitik ermöglicht, die in der Version 1.26 als Beta verfügbar ist.
Was ändert sich konkret für Entwickler/DevOps-Teams?
Um das Job-Tracking mit Finalizern zu nutzen, sollten Sie auf Kubernetes 1.25 oder neuer aktualisieren und neue Jobs erstellen. Diese Funktion kann auch in v1.23 und v1.24 verwendet werden, sofern Sie die Möglichkeit haben, das JobTrackingWithFinalizers
Feature Gate zu aktivieren.
Wenn Ihr Cluster Kubernetes 1.26 ausführt, ist das Job-Tracking mit Finalizern eine stabile Funktion. Für v1.25 ist es hinter diesem Feature Gate, und Ihre Cluster-Administratoren haben es möglicherweise ausdrücklich deaktiviert - zum Beispiel, wenn eine Richtlinie besteht, keine Beta-Funktionen zu verwenden.
Jobs, die vor dem Upgrade erstellt wurden, werden weiterhin mit dem Legacy-Verhalten nachverfolgt. Dies dient dazu, eine rückwirkende Hinzufügung von Finalizern zu laufenden Pods zu vermeiden, was zu Wettlaufbedingungen führen könnte.
Für maximale Leistung bei großen Jobs empfiehlt das Kubernetes-Projekt die Verwendung des indizierten Abschlussmodus. In diesem Modus kann der Control Plane den Fortschritt des Jobs mit weniger API-Aufrufen verfolgen.
Wenn Sie Entwickler von Operatoren für Batch-, HPC, KI, ML oder verwandte Workloads sind, ermutigen wir Sie, die Job-API zu verwenden, um eine genaue Fortschrittsverfolgung an Kubernetes zu delegieren. Wenn Ihnen etwas in der Job-API fehlt, das Sie zwingt, einfache Pods zu verwalten, freut sich die Working Group Batch über Ihr Feedback und Ihre Beiträge.
Hinweise zur Abkündigung
Während der Entwicklung dieser Funktion fügte der Control Plane die Annotation batch.kubernetes.io/job-tracking
zu den Jobs hinzu, die erstellt wurden, als die Funktion aktiviert war. Dies ermöglichte einen sicheren Übergang für ältere Jobs, war jedoch nie als dauerhaft gedacht.
In der Version 1.26 haben wir die Annotation batch.kubernetes.io/job-tracking
abgekündigt, und der Control Plane wird aufhören, sie in Kubernetes 1.27 hinzuzufügen. Mit dieser Änderung wird auch die Legacy-Job-Tracking-Implementierung entfernt. Infolgedessen wird der Job-Controller alle Jobs mit Finalizern nachverfolgen und Pods ignorieren, die nicht über den oben genannten Finalizer verfügen.
Bevor Sie Ihr Cluster auf 1.27 aktualisieren, empfehlen wir, zu überprüfen, ob keine laufenden Jobs ohne die Annotation vorhanden sind, oder zu warten, bis diese Jobs abgeschlossen sind. Andernfalls könnten Sie beobachten, dass der Control Plane einige Pods neu erstellt. Wir erwarten, dass dies keine Nutzer beeinträchtigt, da die Funktion seit Kubernetes 1.25 standardmäßig aktiviert ist und genügend Puffer für alte Jobs besteht, um abzuschließen.
Die ayedo GmbH ist Ihr Partner, wenn es um Kubernetes und moderne Container-Orchestrierung geht. Nutzen Sie unsere Expertise, um das volle Potenzial von Kubernetes auszuschöpfen!
Quelle: Kubernetes Blog