Ein tiefer Einblick eines Lösungsarchitekten in die Systemarchitektur von Kubernetes und ihre Vorteile

by Raof Ahmed, Kubernetes Solution Architect, Rackspace Technology

Kubernetes Containers

Rackspace Technology gibt einen Überblick über Kubernetes, um sicherzustellen, dass Unternehmen die leistungsstarken Funktionen der Technologie vollständig verstehen.

 

Bis 2021 werden 96 % der Unternehmen, die an der Umfrage der Cloud Native Computing Foundation 2021 teilgenommen haben, die Container-Technologie einsetzen oder evaluieren. In seinem 2022 Container Report hat Datadog herausgefunden, dass fast die Hälfte aller Unternehmen, die Container verwenden,  Kubernetes®  (auch als K8s bezeichnet) einsetzen, um zumindest einige dieser Container bereitzustellen und zu verwalten.

Trotz der weiten Verbreitung von Containern und Kubernetes haben wir festgestellt, dass einige Unternehmen die Möglichkeiten von Kubernetes noch immer nicht vollständig verstehen. Infolgedessen holen sie nicht alles aus dieser leistungsstarken Technologie heraus. Zu den Funktionen, die Unternehmen möglicherweise nicht nutzen können, gehören Automatisierung, Selbstheilung, Schutz vor Datenverlust und die kosteneffiziente Leistung in Multicloud- und mandantenfähigen Cloud-Umgebungen.

In diesem Blogbeitrag möchte ich einen umfassenden Überblick über Kubernetes geben und einige Wissenslücken schließen, damit Ihr Unternehmen die Chancen dieser leistungsstarken Containertechnologie nutzen kann.

Warum Kubernetes?

Kubernetes ist eine Orchestrationsplattform mit Open-Source-Container für containerisierte Workloads und Service-Management. Es automatisiert den Lebenszyklus von containerisierten Anwendungen auf modernen Infrastrukturen und arbeitet im Wesentlichen wie ein Betriebssystem für Rechenzentren, indem es Anwendungen über ein verteiltes System verwaltet.

Kubernetes leistet hervorragende Arbeit bei der Automatisierung von Container-Umgebungen, wodurch Unternehmen Zeit sparen und ihre Produktivität steigern können. Darüber hinaus können Unternehmen Workloads ganz einfach in Containern zusammenfassen und auf Automatik umstellen.

Die meisten unserer Kunden bitten uns, Kubernetes in ihrer Umgebung bereitzustellen und ihre Ingenieure nach der Implementierung zu schulen. Dafür sorgt ein Rackspace Elastic Engineering Team, das seine flexiblen Dienste so lange anbietet, bis sich die Kunden selbst versorgen können. Einige Kunden hingegen möchten, dass Rackspace Technology Kubernetes vollständig für sie verwaltet, damit sie sich auf andere Aspekte ihres Geschäfts konzentrieren können. Diese Kunden interagieren mit uns über unseren Service Rackspace Managed Platform für Kubernetes.

Was sind einige der Hauptmerkmale von Kubernetes ?

Diese Containertechnologie bietet sechs wesentliche Funktionen:

  1. Container-Orchestrierung: Automatisiert die Implementierung, Skalierung und Lastenausgleich von containerisierten Anwendungen.
  2. Deklarative Konfiguration: Ermöglicht Ihnen die deklarative Definition des gewünschten Status Ihrer Anwendungen und Infrastruktur und erleichtert so deren Verwaltung und Wartung.
  3. Dienstsuche: Enthält einen Mechanismus, der es Anwendungen ermöglicht, einander zu finden und miteinander zu kommunizieren.
  4. Lastenausgleich: Verteilt den Datenverkehr auf mehrere Instanzen einer Anwendung und beinhaltet einen integrierten Lastenausgleich.
  5. Automatische Skalierung: Skaliert Anwendungen automatisch basierend auf Ressourcennutzung oder anderen Metriken.
  6. Rollende Updates: Aktualisiert Anwendungen ohne Ausfallzeiten.

Was ist das Modell der Kubernetes Master-Worker-Knoten-Systemarchitektur?

Die Kubernetes-Systemarchitektur basiert auf einem Master-Worker-Knotenmodell, wie in diesem Diagramm dargestellt.

Kubernetes Cluster
Kubernetes Cluster

1. Kubernetes Master-Knoten: Der Master-Knoten (auch als Kontrollebenen-Knoten bezeichnet) ist für die Verwaltung des Clusters und seiner Ressourcen verantwortlich. Diese Steuerungsebene dient als zentrales Nervensystem des Clusters. Es überwacht die Verwaltung des Cluster-Status, die Planung von Anwendungen und die Abwicklung der Knotenkommunikation. Der Master-Knoten speichert und verwaltet außerdem die Konfigurationsdaten des Clusters.

Zu den wichtigsten Elementen des Master-Knotens gehören:

  • API-Server: Dies ist die zentrale Komponente der Hauptnote, die die API von Kubernetes anderen Cluster-Komponenten zur Verfügung stellt. Der API-Server verarbeitet die gesamte Kommunikation zwischen Cluster-Komponenten.
  • Etcd: Dies ist ein verteilter Schlüsselwertspeicher, der zum Speichern von Cluster-Konfigurationsdaten verwendet wird. Es ist eine wesentliche Komponente des Master-Knotens von Kubernetes, da es den Status des Clusters speichert.
  • Planer: Der Planer überwacht die Zuweisung von Pods zu Cluster-Knoten basierend auf den Anforderungen an Ressourcenverfügbarkeit und Workload. Um sicherzustellen, dass der Cluster effizient läuft, trifft der Scheduler intelligente Entscheidungen darüber, wo Workloads platziert werden sollen.
  • Controller-Manager: Diese Funktion überwacht die Verwaltung der verschiedenen Controller, die den Cluster in seinem gewünschten Zustand halten. Der Controller-Manager enthält auch den Replikations-Controller, der dafür sorgt, dass immer die gewünschte Anzahl von Replikaten läuft.

Zu den Rollen und Verantwortlichkeiten des Master-Knotens gehören:

  • Cluster-Administration: Überwacht den Gesamtstatus des Kubernetes Cluster. Es stellt sicher, dass alle Knoten im Cluster betriebsbereit sind und dass die Konfigurationsdaten aktuell sind.
  • Ressourcenzuweisung: Überwacht die Verwaltung der Ressourcenzuweisung im gesamten Cluster und stellt sicher, dass die Workloads gleichmäßig auf die verfügbaren Knoten verteilt werden und der Cluster mit maximaler Effizienz läuft.
  • Skalierung: Überwacht die Skalierung des Clusters je nach Workload. Es kann nach Bedarf Knoten hinzufügen oder entfernen, um den Cluster mit maximaler Kapazität laufen zu lassen.
  • Hochverfügbarkeit: Bietet Hochverfügbarkeit, um Cluster auch dann am Laufen zu halten, wenn ein oder mehrere Knoten ausfallen, indem Replikations- und Failover-Mechanismen eingesetzt werden.

2. Kubernetes Worker-Knoten: Ein Worker-Knoten (auch als Minion-Knoten bezeichnet) ist eine Cluster-Komponente, die containerisierte Anwendungen ausführt. Es führt Aufgaben aus, die von der Kontrollebene delegiert werden, wie z. B. das Ausführen von Containern und das Verwalten von Storage.

Ein Worker-Knoten kann entweder eine physische oder eine virtuelle Maschine sein, auf der das Betriebssystem Linux® oder Windows® ausgeführt wird. Jeder Worker-Knoten verfügt über eine Reihe von Hardware-Ressourcen, die Containern zugewiesen werden können, z. B. CPU, Memory und Storage.

Der Worker-Knoten wird von einem Betriebssystem betrieben, das die zugrunde liegende Infrastruktur für den Betrieb von Containern bereitstellt. Es besteht aus mehreren Teilen, die zusammenarbeiten, um containerisierte Anwendungen auszuführen, darunter:

  • Kubelet: Ein Worker-Knoten-Agent, der mit der Steuerungsebene kommuniziert. Sie ist für die Verwaltung des Knotenstatus, das Starten und Stoppen von Containern und die Meldung des Knotenstatus an die Steuerungsebene zuständig.
  • Kube-Proxy: Ein Netzwerk-Proxy, der auf jedem Worker-Knoten ausgeführt wird. Es ist für die Verwaltung des Netzwerkdatenverkehrs zwischen Cluster-Containern und Services verantwortlich.
  • Container-Laufzeit: Die Software, die Container auf dem Worker-Knoten ausführt. Docker, Containerd und CRI-O gehören zu den Containerlaufzeiten, die von Kubernetes unterstützt werden.

Wenn Sie eine containerisierte Anwendung in einem Kubernetes Cluster bereitstellen, plant die Steuerungsebene, dass sie auf einem Worker-Knoten ausgeführt wird, der seine Ressourcen zum Ausführen des Containers verwendet.

Das Kubelett kommuniziert mit der Steuerungsebene, um Containerinformationen wie Bild- und Ressourcenanforderungen abzurufen. Anschließend ruft es das Container-Image aus einer Container-Registry ab und startet es auf dem Worker-Knoten.

Der Kube-Proxy verwaltet den Netzwerkdatenverkehr zwischen Cluster-Containern und Services. Es stellt sicher, dass jeder Container eine eigene IP-Adresse hat und mit anderen Containern und Diensten kommunizieren kann. Der Container wird von der Container-Laufzeit auf dem Worker-Knoten verwaltet. Sie schützt und isoliert die Umgebung des Containers und verwaltet Ressourcen wie CPU, Storageund Speicher.

Was ist ein Kubernetes-Pod?

Ein Kubernetes-Pod ist die kleinste implementierbare Einheit, die eine einzelne Instanz eines ausgeführten Prozesses in einem Cluster darstellt. Es ist ein logischer Host für einen oder mehrere Container, komplett mit freigegebenen Ressourcen und einem Netzwerk-Namespace. Sie umfasst einen oder mehrere Container, Speicherressourcen und Netzwerkkomponenten und stellt eine einzelne Instanz eines ausgeführten Prozesses in einem Cluster dar. Außerdem können Pods jederzeit von Kubernetes basierend auf der Konfiguration der Implementierung erstellt, skaliert oder gelöscht werden.

Pods sollen einen oder mehrere Container ausführen, die eng miteinander verbunden sind, beispielsweise einen Webserver und seine Datenbank. Container in einem Pod haben denselben Netzwerknamen und dieselbe IP-Adresse und können über die lokale Netzwerkschnittstelle kommunizieren. Pods teilen sich auch dasselbe Speichervolumen, das in der Regel zum Speichern gemeinsamer Anwendungsdaten oder Konfigurationsdateien zwischen Containern verwendet wird. Dies vereinfacht die Datenverwaltung und sorgt für Konsistenz in der gesamten Anwendung.

Einer der Hauptvorteile der Verwendung von Pods ist ihre Fähigkeit, je nach Bedarf nach oben oder unten skaliert zu werden. Wenn beispielsweise die Workload einer Anwendung steigt, kann Kubernetes zusätzliche Pods erstellen, um die zusätzliche Last zu bewältigen. Wenn die Workload sinkt, kann Kubernetes die Anzahl der ausgeführten Pods reduzieren, um die Ressourcennutzung zu optimieren.

Jeder Kubernetes-Pod hat seine eigene IP-Adresse sowie einen vollständig qualifizierten Domänennamen (FQDN), der zur Kommunikation mit anderen Pods und Services im Cluster verwendet werden kann. Dies erleichtert die Verwaltung und Verbindung mehrerer Pods innerhalb einer verteilten Anwendung.

Pods können auch mit verschiedenen Lifecycle-Hooks konfiguriert werden, die die Ausführung benutzerdefinierter Logik beim Starten, Herunterfahren oder Aktualisieren eines Pods ermöglichen. Dies kann für Aufgaben wie die Initialisierung von Daten, Datenbankmigrationen und Konfigurationsänderungen in einer Anwendung nützlich sein.

Was ist ein Kubernetes - Replikat?

Kubernetes bietet eine Vielzahl von Funktionen für die Verwaltung und den Betrieb containerisierter Anwendungen, einschließlich der Möglichkeit, Anwendungsreplikate zu erstellen und zu verwalten. Ein Replikat ist eine Kopie eines Pods, die erstellt wird, um Redundanz und Hochverfügbarkeit zu gewährleisten. Mit Kubernetes können Benutzer mehrere Replikate eines Pods erstellen und auf mehrere Knoten in einem Cluster verteilen. Dadurch wird sichergestellt, dass ein anderer Pod einspringen und den Datenverkehr ohne Unterbrechung weiterverarbeiten kann, wenn ein Pod ausfällt oder nicht mehr verfügbar ist.

Um die Replikate eines Podes zu verwalten, bietet Kubernetes zwei Arten von Controllern: Replikation und ReplicaSet. Replikations-Controller sind ein älterer Mechanismus für die Verwaltung von Kubernetes-Replikaten. ReplicaSet ist die neuere und bevorzugte Methode.

ReplicaSet ist leistungsfähiger und flexibler als die älteren Replikations-Controller. Es bietet einen robusteren Satz an Funktionen für die Replikatverwaltung. Benutzer können mit ReplicaSet die Anzahl der Replikate je nach Bedarf erhöhen oder verringern, Implementierungsstrategien für das Rollout von Updates erstellen und ausgefallene Replikate automatisch ersetzen.

Beim Erstellen eines ReplicaSet definieren Benutzer eine Vorlage, die den zu replizierenden Pod und die Anzahl der zu erstellenden Replikate beschreibt. Kubernetes stellt dann sicher, dass die gewünschte Anzahl von Replikaten immer ausgeführt wird, indem Replikate nach Bedarf hinzugefügt oder entfernt werden.

ReplicaSet kann auch mit dem Kubernetes-Service kombiniert werden, einer Abstraktionsebene, die einen logischen Satz von Pods definiert und eine einheitliche IP-Adresse und einen einheitlichen DNS-Namen für eine Gruppe von Replikaten bereitstellt. Benutzer können mithilfe einer konsistenten URL auf die Replikate eines Pods zugreifen, unabhängig davon, welches Replikat die Anfrage bedient.

Was bedeutet die Implementierung von Kubernetes?

Der Prozess der Implementierung von containerisierten Anwendungen auf Kubernetes-Clustern wird als Implementierung von Kubernetes bezeichnet. Eine Implementierung ist eine Abstraktionsschicht, die den gewünschten Zustand einer containerisierten Anwendung definiert und eine Möglichkeit bietet, diesen zu verwalten. Es übernimmt die Implementierung, Skalierung und fortlaufende Aktualisierung von Containern.

Eine Kubernetes-Implementierung erfolgt durch die Erstellung und Verwaltung von Replikatsätzen, wie in der folgenden Abbildung dargestellt. Sie kann mit einem Design für eine containerisierte Anwendung verglichen werden. Es gibt den gewünschten Status der Anwendung an, einschließlich der Anzahl der Replikate, des zu verwendenden Container-Images und aller Konfigurationseinstellungen. Durch die Erstellung und Verwaltung von Replikatsätzen stellt die Kubernetes-Implementierung sicher, dass der gewünschte Zustand der Anwendung beibehalten wird.

Kubernetes Deployment
Kubernetes Deployment

Die Kubernetes-Implementierung unterstützt auch rollende Updates, mit denen Sie das Container-Bild oder die Konfiguration einer Anwendung ohne Ausfallzeiten aktualisieren können. Bei einem fortlaufenden Update werden vorhandene Replikate nach und nach durch neue ersetzt, um den Replikatsatz auf kontrollierte Weise zu aktualisieren.

Die Nutzung von Kubernetes nimmt zu, da immer mehr Unternehmen die Vorteile erkennen, die sie daraus ziehen können. Dazu gehören Einsparungen bei der Container-Orchestrierung, die Implementierung von Workloads in mehreren Clouds, die Automatisierung der Implementierung und Skalierbarkeit und vieles mehr. Rackspace Technology ist der Partner der Wahl für viele führende Unternehmen, die von den Möglichkeiten dieser leistungsstarken Containertechnologie profitieren möchten.

Lassen Sie uns wissen, wie wir Ihr Unternehmen bei der Einführung und Optimierung von Kubernetes in Ihrem Unternehmen unterstützen können – und wie Sie das Know-how eines engagierten und flexiblen Rackspace Elastic Engineering-Teams nutzen können.

Tags:

Erfahren Sie mehr über die gesamte Palette an Services für Kubernetes, die wir bei Rackspace Technology anbieten.