Was ist Kubernetes?
Kubernetes ist eine Open-Source-Orchestrierungsplattform zur Verwaltung von containerisierten Anwendungen in verschiedenen Bereitstellungsumgebungen und Diensten, die die Automatisierung erleichtern. Sie organisiert Cloud-basierte Microservice-Anwendungen. Der Orchestrator ist ein System, das Anwendungen bereitstellt und verwaltet.
Was sind die Vorteile von Kubernetes?
- Skalierbarkeit: Auf Kubernetes bereitgestellte Anwendungen können auf der Grundlage der Last oder anderer benutzerdefinierter Metriken dynamisch nach oben und unten skaliert werden.
- Wiederherstellung bei kleineren Fehlern: Anwendungen können sich leicht wiederherstellen, wenn ein Problem auftritt, z. B. wenn ein Knoten ausfällt oder kein Speicher mehr vorhanden ist. Für solche Ereignisse gibt es einen Pod-Überwachungsmechanismus, der regelmäßig den Zustand jedes Pods überprüft und versucht, ihn neu zu starten , wenn er ein Problem feststellt.
- Hohe Verfügbarkeit: Der Bereitstellungsprozess kann so konfiguriert werden, dass Ausfallzeiten vermieden werden und die Anwendung im Wesentlichen immer für die Benutzer zugänglich ist.
Welches Problem wird durch Kubernetes gelöst?
Die Umstellung auf eine Microservices-Architektur führte zu einem verstärkten Einsatz von Containertechnologien, da Container den perfekten Host für kleine, unabhängige Anwendungen darstellen. Die Containerisierung ist ein guter Ansatz für die Gruppierung und den Start von Anwendungen.
So viele Anwendungen in Hunderten und Tausenden von Containern zu haben und eine Vielzahl von Containern in verschiedenen Umgebungen mit Hilfe von Skripten und selbst entwickelten Tools zu verwalten, kann extrem schwierig sein. In einer Produktionsumgebung müssen Sie Container verwalten, in denen Anwendungen ausgeführt werden. Genau deshalb sind Technologien zur Container-Orchestrierung erforderlich. Wenn zum Beispiel ein Container abstürzt, müssen Sie ihn neu starten. Kubernetes kommt zur Rettung, um den Prozess zu automatisieren, und bietet einen Rahmen für die Erstellung verteilter Systeme.
Wie funktioniert Kubernetes? Grundlegende Funktionen von Kubernetes
Die Funktionen des Orchestrators und des Containers bestehen aus einer Reihe von Primitiven und Abstraktionen. Primitive sind z. B. die in der objektorientierten Programmierung verwendeten Konzepte wie Objekte, Klassen, Vererbungen, Kapselungen, Pakete, Polymorphismen und so weiter. Kubernetes fügt neue Primitive und Abstraktionen in das Design von verteilten Systemen ein. Die Prinzipien und Konzepte liegen genau auf den Grundlagen der OOP. Kubernetes bietet jedoch die Möglichkeit, das Verhalten von Anwendungen durch die Definition einiger der folgenden Primitive zu steuern:
- Pod - Pods sind die kleinsten und wichtigsten Bereitstellungen in Kubernetes. Ein Pod ist eine Instanz eines laufenden Prozesses in einem Cluster. Sie enthalten auch gemeinsame Netzwerkressourcen und Ressourcen für die Speicherung ihrer Container:
- Netzwerk - Automatisch eindeutige IP-Adressen erhalten. Die Container in einem Pod können über localhost miteinander kommunizieren.
- Speicherplatz - Innerhalb eines Pods kann eine Reihe von Speichervolumina definiert werden, so dass bestimmte Pfade zwischen Containern gemeinsam genutzt werden können oder persistent gemacht werden können.
- Service - Service ist ein Primitivum für die Wartung von Load-Balancern und den Zugriff auf Pods. Es handelt sich um ein REST-Objekt, das dem Pod ähnelt. Jeder Dienst, den Sie erstellen, erhält automatisch ein Endpunktobjekt. Dabei handelt es sich um eine dynamische Liste aller gesunden Pods im Cluster, die dem Label-Selektor eines bestimmten Dienstes entsprechen.
- Deployment - Deployment ist ein Mechanismus für die deklarative Freigabe der Anwendung. Es wird verwendet, um zu definieren, wie Instanzen von Pods, die eine containerisierte Anwendung enthalten, erstellt oder geändert werden. Sie können die Anzahl der Pods skalieren, die Verteilung von aktualisiertem Code auf kontrollierte Weise ermöglichen oder bei Bedarf zu einer früheren Version zurückkehren.
- Configmap - Sie können eine Configmap verwenden, um Daten als Schlüsselpaar-Wörterbuch zu speichern. Sie kann als Umgebungsvariable für Pods oder auf andere, anspruchsvollere Weise verwendet werden.
Wie sieht die Kubernetes-Basisarchitektur aus?
Der Kubernetes-Cluster besteht aus mindestens einem Master-Knoten und mehreren mit ihm verbundenen Worker-Knoten. Auf jedem Knoten läuft ein Kubelet-Prozess. Kubelet ist im Wesentlichen ein Prozess, der es dem Cluster ermöglicht, zu kommunizieren und Aufgaben auf den Knoten auszuführen, wie z. B. die Ausführung von Anwendungsprozessen. Auf jedem Arbeitsknoten sind Container mit verschiedenen Anwendungen installiert.

Der Master-Knoten ist die erste und wichtigste Komponente, die für die Verwaltung des Kubernetes-Clusters verantwortlich ist. Er ist ein Einstiegspunkt für alle Arten von Verwaltungsaufgaben. Es ist gut, mindestens 3 Master-Knoten in einem hochverfügbaren Cluster zu haben. Der Master-Knoten verfügt über verschiedene Komponenten wie API-Server, Controller Manager, Scheduler und ETCD.
Die Architektur besteht auch aus Worker-Knoten. Sie sind eine weitere wesentliche Komponente, die alle notwendigen Dienste für das Netzwerkmanagement zwischen den Containern enthält, mit dem Master-Knoten kommuniziert und die Zuweisung von Ressourcen an die geplanten Container ermöglicht. Der Kubernetes-Scheduler verwaltet die Worker-Knoten. Der Scheduler ist ständig über die verfügbaren Ressourcen innerhalb des Clusters informiert und seine Aufgabe ist es, den am besten geeigneten Knoten für eine bestimmte Arbeitslast auf der Grundlage der definierten Ressourcenanforderungen auszuwählen.
Verwendung von YAML-Dateien zur Definition von Kubernetes
Nachfolgend können Sie eine yaml-Datei für die Bereitstellung einsehen, mit der festgelegt wird, wie Pods erstellt werden. In diesem Fall können Sie den Namen des Image-Tags des Containers, die Anzahl der Replikationen, die der entsprechende Pod haben soll (in unserem Fall 3) und den Port des Containers überprüfen.

Trotz des bereits implementierten Deployments ist die Webanwendung noch nicht für das Netzwerk verfügbar. Zu diesem Zweck ist es notwendig, den Kubernetes Service zu definieren und zu implementieren. Das Konzept des Dienstes ist es, den Zugriff auf bestehende Pods zu ermöglichen. Unten abgebildet ist dieser Kubernetes Service.

Hier ist ein weiterer Kubernetes-Dienst im Fall des Load Balancers der gleichen Anwendung:

Kubernetes einrichten
In unserem Blog-Beitrag erfahren Sie, wie Sie ganz einfach einen Multi-Master-Kubernetes-Cluster in einem hochverfügbaren Modus mit persistentem Speicher in Amazon Web Services einrichten können.

