Kubernetes 1.32 - Penelope
)
Quality of Life Verbesserungen
Verwendung der Watchdog-Funktion von Systemd zum neustarten des kubelet, sollte die Livenessprobe fehlschlagen.
Im Fall von einem ImagePullBackoff-Errors wurde die angezeigt Meldung verbessert. Die Details werden unter status.containerStatuses[*].state.waiting.message
angezeigt und gibt dem User mehr Informationen zu dem Fehler.
Das Feature der Sidecar Container wird voraussichtlich in der Version 1.33 als Stable definiert.
Stable Feature Highlights
Benutzerdefinierte Ressourcenfeldselektoren
Durch die Custom Resource field selectors
können Entwickler Feld-Selektoren zu eigenen Custom Resource Definitions (CRDs) hinzufügen. Dadurch können CRDs so gefiltert werden, wie es mit standard Ressourcen von Kubernetes der Fall ist.
Dynmische Größenanpassung von emptyDir Volumes
Diese Funktion ermöglicht es, emptyDir
Volumes dynamisch an die Ressourcen eines Pods anzupassen. Ein erzeugtes emptyDir Volume hat also automatisch die Größe des für den Pod bereitgestellten Memories. Dadurch wird die Portabilität der Workloads verbessert und die Ressourcennutzung der Nodes insgesamt optimiert.
Optimierungen des Service-Account-Tokens
In Service Accounts können nun Node Namens im Claim hinterlegt werden. Dies ermöglicht es Nutzern, diese Informationen während der Autorisierung und Validierung (ValidatingAdmissionPolicy
) zu nutzen.
Automatisches Entfernen von PVCs, die von einem StatefulSet erstellt wurden
PersistentVolumeClaims (PVCs), die von StatefulSets erstellt wurden, werden automatisch gelöscht, wenn sie nicht mehr benötigt werden. Diese Funktion vereinfacht das Handling für Persistent Volumes für StatefulSets und verringert das Risiko von verwaisten PVCs.
Beta Features
Job API managedBy
Das managedBy
Feld für Jobs wurde auf den Beta Status angehoben. Diese Funktion ermöglicht es externen Controllern (wie Kueue), die Synchronisierung von Jobs zu verwalten, und bietet somit mehr Flexibilität sowie eine bessere Integration.
Anonyme Authentifizierung nur für definierte API-Endpunkte zulassen
Diese Funktion ermöglicht es Administratoren, festzulegen, welche Endpunkte für anonyme Anfragen zugelassen sind. Zum Beispiel kann der Administrator anonyme Zugriffe nur auf Health-Endpunkte wie /healthz
, /livez
und /readyz
beschränken. Diese Konfiguration greift auch dann, wenn ein Administrator falsche RBAC-Rules im Cluster angelegt hat.
Wiederherstellung von Volumes bei Fehlern während der Volume Vergrößerung
Wenn die Vergrößerung eines Volumes fehlschlägt, kann durch einen neuen Versuch mit einer kleineren Größe der Fehler behoben werden ("Retry"). Diese Verbesserung sorgt dafür, dass die Volume Vergrößerung stabiler und zuverlässiger wird, wodurch das Risiko von Datenverlust und/oder Beschädigung während des Resize Prozesses verringert wird.
Zuvor konnte ein fehlgeschlagener Resize Vorgang nur durch das Löschen des Volumes und Einspielen eines zuvor erstellten Backups gelöst werden.
VolumeGroup Snapshots
Hierdurch wird eine VolumeGroupSnapshot API eingeführt, mit der Benutzer Snapshots mehrerer Volumes gleichzeitig erstellen können. Die Auswahl der zu sichernden Volumes wird hierbei - wie aus anderen Kubernetes Funktionen bekannt - anhand von Label und Label Selektoren durchgeführt.
Label and Field Selector Authorisierung
Label- und Field-Selectors können nun bei der Autorisierung verwendet werden. Der Node-Authorizer nutzt diese automatisch, um Nodes darauf zu beschränken, nur ihre eigenen Pods aufzulisten. Zuvor konnten Nodes alle Pods des Clusters (auch Pods, die nicht auf der entsprechenden Node ausgeführt werden) lesen.
Webhook Authorizations können so angepasst werden, dass sie Anfragen basierend auf den verwendeten Label- oder Field-Selectors einschränken.
Alpha Features
Asynchronous Preemption im Kubernetes Scheduler
Der Kubernetes-Scheduler wurde mit Asynchronous Preemption verbessert, diese sorgt dafür, dass die Pod Preemtion asynchron ausgeführt wird. Dies ermöglicht eine schnellere Verwaltung für hochpriorisierte Pods, ohne den Scheduler zu blockieren. Besonders in Clustern mit häufigem Pod-Schedules oder Scheduling-Fehlern sorgt diese Verbesserung für einen effizienteren und stabileren Scheduling-Prozess.
Mutating admission policies using CEL expression
Diese Funktion nutzt die Objektinstanziierung und JSON-Patch-Strategien von Common Expression Language (CEL) in Verbindung mit den Merge-Algorithmus vom Server-Side-Apply. Sie vereinfacht die Policy-Definition, reduziert Konflikte bei Mutationen und verbessert die Leistung des Admission-Controllers, während sie eine Grundlage für robustere und erweiterbare Policy-Frameworks in Kubernetes schafft.
Der Kubernetes API-Server unterstützt nun mutating Admission-Policies auf Basis der CEL, was eine effiziente Alternative zu mutating Admission-Webhooks darstellt.
Administratoren können mit CEL Mutations wie das Setzen von Labels, das Standardisieren von Feldern oder das Injizieren von Sidecars mit einfachen, deklarativen Ausdrücken definieren. Dieser Ansatz reduziert die Komplexität, vermeidet Webhooks und integriert sich direkt in den kube-apiserver, was eine schnellere und zuverlässigere Mutation ermöglicht.
Pod-Level Ressource Spezifikationen
Diese Verbesserung vereinfacht das Ressourcenmanagement in Kubernetes, indem sie es ermöglicht, Requests und Limits auf Pod Ebene festzulegen. Dadurch entsteht ein gemeinsamer Pool, den alle Container im Pod dynamisch nutzen können. Dies ist besonders nützlich für Workloads mit Containern, die schwankende Anforderungen an die Ressourcen haben.
Dementsprechend kann ab sofort im Pod an folgenden Stellen CPU und Memory konfiguriert werden:
CPU
spec.resources.requests.cpu
Shared CPU Requestsspec.resources.limits.cpu
Shared CPU Limits
Memory
spec.resources.requests.memory
Shared Memory Requestsspec.resources.limits.memory
Shared Memory Limits
Weitere Informationen zu Requests und Limits findet ihr auch in unserer 101 Series zum Thema Kubernetes Resource Management
Erlauben von Null-Wert für Sleep-Action von PreStop-Hooks
Diese Verbesserung führt die Möglichkeit ein, eine Null-Sekunden-Schlafdauer für den PreStop-Lifecycle-Hook in Kubernetes festzulegen, was eine flexiblere und nicht-ausführende Option für die Ressourcenvalidierung und -anpassung bietet. Mit diesem Update können Benutzer nun eine Null-Sekunden-Dauer als gültige Schlaf-Einstellung konfigurieren, was eine sofortige Ausführung und Beendigung der Aktionen ermöglicht, wo immer dies erforderlich ist.
Dieses Feature ist abwärtskompatibel und wurde als optionale Funktion eingeführt, die durch das Feature-Gate PodLifecycleSleepActionAllowZero
gesteuert wird.
Windows schlägt zurück!
Die Unterstützung für das Graceful-Shutdown von Windows-Nodes in Kubernetes-Clustern wurde hinzugefügt. Vor dieser Version bot Kubernetes diese Funktion nur für Nodes auf Linux-Basis. Diese Verbesserung ermöglicht es dem Kubelet auf Windows-Nodes, Systemabschalt-Events richtig zu verarbeiten. Dadurch wird sichergestellt, dass Pods, die auf Windows-Nodes laufen, sauber beendet werden, sodass Workloads ohne Unterbrechung neu geplant werden können. Diese Verbesserung erhöht die Zuverlässigkeit und Stabilität von Clustern, die Windows-Nodes beinhalten, insbesondere während geplanter Wartungsarbeiten oder Systemaktualisierungen.
Darüber hinaus wurde die Unterstützung für CPU- und Speicheraffinität für Windows-Nodes mit Verbesserungen am CPU-Manager, Speicher-Manager und Topologie-Manager hinzugefügt.
Neue /statusz und /flagz Endpunkte für Kern-Komponenten
Es können zwei neue HTTP-Endpunkte – /statusz
und /flagz
– für Kernkomponenten aktiviert werden. Diese verbessern die Debugbarkeit des Clusters, indem sie Einblicke in die Versionen (z.B. Golang-Version) der laufenden Komponente, Details zur Laufzeit und die ausgeführten Kommandozeilen-Flags bieten. Dies erleichtert das Diagnostizieren sowohl von Laufzeit- als auch von Konfigurationsproblemen.
Alle weiteren Änderungen aus diesem Release findest du in dem offiziellen Beitrag auf der Kubernetes Webseite.
Quellen
https://kubernetes.io/blog/2024/12/11/kubernetes-v1-32-release/
Ihr wollt mehr über Kubernetes lernen?
Habt ihr noch Fragen zu Kubernetes? In unseren Kubernetes Einführungs- und Advanced-Schulungen bekommt ihr das nötige Wissen, um Kubernetes im täglichen Betrieb sicher und effizient zu verwalten.
Von den Grundlagen bis hin zu fortgeschrittenen Themen – wir vermitteln euch alles wichtige, um Kubernetes erfolgreich in eurem Unternehmen einzusetzen.