Kubernetes v1.31 „Elli“: Das ist neu

29 August, 2024

Daniel Bodky
Daniel Bodky
Senior Platform Advocate

Daniel kam nach Abschluss seines Studiums im Oktober 2021 zu NETWAYS und beriet zwei Jahre lang Kunden zu den Themen Icinga2 und Kubernetes, bevor es ihn weiter zu Managed Services zog. Seitdem redet und schreibt er viel über cloud-native Technologien und ihre spannenden Anwendungsfälle und gibt sein Bestes, um Neues und Interessantes rund um Kubernetes zu vermitteln. Nebenher schreibt er in seiner Freizeit kleinere Tools für verschiedenste Einsatzgebiete, nimmt öfters mal ein Buch in die Hand oder widmet sich seinem viel zu großen Berg Lego. In der wärmeren Jahreszeit findet man ihn außerdem oft auf dem Fahrrad oder beim Wandern.

von | Aug. 29, 2024

Vor zwei Wochen erhielt das Kubernetes Projekt sein erstes Update nach seinem zehnten Geburtstag. Guckt man sich die Release Notes einmal genauer an, fallen auf den ersten Blick wenig bahnbrechende Neuerungen in Kubernetes v1.31 mit dem Maskottchen „Elli“ auf – und das ist auch gut so.

Die Technologie ist „erwachsen“, „mainstream“ und „langweilig“ geworden, würden manche sagen – und gerade deshalb wird inzwischen mehr Wert auf Optimierungen und Details gelegt. Ein paar dieser Updates in Kubernetes v1.31 möchten wir in diesem Blogpost hervorheben.

Neue Features und Updates

Im Kubernetes Projekt durchlaufen neue Funktionen und Erweiterungen einen gewissen Lebenszyklus, bevor sie als vollfunktional und sicher deklariert werden: Von Alpha zu Beta zu GA (generally available).
Je nach Fortschritt sind evtl. Feature Gates für die Nutzung der jeweiligen Features zu konfigurieren o.Ä.

Im Folgenden stellen wir dir unsere Release-Highlights in Kubernetes v1.31 vor, inkl. ihrer Verfügbarkeit, weiterführenden Links, und wie ihr sie am schnellsten ausprobieren könnt.

Genauere Label-basierte Authorisierung

Status: alpha
Kubernetes Enhancement Proposal: #4601
Beschreibung: Mit Label-basierter Authorisierung können Nutzer der Kubernetes API (bspw. Administratoren, Kubernetes‘ Kubelet auf den Clusternodes, usw.) in ihren Berechtigungen beschränkt werden.
So könnte Entwicklern bspw. lediglich der Zugriff auf Secrets in den ihnen zugewiesenen Namespaces gewährt werden, oder ein Kubelet in seiner Sicht auf lokale Pods beschränkt werden.
Voraussetzungen: Aktivieren des Featuregates AuthorizeWithSelectors.

Einschränkung des anonymen API-Zugriffs

Status: alpha
Kubernetes Enhancement Proposal: #4633
Beschreibung: Durch dieses Feature lassen sich die API-Endpunkte, auf die anonym zugegriffen werden kann, konfigurieren und einschränken. Auf diese Weise läuft man weniger Gefahr, aufgrund von RBAC Misskonfiguration(-en) durch unauthentifizierte Nutzer kompromittiert werden zu können.
Voraussetzungen: Aktivieren des Featuregates AnonymousAuthConfigurableEndpoints.

Nutzung mehrerer Service CIDRs

Status: beta
Kubernetes Enhancement Proposal: #1880
Dokumentation: Virtual IPs and Service Proxies [Kubernetes Docs]
Beschreibung: Mit Hilfe dieses Features ist es in Kubernetes v1.31 möglich, Service CIDRs mittels Kubernetes CRDs zu managen: IpAddress und ServiceCidr. So können ServiceRanges nun ohne Downtime angepasst werden, was besonders bei langlebigen oder einfach sehr großen Clustern ein großer Fortschritt zu aufwendigen Rekonfigurationen in der Vergangenheit ist.
Voraussetzungen: Aktivieren des Featuregates MultiCIDRServiceAllocator.

nftables Backend für kube-proxy

Status: beta
Kubernetes Enhancement Proposal: #4633
Dokumentationnftables Migrationsguide [Kubernetes Docs]
Beschreibung: nftables ist der Nachfolger von iptables und verspricht bessere Performanz und höhere Skalierbarkeit. In Kombination mit kube-proxy profitieren davon vor allem oft wechselnde ServiceEndpoints. Allerdings wird das Feature noch nicht von allen CNIs unterstützt – es empfiehlt sich, vor der Umstellung die entsprechende Dokumentation zu befragen.
Voraussetzungen: Linux Kernel >5.13.

AppArmor Support

Status: stable
Kubernetes Enhancement Proposal: #24
Dokumentation: AppArmor Tutorial [Kubernetes Docs]
Beschreibung: Anhand der niedrigen KEP ID sieht man, wie lange dieses Features bereits darauf wartet, endlich GA zu sein – und mit Kubernetes v1.31 ist es endlich so weit! Es ermöglicht uns, ein AppArmor Profil im securityContext Feld eines Containers oder Pods zu referenzieren, das dann von der ContainerRuntime forciert wird. Vor Kubernetes v1.31 war dies nur via Annotationen möglich. Nun gibt es das Feld appArmorProfile.type dafür. Es wird empfohlen, wenn möglich zu migrieren.
Voraussetzungen: keine

lastTransitionTime in Volumestatus

Status: stable
Kubernetes Enhancement Proposal: #3762
Dokumentation: Persistent Volumes [Kubernetes Docs]
Beschreibung: Im Status eines PersistentVolumes wird nun der Zeitpunkt der letzten Zustandsänderung in Form eines Timestamps im Feld .status.lastPhaseTransitionTime festgehalten. Dies ist vor Allem für Debugging und Erstellung von SLOs nützlich, bspw. für die Dauer zwischen Anfrage und Bereitstellung eines PersistentVolumes.
Voraussetzungen: keine

Eine vollständige Liste aller neuen Features in Kubernetes v1.31 findest Du entweder im Release Blogpost oder in den offiziellen Release Notes auf GitHub.

Abkündigungen und Deprecations

Wie bei jedem Kubernetes Release gab es auch in Kubernetes v1.31 eine ganze Reihe an Funktionen, die entweder abgekündigt oder komplett aus dem Projekt entfernt wurden.

So wurde beispielsweise der Support für cgroups v1 in den sog. Maintenance Mode versetzt, was im Endeffekt bedeutet, dass Sicherheitslücken weiterhin zuverlässig gepatcht werden, sonstige Bugs aber nach „Best Effort“ behoben werden. Die Empfehlung lautet, auf cgroups v2 umzustellen, falls nicht ohnehin schon geschehen.

Des Weiteren ist Kubernetes v1.31 endgültig Cloud-agnostisch. Die letzten Codeschnipsel, die spezifisch für einen bestimmten Cloudprovider wie AWS, Microsoft Azure oder Google Cloud Platform in der Codebase zu finden waren, konnten mit diesem Release entfernt werden.

Ähnlich verhält es sich mit in-tree Support für CephFS und CephRBD Volumes: Auch hier wurde die Implementierung aus dem Projekt herausgenommen. Die empfohlene Alternative ist die Verwendung der entsprechenden CSI Treiber.

Wir hoffen, dir hat dieser kurze Überblick über Kubernetes v1.31 gefallen, und du schaffst es, auf die neue Version zu upgraden, bevor es in ein paar Monaten den nächsten Blogpost aus der Reihe Kubernetes Releases von uns gibt.
Um diese und weitere Updates in Zukunft nicht zu verpassen, möchten wir dir auch noch einmal unseren Newsletter nahelegen – er fasst einmal im Monat alles zusammen, was uns in Sachen Cloud, Kubernetes und Tech-Events zu Ohren kommt.

Unser Portfolio

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Wie hat Dir unser Artikel gefallen?