Was ist neu in Kubernetes v1.22?

0
174

Kubernetes v1.22 ist ein neues Feature-Release, das über 50 Verbesserungen an die Container-Orchestrierungsplattform. Außerdem werden einige Funktionen eingestellt und mehrere APIs entfernt, die durch Ersatzversionen ersetzt wurden.

Hier sind die wichtigsten Änderungen, beginnend mit Funktionserweiterungen.

Serverseitiges Anwenden

Serverseitiges Apply ist jetzt aus der Betaphase und allgemein für alle Benutzer verfügbar. Es handelt sich um einen neuen Mechanismus zur Erleichterung der deklarativen Ressourcenverwaltung durch Benutzer und Cluster-Controller.

Mit serverseitigem Apply können Entwickler Ressourcenänderungen einleiten, indem sie ihre Absichten beschreiben. Der Kubernetes-API-Server verfolgt Änderungen an Objekten feldweise. Diese “Feldverwaltung” Das System erstellt ein Eigentumsmodell, bei dem Änderungen an einem Feld, die von einem anderen Manager hinzugefügt wurden, automatisch abgelehnt werden. Dadurch wird verhindert, dass ein von einem anderen Administrator gestarteter Vorgang unbeabsichtigt rückgängig gemacht wird.

Vor dem serverseitigen Apply war die Logik zum Identifizieren von Ressourcenfeldern, die ein Update benötigen, Teil des clientseitigen kubectl apply-Befehls. Jetzt wird dies auf den Server übertragen, was es den Controllern erleichtert, ihre eigenen Konfigurationsänderungen vorzunehmen und die neuen Zugriffskontrollfunktionen zu erleichtern. Änderungen an einzelnen Feldern werden aufgezeichnet, nicht nur der letzte von jedem Benutzer angewendete Status.

Werbung

Ressourcen erhalten eine neue ManagedFields-Eigenschaft, wenn serverseitiges Anwenden mit Feldverwaltung aktiv ist. Es zeichnet jedes Feld, die damit verbundenen Daten und den Zeitpunkt der letzten Aktualisierung auf. Das manuelle Bearbeiten von ManagedFields ist möglich, wird jedoch dringend davon abgeraten; Es ist beabsichtigt, dass nur der Kubernetes-API-Server diese Werte schreibt.

Die Feldverwaltung bietet Unterstützung für die Konfliktlösung und vier verschiedene Zusammenführungsstrategien. Damit können Sie anpassen, was passiert, wenn Sie versuchen, ein Feld zu bearbeiten, das bereits von einem anderen Benutzer geändert wurde. Sie können die Änderungen bei Bedarf erzwingen und das Eigentum an den neuen Benutzer übertragen.

Externe Anbieter von Anmeldeinformationen

Externe Anbieter von Anmeldeinformationen haben ebenfalls den Sprung geschafft zu stabil. Mit diesen können Sie Plugins verwenden, um Anmeldeinformationen wie Authentifizierungstoken und TLS-Zertifikate von außerhalb Ihres Clusters abzurufen.

Mit dieser Funktion können Sie die Kubernetes-Zugriffskontrolle in vorhandene Authentifizierungsanbieter integrieren. Anbieter können Sie mithilfe von OAuth2-, LDAP- und SAML-Systemen authentifizieren, sodass Sie sich mit Ihren vorhandenen Anmeldeinformationen für beliebte Dienste anmelden können.

Anbieter werden als Plug-ins mit einer serverseitigen Komponente implementiert, die im Cluster ausgeführt wird. Dies verwendet einen speziellen Webhook, um clientspezifische Token in ein Format zu konvertieren, das der Kubernetes-API-Server interpretieren kann.

Running Without Root

Hochsicherheitsumgebungen können durch die Ausführung der Kubernetes-Steuerungsebene als Nicht-Root-Benutzer erhöhten Schutz erhalten. Dies ist eine Alphafunktion, die für neue Clusterbereitstellungen verfügbar ist. Es hilft, die Risiken einer erfolgreichen Gefährdung der Steuerungsebene zu mindern und bietet unbegrenzten Zugriff auf Ihren Host.

Werbung

Das Starten eines Clusters als Nicht-Root-Benutzer erfordert, dass Sie das RootlessControlPlane-Feature-Gate aktivieren. Die Kontrollebene sollte dann ohne sudo starten.

Es gibt eine ähnliche Unterstützung für die Ausführung einzelner Komponenten auf Knotenebene in einer Nicht-Root-Umgebung. Kubelet, kube-proxy und die Container-Laufzeit verfügen jetzt über diese Funktion und helfen Ihnen, die Sicherheit Ihrer Installation zu erhöhen.

API-Entfernungen

As eine neue Nebenversion, v1.22, veraltet einige vorhandene Funktionen in verschiedenen Kubernetes-Komponenten. Dies sind hauptsächlich Befehle, Flags und einige Authentifizierungs- und Speicher-Plugins. Die betroffenen Funktionen bleiben verfügbar, könnten aber in Zukunft eingestellt werden.

V1.22 entfernt außerdem insgesamt 12 zuvor eingestellte APIs. Die entfernten APIs sind alle Betaversionen, die durch neuere stabile Alternativen ersetzt wurden.

Die Liste enthält die Ingress- und IngressClass-Ressourcen, die verwendet werden, um Dienste mit Routingregeln bereitzustellen. Die networking.k8s.io/v1beta1-Versionen dieser Objekte sollten durch ihre network.k8s.io/v1-Gegenstücke ersetzt werden, die weiterhin unterstützt werden.

Andere entfernte APIs umfassen die Betaversionen von APIService, CertificateSigningRequest, CustomResourceDefinition und Lease sowie mehrere Objekte im Zusammenhang mit Zugriffskontrolle, Speicherung und Planung. Lesen Sie den Migrationsleitfaden, bevor Sie das Upgrade auf Ihren Cluster anwenden. Sie müssen alle Ressourcen mithilfe der entfernten APIs ändern, damit sie stattdessen auf die neuen stabilen Versionen verweisen.

Die nächste Kubernetes-Version mit Entfernungen ist v1.25. Damit sollen derzeit vier Beta-APIs entfernt werden: CronJob, EndpointSlice, Event und PodDisruptionBudget.

Andere Änderungen

Diese Version enthält viele weitere kleinere Ergänzungen und Verbesserungen, darunter Alpha-Unterstützung für Swap-Speicher, eine verbesserte Erfahrung bei der Ausführung von Kubernetes unter Windows und die Möglichkeit, cgroups v2 zu verwenden, um Speicherzuweisungs- und Isolationsbeschränkungen für Pods festzulegen.

Werbung

Etcd, der vom Kubernetes-API-Server verwendete Konfigurationsspeicher, wurde auf Version 3.5.0 aktualisiert. Dies verbessert die Protokollierungsfunktionen mit einem neuen strukturierten Format und integrierter Dateirotation. Das Projekt lieferte auch erhebliche Leistungsverbesserungen, um einige gängige Kubernetes-Vorgänge zu beschleunigen.

Mehrere Beta-APIs sind jetzt als stabil gekennzeichnet, darunter gebundene Dienstkonto-Token und das PodDisruptionBudget-Objekt zum Angeben der minimalen Anzahl gleichzeitiger Replikate. Kubernetes kann Sie auch warnen, wenn Sie eine veraltete API verwenden, wodurch es einfacher wird, auf dem stabilen Pfad zu bleiben. Diese Meldungen werden Ihnen angezeigt, wenn Sie Ressourcen auf Ihren Cluster anwenden.

Neue Versions-Kadenz

v1.22 markiert den Beginn einer neuen regulären Release-Kadenz für Kubernetes-Updates. Die Features werden jetzt viermal im Jahr statt drei landen, was einen etwas längeren Entwicklungszyklus schafft, der mehr Möglichkeiten bietet, die Release-Qualität zu optimieren und aufrechtzuerhalten. Es bietet auch mehr Freiraum für Clusteradministratoren, die jetzt einen zusätzlichen Monat zwischen den Migrationen haben.

Gemäß diesem Zeitplan wird Kubernetes v1.23 voraussichtlich Anfang Dezember 2021 eintreffen. Jeder Zyklus hat eine geschätzte Entwicklungszeit von 15 Wochen. Regelmäßige Patch-Updates werden weiterhin im bestehenden monatlichen Rhythmus veröffentlicht, wobei kritische Fehlerkorrekturen bei Bedarf früher eintreffen.

Zusammenfassung

Kubernetes v1.22 ist ein Meilenstein-Update das sieht, dass das Projekt zu einer neuen Release-Kadenz wechselt. Dies hilft Clusteradministratoren bei der Planung zukünftiger Upgrades und bietet mehr Zeit für die Migration, bevor das nächste kommt.

Werbung

In Bezug auf neue Funktionen ist die wohl wichtigste Ergänzung die serverseitige Anwendung. Dies vereinfacht die Verwendung deklarativer Ressourcenkonfigurationen und hebt die Logik von kubectl in Ihren Cluster auf. Dies wird voraussichtlich die ursprüngliche kubectl apply-Implementierung vollständig ersetzen.

Ein Upgrade auf Version 1.22 erfordert möglicherweise Maßnahmen, wenn Sie noch eine der entfernten Beta-APIs verwenden. Sie sollten in der Lage sein, sie durch ihre stabilen Versionen zu ersetzen, obwohl dies in einigen Fällen eine Änderung Ihrer Ressourcen bedeuten kann. Wenn Sie sich jetzt die Zeit nehmen, die neuen veralteten Versionen in Version 1.22 anzugehen, können Sie sich auf die Einführung von Version 1.23 vorbereiten und den Migrationsprozess dieser Version vereinfachen.