Einführung der Container-Orchestrierungsplattform , die es ermöglicht, einen Cluster aus isolierten Containern als Ganzes zu verwalten, und Mechanismen für das Deployment, die Wartung und das Skalieren von in Containern laufenden Anwendungen bereitstellt. Das Projekt wurde ursprünglich von Google ins Leben gerufen, dann aber auf eine unabhängige Plattform übertragen, die von der Linux Foundation betreut wird. Die Plattform wird als universelle Lösung für eine sich entwickelnde Gemeinschaft positioniert, die nicht an bestimmte Systeme gebunden ist und mit allen Anwendungen in allen Cloud-Umgebungen arbeiten kann. Der Kubernetes-Code ist in Go geschrieben und unter der Apache 2.0 Lizenz.
stellt Funktionen für das Deployment und die Verwaltung der Infrastruktur bereit, wie z.B. DNS-Management, Lastverteilung,
Verteilung der Container auf die Knoten des Clusters (Migration der Container je nach Laständerung und Dienstbedarf), Überprüfung der Anwendungsintegrität, Verwaltung von Konten, Aktualisierung und dynamisches Skalieren des laufenden Clusters, ohne es anzuhalten. Es ist möglich, Gruppen von Containern bereitzustellen, bei denen Aktualisierungs- und Rollback-Operationen sofort für die gesamte Gruppe durchgeführt werden, sowie logische Partitionierung des Clusters mit Ressourcenteilung. Eine Unterstützung für dynamische Anwendungs-Migration ist gegeben, für die sowohl lokale Speicher als auch Netzwerkspeichersysteme verwendet werden können.
Die Veröffentlichung von Kubernetes 1.18 umfasst 38 Änderungen und Verbesserungen, von denen 15 in den stabilen Status überführt wurden, 11 in den Beta-Status. 12 neue Änderungen wurden im Alpha-Status vorgeschlagen. Bei der Vorbereitung der neuen Version wurden gleichwertige Anstrengungen sowohl für die Verbesserung verschiedener Funktionalitäten und die Stabilisierung experimenteller Funktionen als auch für die Hinzufügung neuer Entwicklungen eingesetzt. Zu den wichtigsten Änderungen gehören:
- Kubectl
- Alpha-Version des Befehls „kubectl debug“, der die Fehlersuche in Pods erleichtert, indem er ephemeral Container mit Debugging-Tools startet.
- Befehl „kubectl diff“, der es ermöglicht zu sehen, was sich im Cluster ändern wird, wenn das Manifest angewendet wird.
- alle Generatoren des Befehls „kubectl run“, mit Ausnahme des Generators zum Starten eines einzelnen Pods.
- Das Flag «—dry-run», abhängig von seinem Wert (client, server und none), führt die Testausführung des Befehls entweder auf der Client- oder der Serverseite aus.
- Der kubectl-Code in ein separates Repository ausgelagert. Dadurch konnte kubectl von internen Abhängigkeiten von Kubernetes getrennt werden, was den Import des Codes in Drittprojekte erleichtert.
- Ingress
- Änderung der API-Gruppe für Ingress auf networking.v1beta1.
- Neue Felder:
- pathType, das angibt, wie der Pfad in der Anfrage verglichen wird.
- IngressClassName — Ersatz für die Annotation kubernetes.io/ingress.class, die als veraltet gilt. In diesem Feld wird der Name eines speziellen Objekts IngressClass angegeben.
- Das IngressClass-Objekt, in dem der Name des Ingress-Controllers, seine zusätzlichen Parameter und das Zeichen für seine Standardverwendung angegeben sind.
- Service
- Das Feld AppProtocol, in dem angegeben werden kann, welches Protokoll die Anwendung verwendet.
- in den Beta-Status überführt und standardmäßig aktiviert EndpointSlicesAPI, das eine funktionsreichere Alternative zu den normalen Endpoints darstellt.
- Netzwerk
- IPv6 wurde in den Beta-Status überführt.
- Persistent Disks. Folgende Funktionalität wurde als stabil erklärt:
- Konfiguration der Anwendung
- In die Objekte ConfigMap und Secret. ein neues Feld «immutable». Das Festlegen des Wertes dieses Feldes auf true verbietet die Änderung des Objekts.
- Scheduler
- die Möglichkeit, zusätzliche Profile für kube-scheduler zu erstellen. Wenn zuvor separate zusätzliche Scheduler zur Implementierung von Nicht-Standard-Algorithmen zur Pod-Zuweisung erforderlich waren, besteht nun die Möglichkeit, zusätzliche Einstellungssätze für den Standard-Scheduler zu erstellen und seinen Namen im selben Feld des Pods «.spec.schedulerName» anzugeben. Status — Alpha.
- wurde als stabil erklärt.
- Skalierung
- die Möglichkeit, im Manifest HPA den Grad der Aggressivität beim Ändern der Anzahl der gestarteten Pods anzugeben, das heißt, bei steigender Last sofort N-mal mehr Instanzen zu starten.
- Kubelet
- hat den Beta-Status erhalten. Die Funktion umfasst die NUMA-Zuweisung, die eine Leistungsverschlechterung in Multi-Socket-Systemen vermeidet.
- Beta-Status die Funktion PodOverhead, die es ermöglicht, in RuntimeClass die zusätzliche Menge an Ressourcen anzugeben, die erforderlich ist, um einen Pod zu starten.
- Unterstützung von HugePages, die Isolation auf Container-Ebene wurde in den Alpha-Status hinzugefügt, sowie die Unterstützung mehrerer Größen von HugePages.
- Endpoint für Metriken /metrics/resource/v1alpha1, stattdessen wird /metrics/resource verwendet
- API
- Die Möglichkeit, die veralteten API-Gruppen apps/v1beta1 und extensions/v1beta1 zu verwenden, wurde entfernt.
- Auf Beta2 erhöht. Diese Verbesserung verlagert die Objektmanipulation von kubectl zum API-Server. Die Autoren der Verbesserung behaupten, dass dies viele bestehende Fehler beheben wird, die in der aktuellen Situation nicht behoben werden können. Sie haben auch den Abschnitt „.metadata.managedFields“ hinzugefügt, in dem die Änderungshistorie des Objekts gespeichert werden soll, mit Angabe von wer, wann und was genau geändert hat.
- Stabiles CertificateSigningRequest API.
- Unterstützung für die Windows-Plattform.
- Die Unterstützung von Windows-Nodes wird weiterhin ausgebaut. Alpha-Versionen hinzugefügt:
- Die Unterstützung für die Gruppenverwalteten Dienstkonten wurde in den stabilen Status überführt
- Die Unterstützung von Windows-Nodes wird weiterhin ausgebaut. Alpha-Versionen hinzugefügt:
Quelle: opennet.ru
