Kubernetes v1.22 is een nieuwe functie-release die meer dan 50 verbeteringen toevoegt aan het containerorkestratieplatform. Het deprecieert ook enkele mogelijkheden en verwijdert verschillende API's die zijn vervangen door vervangende versies.
Hier is het overzicht van de belangrijkste wijzigingen, te beginnen met functie-toevoegingen.
Server-Side toepassen
Server-side Apply is nu uit de bètafase en algemeen beschikbaar voor alle gebruikers. Het is een nieuw mechanisme om declaratief resourcebeheer door gebruikers en clustercontrollers te vergemakkelijken.
Door Server-side Apply te gebruiken, kunnen ontwikkelaars resourcewijzigingen initiëren door hun bedoelingen te beschrijven. De Kubernetes API-server houdt wijzigingen in objecten per veld bij. Dit “veldbeheer” systeem creëert een eigendomsmodel waarbij wijzigingen aan een veld die door een andere manager zijn toegevoegd, automatisch worden afgewezen. Dit voorkomt dat een bewerking die door een andere beheerder is gestart onbedoeld ongedaan wordt gemaakt.
Vóór Server-side Apply maakte de logica voor het identificeren van resourcevelden die een update nodig hadden deel uit van de client-side kubectl apply-opdracht. Dit wordt nu naar de server verheven, waardoor het voor controllers gemakkelijker wordt om hun eigen configuratiewijzigingen door te voeren en de nieuwe toegangscontrolemogelijkheden worden vergemakkelijkt. Wijzigingen in afzonderlijke velden worden geregistreerd, niet alleen de laatste status die door elke gebruiker is toegepast.
Advertentie
Resources krijgen een nieuwe managedFields-eigenschap wanneer Server-side Apply met veldbeheer actief is. Het registreert elk veld, de bijbehorende gegevens en het tijdstip waarop het voor het laatst is bijgewerkt. Handmatig bewerken van managedFields is mogelijk, maar wordt sterk afgeraden; het is de bedoeling dat alleen de Kubernetes API-server deze waarden schrijft.
Veldbeheer wordt geleverd met ondersteuning voor conflictoplossing en vier verschillende samenvoegstrategieën. Hiermee kunt u aanpassen wat er gebeurt als u een veld probeert te bewerken dat al door een andere gebruiker is gewijzigd. U kunt de wijzigingen indien nodig geforceerd toepassen, waarbij het eigendom wordt overgedragen aan de inkomende gebruiker.
Externe referentieproviders
Externe referentieproviders hebben ook de sprong gemaakt te stabiel. Hiermee kunt u plug-ins gebruiken om referenties zoals authenticatietokens en TLS-certificaten van buiten uw cluster te verkrijgen.
Met deze functie kunt u Kubernetes-toegangscontrole integreren met bestaande auth-providers. Providers kunnen u verifiëren met behulp van OAuth2-, LDAP- en SAML-systemen, zodat u kunt inloggen met uw bestaande inloggegevens voor populaire services.
Providers worden geïmplementeerd als plug-ins met een servercomponent die in het cluster wordt uitgevoerd. Deze gebruikt een speciale webhook om klantspecifieke tokens om te zetten in een indeling die de Kubernetes API-server kan interpreteren.
Running Without Root
Hoogbeveiligde omgevingen kunnen betere beveiliging krijgen door het Kubernetes-besturingsvlak uit te voeren als een niet-rootgebruiker. Dit is een alfafunctie die beschikbaar is voor nieuwe clusterimplementaties. Het helpt de risico's van een succesvol compromittering van het controlevlak te verkleinen door onbeperkte toegang tot uw host te bieden.
Advertentie
Als u een cluster wilt starten als een niet-rootgebruiker, moet u de RootlessControlPlane-functiepoort inschakelen. Het besturingsvlak zou dan moeten starten zonder sudo te gebruiken.
Er is vergelijkbare ondersteuning voor het uitvoeren van afzonderlijke componenten op knooppuntniveau in een niet-rootomgeving. Kubelet, kube-proxy en de containerruntime hebben nu deze mogelijkheid, waardoor u de beveiliging van uw installatie kunt verbeteren.
API-verwijderingen
As een nieuwe kleine release, v1.22 deprecieert een aantal bestaande mogelijkheden in verschillende Kubernetes-componenten. Dit zijn meestal opdrachten, vlaggen en enkele plug-ins voor authenticatie en opslag. De getroffen functies blijven beschikbaar, maar kunnen in de toekomst worden verwijderd.
v1.22 verwijdert ook in totaal 12 eerder verouderde API's. De verwijderde API's zijn allemaal bètaversies die zijn vervangen door nieuwere stabiele alternatieven.
De lijst bevat de Ingress- en IngressClass-resources die worden gebruikt om services met routeringsregels weer te geven. De networking.k8s.io/v1beta1-versies van deze objecten moeten worden vervangen door hun networking.k8s.io/v1-tegenhangers die ondersteund blijven.
Andere verwijderde API's zijn de bètaversies van APIService, CertificateSigningRequest, CustomResourceDefinition en Lease, evenals verschillende objecten met betrekking tot toegangscontrole, opslag en planning. Bekijk de migratiehandleiding voordat u de upgrade op uw cluster toepast. U moet alle bronnen wijzigen die de verwijderde API's gebruiken, zodat ze in plaats daarvan verwijzen naar de nieuwe stabiele versies.
De volgende Kubernetes-release waarin verwijderingen worden opgenomen, is v1.25. Dit is momenteel gepland om vier bèta-API's te verwijderen: CronJob, EndpointSlice, Event en PodDisruptionBudget.
Andere wijzigingen
Deze release bevat vele andere kleine toevoegingen en verbeteringen, waaronder alpha-ondersteuning voor swap-geheugen, een verbeterde ervaring bij het uitvoeren van Kubernetes op Windows en de mogelijkheid om cgroups v2 te gebruiken om geheugentoewijzing en isolatiebeperkingen op Pods in te stellen.
Advertentie
Etcd, het configuratiearchief dat wordt gebruikt door de Kubernetes API-server, is verhoogd naar v3.5.0. Dit verbetert de logmogelijkheden met een nieuw gestructureerd formaat en geïntegreerde bestandsrotatie. Het project heeft ook aanzienlijke prestatieverbeteringen opgeleverd om een aantal veelvoorkomende Kubernetes-activiteiten te versnellen.
Verschillende bèta-API's zijn nu gemarkeerd als stabiel, inclusief gebonden serviceaccounttokens en het PodDisruptionBudget-object voor het specificeren van minimale gelijktijdige replicatellingen. Kubernetes heeft de mogelijkheid gekregen om u te waarschuwen wanneer u ook een verouderde API gebruikt, waardoor het gemakkelijker wordt om op het stabiele pad te blijven. U ziet deze berichten wanneer u resources toepast op uw cluster.
Nieuwe release-cadans
v1.22 markeert het begin van een nieuwe reguliere release-cadans voor Kubernetes-updates. Functies komen nu vier keer per jaar beschikbaar in plaats van drie, waardoor een iets langere ontwikkelingscyclus ontstaat die meer kansen biedt om de releasekwaliteit te optimaliseren en te behouden. Het biedt ook meer ademruimte voor clusterbeheerders die nu een extra maand tussen migraties hebben.
In lijn met dit schema wordt Kubernetes v1.23 naar verwachting begin december 2021 verwacht. Elke cyclus heeft een geschatte ontwikkeltijd van 15 weken. Regelmatige patch-updates worden nog steeds uitgebracht op hun bestaande maandelijkse cadans, met kritieke bugfixes die indien nodig eerder beschikbaar komen.
Samenvatting
Kubernetes v1.22 is een mijlpaalupdate waarmee het project naar een nieuwe release-cadans gaat. Dit zal clusterbeheerders helpen bij het plannen van toekomstige upgrades, waardoor er meer migratietijd is voordat de volgende komt.
Advertentie
In termen van nieuwe functies is de belangrijkste toevoeging waarschijnlijk Server-side Apply. Dit vereenvoudigt het gebruik van declaratieve resourceconfiguraties, waardoor logica van kubectl naar uw cluster wordt getild. Dit zal naar verwachting uiteindelijk de oorspronkelijke implementatie van kubectl apply volledig vervangen.
Upgraden naar v1.22 vereist mogelijk actie als je nog steeds een van de verwijderde bèta-API's gebruikt. Je zou ze moeten kunnen vervangen door hun stabiele versies, hoewel dit in sommige gevallen kan betekenen dat je je bronnen moet aanpassen. Als u nu de tijd neemt om de nieuwe beëindigingen in v1.22 aan te pakken, kunt u zich voorbereiden op de komst van v1.23, waardoor het migratieproces van die release wordt vergemakkelijkt.