De nieuwste release van Kubernetes, versie 1.33 met codenaam Octarine, introduceert een 64-tal aan verbeteringen. Met 18 features die naar stabiele status promoveren, legt deze release een sterke nadruk op de volwassenheid van het ecosysteem.
Zoals gebruikelijk bij Kubernetes-releases brengt versie 1.33 nieuwe stabiele, beta- en alpha-functionaliteiten met zich mee. De consistente levering van versies bevestigt volgens het release-team de kracht van de ontwikkelingscyclus en de levendige ondersteuning vanuit de community.
De naam (Octarine: The Color of Magic) is een verwijzing naar Terry Pratchett’s Discworld-romans, waarbij Octarine een kleur is die alleen magische individuen (en katten) kunnen zien. Het stelt daarmee de onderhuidse complexiteit van Kubernetes voor, waarvan de meeste gebruikers niks hoeven te begrijpen. Immers is de technologie, zo stelt het ontwikkelteam via een Pratchett-citaat, nog steeds magisch zelfs als je weet hoe het werkt.
Van de 64 verbeteringen naar stabiele status
Kubernetes v1.33 bestaat uit in totaal 64 verbeteringen, waarvan 18 naar de stabiele status zijn gepromoveerd, 20 in bèta gaan en 24 als alfa worden geïntroduceerd. Bovendien zijn er 2 functies teruggetrokken, te weten de Endpoints API en host network-ondersteuning voor Windows-pods. Daarnaast zijn er enkele velden gewijzigd of verwijderd, maar alleen bij onderdelen die al ‘deprecated’ waren in eerdere versies.
De release van Kubernetes v1.33 brengt verschillende verbeteringen met zich mee, waaronder een aantal die het release-team extra wil uitlichten. Eén daarvan is de promotie van sidecar containers naar stabiele status. Het sidecar-patroon omvat het inzetten van afzonderlijke hulpcontainers voor extra mogelijkheden op gebieden zoals netwerken, logging en het verzamelen van metrics.
Kubernetes implementeert sidecars als een speciale klasse van init-containers met restartPolicy: Always, waardoor sidecars vóór applicatiecontainers starten, gedurende de levenscyclus van de pod blijven draaien en automatisch afsluiten nadat de hoofdcontainers zijn gestopt. Sidecars kunnen ook gebruik maken van probes (startup, readiness, liveness) om hun operationele status aan te geven, en hun Out-Of-Memory (OOM) score-aanpassingen zijn afgestemd op primaire containers om vroegtijdige beëindiging onder geheugendruk te voorkomen.
Een andere belangrijke functionaliteit die naar bèta is gepromoveerd, is de in-place resource resize voor verticale schaling van Pods. Voorheen waren containerresources in een Pod-specificatie onveranderlijk, en updates vereisten vervanging van de Pod. Met deze functie kunnen resources nu dynamisch worden bijgewerkt zonder herstart, wat mogelijkheden opent voor verticale opschaling van stateful processen zonder downtime, naadloze afschaling bij lage belasting, en het toewijzen van grotere resources tijdens de opstart die later kunnen worden verminderd.
In versie 1.33 introduceert kubectl ook een nieuwe alfa-functie met een opt-in configuratiebestand .kuberc voor gebruikersvoorkeuren. Dit bestand kan kubectl-aliases en overschrijvingen bevatten, terwijl clusterreferenties en hostinformatie in kubeconfig blijven. Deze scheiding maakt het mogelijk om dezelfde gebruikersvoorkeuren te delen voor kubectl-interactie, ongeacht het doelcluster en de gebruikte kubeconfig.
Belangrijke stabiele features in v1.33
Naast sidecar containers zijn er nog 17 andere verbeteringen die de stabiele status hebben bereikt in v1.33. Zo gradueert de functie die backoff-limieten op basis van index voor geïndexeerde Jobs mogelijk maakt, waardoor elke index binnen een Indexed Job zijn eigen backoff-limiet kan hebben. Dit zorgt voor meer granulaire controle over het herhalingsgedrag van individuele taken en voorkomt dat het falen van specifieke indices de hele Job vroegtijdig beëindigt.
Ook het Job success policy is nu stabiel. Hiermee kunnen gebruikers via .spec.successPolicy aangeven welke pod-indexes moeten slagen (succeededIndexes), hoeveel pods moeten slagen (succeededCount), of een combinatie van beide. Dit is gunstig voor verschillende workloads, meldt het team, waaronder simulaties die niet volledig hoeven te worden afgerond.
Daarnaast zijn er ook nog andere belangrijke verbeteringen die nu stabiel zijn geworden, waaronder beveiligingsverbeteringen voor gebonden ServiceAccount-tokens, subresource-ondersteuning in kubectl, ondersteuning voor meerdere Service CIDR’s, de nftables-backend voor kube-proxy, en topologiebewuste routing met trafficDistribution: PreferClose. Deze functionaliteit optimaliseert het serviceverkeer in multi-zone clusters door prioriteit te geven aan het routeren van verkeer naar endpoints binnen dezelfde zone.
Op het gebied van opslagbeheer heeft volume populators de stabiele status bereikt. Deze functionaliteit biedt een manier om volumes vooraf te vullen met gegevens uit verschillende bronnen, niet alleen uit PersistentVolumeClaim (PVC) klonen of volume snapshots. Verbeteringen in lifecyclebeheer zijn al langer een duidelijke trend in recente Kubernetes-releases, en deze feature sluit daar perfect bij aan.
Nieuwe functionaliteiten in bèta en alfa
Naast de stabiele features introduceert Kubernetes v1.33 ook diverse nieuwe bèta-functionaliteiten. Zo is er nu ondersteuning voor Direct Service Return (DSR) in Windows kube-proxy, wat prestatie-optimalisaties biedt door retourverkeer via load balancers rechtstreeks naar de client te laten reageren zonder de load balancer te passeren. Dit vermindert de belasting op de load balancer en verlaagt de algehele latentie.
De ondersteuning voor gestructureerde parameters blijft een bèta-functie in Kubernetes v1.33, maar dit kernonderdeel van Dynamic Resource Allocation (DRA) heeft aanzienlijke verbeteringen gezien. Een nieuwe v1beta2-versie vereenvoudigt de resource.k8s.io API, en reguliere gebruikers met de namespaced cluster edit-rol kunnen nu DRA gebruiken.
Opvallend bij deze release is ook dat er steeds meer ondersteuning komt voor gespecialiseerde hardware en diverse workloads, te vertalen naar een beter passende multicloud-aanpak zoals eerdere releases al uitlichtten. De Dynamic Resource Allocation (DRA) voor netwerkinterfaces, asynchrone preemption in de Kubernetes Scheduler en ClusterTrustBundles voor het beheren van X.509-vertrouwensankers zijn daar voorbeelden van.
De alfa-functies in v1.33 omvatten onder meer configureerbare tolerantie voor HorizontalPodAutoscalers, instelbare container restart-vertraging, aangepaste container stop-signalen en tal van DRA-verbeteringen.
Beschikbaarheid en aan de slag
Kubernetes v1.33 is nu beschikbaar om te downloaden op GitHub of op de Kubernetes download-pagina. Voor wie aan de slag wil met Kubernetes zijn er interactieve tutorials beschikbaar of de mogelijkheid om lokale Kubernetes-clusters te draaien met behulp van minikube. Versie 1.33 kan ook eenvoudig worden geïnstalleerd met kubeadm.