Was ist Kubernetes (auch K8s genannt)?
Kubernetes ist wie ein Postamt, das eine containerisierte Umgebung verwaltet und dafür sorgt, dass Pakete korrekt zugestellt werden. Unabhängig von der Entfernung, ob lokal oder in Übersee, solange wir die Adresse des Empfängers kennen, kümmert sich die Post um den Rest. Die Dauer der Zustellung hängt jedoch von der Größe des Pakets und der Entfernung ab. Das Hauptziel ist immer, sicherzustellen, dass das Paket dort ankommt, wo es zugestellt werden soll.
Stellen Sie sich vor, Kubernetes sei ein Postamt, aber nur für Container. Wir können alles, was wir mit unseren Containern tun müssen, deklarieren, aber wir kümmern uns nicht darum, wie es gemacht wird. Die containerisierten Umgebungen in Kubernetes sind wie Boxen und werden Pods genannt. Jeder Pod kann 1 oder mehrere Container enthalten. Der Pod enthält auch Informationen darüber, für wen er bestimmt ist, wo er läuft und wie lange man warten muss, um dorthin zu gelangen. Und natürlich hat jeder Pod seinen eigenen eindeutigen Namen und seine eigene IP-Adresse. Zum Schluss werden wir die Anwendung in die Box packen und beschreiben, wie und wo diese Box ausgeliefert wird.
Spaßfakt: Das Wort Kubernetes ist griechisch und bedeutet Kapitän oder Pilot.
Warum K8s
Die Vorteile
Skalierbarkeit
Eine weitere großartige Funktion, die Kubernetes zu bieten hat, ist die automatische Skalierung, die es Unternehmen ermöglicht, die Skalierung je nach tatsächlichem Bedarf zu erhöhen oder zu verringern. Mit der automatischen Skalierung kann Kubernetes Ihnen dabei helfen, die Anzahl der Pods zu erhöhen, wenn der Datenverkehr zunimmt, und die Anzahl der Pods zu verringern, wenn die Verkehrslast gering ist. Außerdem lassen sich dadurch Kosten einsparen, da wir nicht für Ressourcen zahlen, die wir nicht nutzen.
Beispiel
Beispiel Wenn plötzlich 100.000 Benutzer auf https://app.sca3.wpenginepowered.com zugreifen, muss unser Server skaliert werden, um diese Menge an Last zu bewältigen. K8s erzeugt automatisch mehr Pods (z. B. 10-15 neue Pods), um die Last der 100.000 Benutzer zu verteilen. Wenn die Benutzerzahl wieder auf 1.000 oder 100 sinkt, schaltet K8s die „zusätzlichen“ Pods automatisch ab, um Kosten zu sparen (da sie nicht mehr benötigt werden).
Hohe Verfügbarkeit
Sollte ein Knoten ausfallen oder ein Container nicht reagieren, hilft Kubernetes dabei, die Container zu ersetzen oder die Container, die nicht auf den konfigurierten Gesundheitscheck reagieren, zu löschen. Normalerweise konfigurieren wir mindestens 2 Nodes für unsere Kundeninstanz, um die Verfügbarkeit zu gewährleisten. Aufgrund dieser Konfiguration sind wir in der Lage, unsere Produktionsbereitstellung mit einer geringen bis gar keiner Ausfallzeit für die Instanz unseres Kunden durchzuführen, da nur ein Knoten nach dem anderen heruntergefahren wird, während der andere noch verfügbar ist.
Beispiel
Beispiel Ein gutes Beispiel, um dies zu erklären, ist das Release (z. B. M47 Produktionsrelease). Angenommen, die SCA-Instanz hat 2 Pods (Pod A und Pod B). Pod A und Pod B haben jetzt beide den M46-Code.
Während der Freigabe wird k8s automatisch einen dritten Pod (Pod C) mit M47-Code erstellen. Wenn Pod C fertig ist, wird k8s Pod A und Pod B langsam abschalten, um Ausfallzeiten zu vermeiden. Langsam wird alles auf die M47-Codebasis umgestellt.
Wiederherstellung im Katastrophenfall
Kubernetes verwendet einen konsistenten und hochverfügbaren Schlüsselwertspeicher namens etcd, der als Sicherungsspeicher für alle Clusterdaten dient. Bei einem Ausfall des Clusters können wir die im etcd gespeicherten Snapshots verwenden, um den Cluster und seine Komponenten in ihrem aktuellen Zustand wiederherzustellen.
Beispiel
Stellen Sie sich etcd wie eine externe Festplatte vor, die Sie besitzen, oder wie einen Online-Speicher wie Apple Cloud oder Google Drive. Sie können als Backup für unsere wertvollen Fotos dienen, die Sie im letzten Sommer im Urlaub gemacht haben. Wenn Sie Ihre Fotos versehentlich von Ihrem Handy gelöscht haben, können Sie sie jederzeit von Ihrer externen Festplatte oder aus dem Cloud-Speicher zurückholen. Ziemlich cool. Bei Kubernetes gibt es einen eingebauten Speicher, der von Zeit zu Zeit den aktuellen Status speichert, und wenn etwas Schlimmes passiert, können wir diesen Status, den wir gesichert haben, verwenden, um unsere Cluster wiederherzustellen.
Wie sieht das in Connect aus?
Hier ist ein Beispiel dafür, wie eine Anfrage in unserem k8s-Cluster endet
Wenn Sie (der Benutzer) in Google Chrome auf https://app.sca3.wpenginepowered.com klicken, sendet die Frontend-Webseite eine Anfrage (API) an unseren GKE-Cluster, um die neuesten Nachrichten für den aktuellen Benutzer (Benutzer A im Diagramm) zu erhalten.
Die Anfrage landet zunächst auf unserem Ingress-Webserver (Reverse Proxy), der die Lastverteilung vornimmt und die Anfrage einem der aktiven Pods in unserem Cluster zuweist.
In dem oben gezeigten Beispiel sind derzeit nur Pod 2 und Pod 3 frei und Pod 3 wird ausgewählt, um die Anfrage zu bedienen. Alle Mechanismen laufen automatisch in unserem Kubernetes-Cluster ab.
Der Pod führt unsere Backend-Implementierung aus, ruft die benötigten Informationen aus der Datenbank ab, packt alles schön zusammen und liefert die Daten zurück an unser schönes Frontend.
Jede Connect-Instanz in unserem Kubernetes-Produktionscluster verfügt über mindestens zwei Pods, die Anfragen bedienen. Wenn einer von ihnen ausfällt oder zu lange braucht, um zu reagieren, erzeugt der Cluster automatisch neue Pods und ersetzt die ausgefallenen Pods.
Damit soll eine 100%ige Betriebszeit für alle Instanzen gewährleistet werden.