Zum Hauptinhalt springen

Blogs

Was steckt in Kubernetes-Version 1.28?

Während sich die Welt der Container-Orchestration weiterhin entwickelt, steigt Kubernetes-Version 1.28 als Meilenstein unnachgiebigen Fortschrittes und der Innovation empor. Mit Features, welche von überholten Kubectl-Event-Befehlen bishin zu anspruchsvollen, dynamischen Ressourcen-Umverteilung reichen, verspricht diese Version die Art und Weise, in welcher wir Container-Ökosysteme wahrnehmen und verwalten, gänzlich umzukrempeln.

Ob Sie nun ein am Monitoren von Metrics interessierter Administrator oder ein Entwickler sind, welcher nach Performance-Verbesserungen äugt, dem kann Kubernetes 1.28 eine Vielzahl an Upgrades zur Verbesserung der Orchestrations-Erfahrung bieten. 

Tauchen Sie gemeinsam mit uns ein, während wir die bemerkenswerten Verbesserungen erforschen, welche die nächste Generation des Container-Managements auf den Kopf stellt.

Vier faszinierende Verbesserungen in Kubernetes 1.28

  1. Sidecar-Container-Integration

    Das Sidecar-Pattern hat sich schon lange als entscheidende Praxis in Kubernetes herausgestellt. Mit dem 1.28-Release werden Sidecar-Container offiziell unterstützt und rationalisieren so Funktionen wie die Metrics-Sammlung, Das Verwalten der Secrets und Service-Mesh-Integration. Diese Entwicklung verspricht robustere Kubernetes-Workloads, was sehr zur Freude von Entwicklern, Administratoren wie auch Endnutzern gereichen sollte.

  2. Generalüberholung von Kubernetes-Jobs

    Dieser Release bringt überdies einige nennenswerte Verbesserungen für Kubernetes-Jobs, welche insbesondere den Machine-Learning-Tasks zugutekommen dürften. Vom Sicherstellen, dass Sidecars nicht den Job-Abschluss hindern bis hin zu erweiterten Features wie Neustart-Schleifen-Mechanismen für das Fehlschlagen von Pods wie auch anspruchsvollere Job-Kontrollen steht Kubernetes schon nahezu fest als ernstzunehmender Player innerhalb des ML-Space.

  3. Verbesserungen für Rolling Updates

    System-Komponenten ohne nennenswerte Ausfallzeiten zu upgraden war noch nie eine leichte Aufgabe. Kubernetes 1.28 bringt Features, um diese Rolling-Updates geschmeidiger und zuverlässiger zu gestalten. Bemerkenswert wäre auch das Versprechen der neuen Funktionalitäten, sogenannte Connection-Drops innerhalb des Upgrade-Prozesses zu minimieren. Dies dient der Minimierung von Service-Unterbrechungen und infolgedessen einem reibungsloseren Übergang.

  4. Community-gesteuertes Package-Management

    Im Bestreben, die Community stärker einzubeziehen, entfernt sich Kubernetes von den Google-basierten Infrastrukturen und wandert in Richtung Community-eigener Repositories für Paket-Verteilungen. Diese Evolutionsstufe untermalt die Reife des Projekts und deutet auf eine von Beiträgen aus diversen Quellen geleitete Zukunft hin.

Fortgeschrittene API-Features

  • Einheitliches Lesen vom Cache: Kubernetes-Version 1.28 bringt eine Generalüberholung der Effizienz von API-Anfragen, dabei primär GET und LIST. Die Einführung von „WatchProgressRequest“ optimiert die Performance durch das Abgreifen aus dem Watch-Cache des Etcd’s. 

  • Data-Streaming via Informer: Aus dem vorherigen Feature ausgeweitet kann der API-Server nun Datenveränderungen live wiedergeben und so den Memory-Overhead repetitiver LIST-Anfragen minimieren. 

  • Mixed-Version-Proxy: Um die Herausforderungen der Cluster-Upgrades zu adressieren, besitzt der Kube-Apiserver nun die Fähigkeit, Ressourcen-Anfragen an die Peer-Server zu leiten und so nahtlose Abläufe zwischen verschiedenen Server-Versionen zu gewährleisten. 

  • Verbessertes Custom-Ressourcen-Definitions-Handling (CRD): Kubernetes-Version 1.28 vereinfacht die Verwaltung von CRD-Schema-Änderungen. So entstehen nicht länger Fehlermeldungen bei Edits, welchen den neuen Validations-Regeln bereits entsprechen und machen das Ganze so deutlich nutzerfreundlicher. 
  • CRD-Validierung durch Expression-Language: Der neue Release erlaubt nun die direkte Definierung von Validierungsregeln innerhalb der Custom-Ressourcen, wodurch WebHooks nicht länger benötigt werden. Diese Erweiterung hat zahlreiche Verbesserungen seit seiner Beta-Phase in Version 1.25 erhalten.

  • Verbesserte Admissions-Kontrolle mit CEL: Kubernetes 1.28 übernimmt die Common-Expression-Language (CEL) für dessen Admission-Controller und bietet so präzisere Validierungsmechanismen. Zum Beispiel können Administratoren nun Regeln aufstellen, welche Objekt-Erstellungen, die nicht den vorgegebenen Kriterien entsprechen, verhindern können.

Anwendungsbasierte Features

  • Erneuertes Job-Handling: Jobs in Kubernetes können nun erst nach Abschluss ihrer Terminierung ausgetauscht werden, was in erster Linie spezifischen Workload-Anforderungen dient. Dieses Verhalten kann von Administratoren leicht über das „podReplacementPolicy“-Feld festgelegt werden.

  • Fine-getunte Job-Neustarts: Der Release bietet nun auch granulare Kontrolle über die Job-Neustarts, bei denen Administratoren nun die Anzahl für die Neustarts bestimmter Indizes innerhalb eines Jobs wählen können. Dies gewährleistet robustere und fehler-tolerantere Abläufe. 

Job-Zeitstempel-Annotationen, welche durch Cronjobs hinzugefügt wurden

SIG: sig-apps

Status: Beta

Feature: CronJobCreationAnnotation (Enabled by default)

Der Cronjob-Controller beinhält nun den erwarteten Zeitstempel, sobald ein Job ausgeführt wird:

batch.kubernetes.io/cronjob-scheduled-timestamp: "2016-05-19T03:00:00-07:00"

 

Einstellbare Job-Pod-Fehler-Verwaltung

SIG: sig-apps

Status: Beta

Feature: JobPodFailurePolicy (Enabled by default)

Verwalten von Pod-Fehlern in Jobs mithilfe der neuen „podFailurePolicy“. So lassen sich ohne Einfluss auf’s „backofflimit“ Neustarts verwalten. 

 

Pod-Index-Label für StatefulSets und indizierte Jobs eingeführt

SIG: sig-apps

Status: Beta

Feature: PodIndexLabel (Enabled by default)

Jobs wie auch StatefulSet-Controller unterstützen nun den Pod-Index als Label.

 

KMS v2 Verbesserungen

SIG: sig-auth

Status: Beta

Feature: KMSv2 (Enabled by default)

KMS v2 zielt darauf ab, die vorherigen Hürden seines Vorgängers zu überwinden, wie etwa die Performance oder die Manual-Key-Rotation. Mit einer aufgemöbelten Key-Hierarchie und besseren Überschaubarkeit bringt die aktualisierte Version zahlreiche Verbesserungen.

 

Reduzierung von Old-Service-Account-Tokens

SIG: sig-auth

Status: Beta

Features: LegacyServiceAccountTokenTracking & LegacyServiceAccountTokenCleanUp (Both enabled by default)

Von Kubernetes 1.22 an sind die Tokens nicht länger autogeneriert, sondern werden von der TokenRequest-API beschafft. Damit sollen die Old-Style-Token weiter minimiert werden. 

 

Lernen Sie ihr authentifiziertes Selbst mit der Auth API kennen

SIG: sig-auth

Status: Stable

Feature: APISelfSubjectReview (Enabled by default)

Die neue API offenbart die authentifizierte Identität, sei es nun ein Nutzer oder ein Service-Account. Die Info kann mit Hilfe eines CLI-Befehls abgerufen werden via „kubectl alpha auth whoami“ und unterstützt so in der Diagnose von Authentifikationsmalheuren. 

 

Kubectl Delete wird lebendig mit New Flag

SIG: sig-cli

Status: Alpha

Die Nutzung der „-i“- oder „--interactive“-Flags während der Nutzung von „kubectl delete“ liefert nun eine Vorschau der zu löschenden Objekte und ermöglicht so die direkte Bestätigung durch den Nutzer

 

Kubectl Events Command-Upgrade

SIG: sig-cli

Status: Stable

„kubectl get“-Event-Limitationen sind Geschichte mit der Verbesserung des „kubectl events“-Befehls und bietet verbesserte Watch-Kontrollen sowie Filtering. Dies ist seit der 1.28 nun vollständig in Stable eingerückt.

 

Metrics-Stabilitäts-Verbesserungen 

SIG: sig-instrumentation

Status: Beta

Das neue Update bringt zwei Stabilitäts-Level, genannt „Internal“ und „Beta“ für die Metrics. Die Beta-Metrics sind zuverlässiger und Forward-Compatibility.

 

Kube-proxy verstärkt Ingress-Verbindungs-Health-Management

SIG: sig-network

Status: Alpha

Feature: KubeProxyDrainingTerminatingNodes (Disabled by default)

Kube-proxy gewährleistet das reibungslose Abschalten von Verbindungen, sobald ein Node zugrunde geht. Auch existiert ein neuer /livez-Pfad für genauere Health-Checks.

 

Verbesserte NodePort-Ranges-Verteilung

SIG: sig-network

Status: Beta

Feature: ServiceNodePortStaticSubrange (Enabled by default)

Dieses Update erlaubt für mehr Kontrolle über den NodePort-Service und belässt die anfänglichen Ports der „service-node-port-range“ für eine statische Verteilung.

 

Load Balancer Node-Management verbessert

SIG: sig-network

Status: Beta

Feature: StableLoadBalancerNodeSet (Enabled by default)

Die Art und Weise, wie Nodes von der Liste des Load-Balancers entfernt werden wurde neu definiert. Dies reduziert unerwünschte Kettenreaktionen, so etwa sofortige Verbindungs-Terminierungen und Load-Balancer-Neusynchronisationen.

 

EndpointSlice-Reconciler zieht um

SIG: sig-network

Status: Stable

Die EndpointSlice-Reconciler-Logik wird aufgedeckt und zieht in ein neues Modul zur Nutzung im Custom-Endpoint-Controllern ein.

 

Optimierte Iptables-Restore-Funktion

SIG: sig-network

Status: Stable

Feature: MinimizeIPTablesRestore (Enabled by default)

Kube-proxy erfährt eine Verbesserung im Iptables-Modus durch das Modifizieren wie Iptables funktionieren. Nun wird sich nur auf veränderte Regeln konzentriert. 

 

Clean-Up von Iptables-Chain-Besitz 

SIG: sig-network

Status: Stable

Feature: IPTablesOwnershipCleanup (Enabled by default)

Als Aufräummaßnahme werden ungenutzte Iptables-Ketten, welche von Kubelet oder Kube-proxy geschaffen wurden, entfernt.

 

DNS-Konfigurationen erweitert

SIG: sig-network

Status: Stable

Feature: ExpandedDNSConfig (Enabled by default)

Die DNS-Konfiguration ist flexibler als zuvor und beinhaltet nun mehr Such-Pfade sowie längere Listen. 

 

Verbesserte Traffic-Ausrichtung für das Terminieren von End-Points

SIG: sig-network

Status: Stable

Feature: ProxyTerminatingEndpoints (Enabled by default)

Kube-proxy geht nun geschickter mit Traffic zu den Endpoints, welche dort verschwinden um. Dies hilft insbesondere beim Rollen neuer Updates, wenn die End-Points im „terminated“-Status verweilen. 

Für ein umfassenderes Verständnis besuchen Sie die den Artikel von Kubernetes.io: „Advancements in Kubernetes Traffic Engineering“.

 

Bedingung für Sandbox-Initiation (KEP-3085)

SIG: sig-node

Status: Introduction to Alpha

Feature: PodReadyToInitiateContainersCondition (Default: false)

Kubernetes 1.28 enthält nun einen weiteren Pod-Status mit der Benennung „PodReadyToInitiateContainersCondition“. Dieser Status zeigt auf, wenn der Pod seine Sandbox betritt und dessen Networking konfiguriert, was Cluster-Administratoren und Kubernetes-Controllern behilflich sein dürfte.

 

Bestimmung des Cgroup-Treibers via CRI

SIG: sig-node

Status: Introduction to Alpha

Feature: KubeletCgroupDriverDetectionFromCRI (Default: false)

Kubernetes 1.28 lässt Kubelet mithilfe der Container-Runtime den Cgroup-Treiber intuitiv bestimmen. Dadurch sollen diagnostische Komplikationen durch Diskrepanzen in der Konfiguration ausgehebelt werden.

 

Modulares Kubelet-Config-Verzeichnis

SIG: sig-node

Status: Introduction to Alpha

Feature: ModularIndexedJob (Default: false)

Mit dem Release der Version 1.28 ermöglicht Kubernetes die Konfiguration eines Kubelets-Verzeichnisses. Durch Nutzung des neuen „--config-dir“-Arguments, können Nutzer nun mehrere .conf-Konfigurationsdateien einschleusen und so Setup-Prozesse rationalisieren. 

 

Sidecar-Container-Management 

SIG: sig-node

Status: Introduction to Alpha

Feature: ManagedSidecarContainers (Default: false)

Das neue Update treibt das Management von Sidecar-Containern voran. So bietet Kubernetes nun eine verbesserte Methode, um den Lifecycle eines Sidecar-Containers zu identifizieren als auch zu verwalten und dies in Korrelation mit den primären Containern. 

 

CDI-Device inkludiert in der Device-Plugin-API

SIG: sig-node

Status: Introduction to Alpha

Feature: DevicePluginCDIDevicesIntegration (Default: false)

Kubernetes 1.28 enthüllt eine weitere Verbesserung, bei welcher Device-Plugin-Entwickler nahtlos Anfragen an Container-Runtimes weiterleiten können und so die Device-Integrations-Fähigkeiten auf das nächste Level bringt. 

 

Entwicklung der dynamischen Ressourcen-Umverteilung 

SIG: sig-node

Status: Progression to Alpha

Feature: ProgressiveDynamicResourceAssignment (Default: false)

Dieses Feature, welches schon seit Version 1.26 seine Reise begann, befähigt Pods spezifische Ressourcen jenseits der konventionellen CPU- und Memory-Bedürfnisse anzufragen, was vor allem den Umgebungen, welche besonderen Ressourcenanforderungen haben, zugutekommt. 

 

Nutzer-Namespace-Integration in Pods

SIG: sig-node

Status: Progression to Alpha

Feature: StatelessUserNamespaceIntegrationInPods (Default: false)

Die Integration von Nutzer-Namespaces in Kubernetes 1.28 verstärkt die Sicherheit, indem Pod-Prozesse nun mit variierenden Nutzer-IDs anstelle der ID des Host-Nutzers laufen. Diese sind primär auf Linux-Systemen verfügbar. 

 

Verbessertes Multi-Numa-Alignment im Topology-Manager

SIG: sig-node

Status: Progression to Beta

Feature: TopologyManagerAdvancedPolicyOptions (Default: true)

Kubernetes beinhaltet nun eine erhöhte Wahrnehmung für System-Topologien und konzentriert sich dabei auf das Zuweisen von Aufgaben für die Abschätzung der CPU-Kerne für eine erhöhte Effizienz.

 

Memory-Swap-Support für Nodes 

SIG: sig-node

Status: Progression to Beta

Feature: NodeMemorySwap (Default: true)

Mit dem Support von Swap auf Linux-Nodes, dient dieses Kubernetes-Feature dem Verhindern von sogenannten „Out-Of-Memory-Terminierungen“, wenn auch ein Warnhinweis bezüglich der potentiellen Latenz beigelegt wird. 

 

Zusammenfassung:

Kubernetes-Version 1.28 markiert einen weiteren Meilenstein in dem Streben nach tadelloser Container-Orchestration. Von bedeutsamen Änderungen bei den Kubectl-Befehlen und Metrics im Bereich Stabilität bis hin zu erweiterten Netzwerk-Funktionen wie dem neudefinierten Ingress-Verbindungs-Health-Management, strotzt dieses Update nur mit Features, die sowohl blutigen Anfängern wie auch erfahrenen Kubernetes-Seglern helfen.

Verbessertes Node-Management, Optimierung der Iptables wie auch Features mit dem Fokus auf Nutzer-Sicherheit demonstrieren Kubernetes Hingabe, das Feedback der Community zu adressieren wie auch den sich stetig entwickelnden Hürden zu stellen.

Wir freuen uns auf zukünftige Entwicklungen, auch wenn mit Version 1.28 eine ziemliche hohe Messlatte gesetzt wurde, um die Grenzen des Möglichen im Reich der Container abermals zu sprengen.