Kubernetes

Was ist Kubernetes?

Was ist Kubernetes?

Was ist Kubernetes? Und was ist seine Architektur??

Die Containerisierung hat die Verbindung zwischen Softwareentwicklern und der Produktionsumgebung durchtrennt. Nicht in dem Sinne, dass Sie überhaupt kein Produktionssystem benötigen, aber Sie müssen sich nicht um die Besonderheiten der Produktionsumgebung kümmern.

Die Apps sind jetzt mit den benötigten Abhängigkeiten gebündelt, in einem leichtgewichtigen Container anstelle einer VM. Das ist großartig! Es bietet jedoch keine Immunität gegen Systemfehler, Netzwerkfehler oder Festplattenfehler disk. Wenn beispielsweise das Rechenzentrum, in dem Ihre Server laufen, gewartet wird, wird Ihre Anwendung offline gehen.

Kubernetes kommt ins Spiel, um diese Probleme zu lösen. Es nimmt die Idee von Containern auf und erweitert sie auf die Arbeit über mehrere Rechenknoten (die in der Cloud gehostete virtuelle Maschinen oder Bare-Metal-Server sein können). Die Idee ist, ein verteiltes System zu haben, auf dem containerisierte Anwendungen ausgeführt werden können.

Warum Kubernetes?

Warum brauchen Sie überhaupt eine verteilte Umgebung??

Aus mehreren Gründen steht an erster Stelle die hohe Verfügbarkeit. Sie möchten, dass Ihre E-Commerce-Website rund um die Uhr online bleibt, oder Sie verlieren Geschäfte, verwenden Sie dafür Kuberneteses. Zweitens ist die Skalierbarkeit, bei der Sie "herausskalieren" möchten. Die Skalierung hier beinhaltet das Hinzufügen weiterer Rechenknoten, um Ihrer wachsenden Anwendung mehr Beinfreiheit für den Betrieb zu geben.

Design und Architektur

Wie jedes verteilte System hat ein Kubernetes-Cluster einen Master-Knoten und dann eine ganze Reihe von Worker-Knoten, auf denen Ihre Anwendungen tatsächlich ausgeführt werden würden. Der Master ist verantwortlich für die Planung von Aufgaben, die Verwaltung von Workloads und das sichere Hinzufügen neuer Knoten zum Cluster.

Jetzt kann natürlich der Masterknoten selbst ausfallen und den gesamten Cluster mitnehmen, sodass Sie mit Kubernetes tatsächlich mehrere Masterknoten aus Redundanzgründen haben können.

Eine typische Kubernetes-Bereitstellung aus der Vogelperspektive

Kubernetes-Master

Mit dem Kubernetes-Master interagiert und verwendet das DevOps-Team für die Bereitstellung neuer Knoten, die Bereitstellung neuer Apps sowie die Ressourcenüberwachung und -verwaltung. Die grundlegendste Aufgabe des Master-Knotens besteht darin, Zeitplan die Workload effizient zwischen allen Worker-Knoten zu verteilen, um die Ressourcenauslastung zu maximieren, die Leistung zu verbessern und verschiedene Richtlinien zu befolgen, die vom DevOps-Team für ihre spezielle Workload ausgewählt wurden.

Ein weiterer wichtiger Bestandteil ist die etcd Dies ist ein Daemon, der die Worker-Knoten verfolgt und eine Datenbank hält, die den Status des gesamten Clusters speichert. Es handelt sich um einen Schlüsselwert-Datenspeicher, der auch in einer verteilten Umgebung über mehrere Masterknoten ausgeführt werden kann. Der Inhalt von etcd liefert alle relevanten Daten über den gesamten Cluster. Ein Worker-Knoten würde sich von Zeit zu Zeit den Inhalt von etcd ansehen, um zu bestimmen, wie er sich verhalten soll.

Regler ist die Entität, die Anweisungen vom API-Server entgegennimmt (auf die wir später eingehen werden) und die erforderlichen Aktionen wie das Erstellen, Löschen und Aktualisieren von Anwendungen und Paketen durchführt.

Das API-Server stellt die Kubernetes-API bereit, die JSON-Payloads über HTTPS verwendet, um mit der Benutzeroberfläche zu kommunizieren, mit der die Entwicklerteams oder DevOps-Mitarbeiter schließlich interagieren würden. Sowohl die Web-UI als auch die CLI verwenden diese API, um mit dem Kubernetes-Cluster zu interagieren.

Der API-Server ist auch für die Kommunikation zwischen den Worker-Nodes und verschiedenen Master-Node-Komponenten wie etcd . verantwortlich.

Der Master-Knoten wird dem Endbenutzer niemals ausgesetzt, da er die Sicherheit des gesamten Clusters gefährden würde.

Kubernetes-Knoten

Eine Maschine (physisch oder virtuell) benötigt einige wichtige Komponenten, die nach der Installation und Einrichtung diesen Server dann zu einem Mitglied Ihres Kubernetes-Clusters machen können.

Das erste, was Sie brauchen, ist eine Container-Laufzeit wie Docker, die darauf installiert ist und ausgeführt wird. Es wird natürlich für das Hochfahren und Verwalten von Containern verantwortlich sein.

Neben der Docker-Laufzeit benötigen wir auch die Kubelet Dämon. Es kommuniziert mit den Master-Knoten über den API-Server und fragt den etcd ab und gibt Zustands- und Nutzungsinformationen über die Pods zurück, die auf diesem Knoten ausgeführt werden.

Container sind jedoch an sich ziemlich begrenzt, daher hat Kubernetes eine höhere Abstraktion, die auf einer Sammlung von Containern basiert, bekannt als Pods.

Warum mit Pods aufwarten??

Docker hat eine Richtlinie zum Ausführen einer Anwendung pro Container. Oft beschrieben als die „ein Prozess pro Container“ Politik. Das bedeutet, wenn Sie eine WordPress-Site benötigen, sollten Sie zwei Container haben, einen für die Datenbank und einen für den Webserver. Das Bündeln solcher zusammengehöriger Komponenten einer Anwendung in einem Pod stellt sicher, dass die beiden voneinander abhängigen Container beim Scale-Out immer auf demselben Knoten koexistieren und so schnell und einfach miteinander kommunizieren können.

Pods sind die grundlegende Bereitstellungseinheit in Kubernetes. Wenn Sie horizontal hochskalieren, fügen Sie dem Cluster weitere Pods hinzu. Jeder Pod erhält eine eigene eindeutige IP-Adresse innerhalb des internen Netzwerks des Clusters.

Zurück zum Kubernetes-Knoten

Jetzt kann ein Knoten mehrere Pods ausführen und es kann viele solcher Knoten geben. Das ist alles in Ordnung, bis Sie darüber nachdenken, mit der Außenwelt zu kommunizieren. Wenn Sie einen einfachen webbasierten Dienst haben, wie würden Sie Ihren Domainnamen auf diese Sammlung von Pods mit vielen IP-Adressen verweisen??

Du kannst und musst nicht! Kube-Proxy ist das letzte Puzzleteil, das es Betreibern ermöglicht, bestimmte Pods dem Internet zugänglich zu machen. Zum Beispiel kann Ihr Frontend öffentlich zugänglich gemacht werden und der Kube-Proxy würde den Datenverkehr auf alle verschiedenen Pods verteilen, die für das Hosten des Frontends verantwortlich sind. Ihre Datenbank muss jedoch nicht öffentlich gemacht werden und kube-proxy würde nur die interne Kommunikation für solche Back-End-bezogenen Workloads zulassen.

Brauchst du das alles?

Wenn Sie gerade erst als Bastler oder Student beginnen, wäre die Verwendung von Kubernetes für eine einfache Anwendung eigentlich ineffizient. Das gesamte Gemenge würde mehr Ressourcen verbrauchen als Ihre eigentliche Bewerbung und würde für eine einzelne Person mehr Verwirrung stiften.

Wenn Sie jedoch mit einem großen Team zusammenarbeiten und Ihre Apps für den ernsthaften kommerziellen Einsatz bereitstellen, ist Kubernetes den zusätzlichen Aufwand wert. Sie können verhindern, dass die Dinge chaotisch werden. Schaffen Sie Platz für Wartung ohne Ausfallzeiten. Richten Sie raffinierte A/B-Testbedingungen ein und skalieren Sie schrittweise, ohne im Voraus zu viel für die Infrastruktur auszugeben.

AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...
Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...
So ändern Sie die linke und rechte Maustaste auf einem Windows 10-PC
Es ist ganz normal, dass alle Computer-Maus-Geräte ergonomisch für Rechtshänder gestaltet sind. Es gibt aber auch Mausgeräte, die speziell für Linkshä...