Optimierung der Container-Verwaltung: Stateful Services in Kubernetes

Entdecken Sie jetzt effektive Strategien und praktische Tipps für die nahtlose Integration von StatefulSets in Ihre Kubernetes-Umgebung! Von der Grundlagenvermittlung bis zur praktischen Umsetzung mit Helm führen wir Sie durch die Schritte zur optimalen Verwaltung Ihrer containerisierten Workloads.

Kubernetes ist ein Open-Source-Tool zur Orchestrierung von Containern zur Verwaltung containerisierter Anwendungen. In den vorherigen Teilen dieser Serie haben Sie die Grundbausteine von Kubernetes gelernt und Container als Kubernetes ReplicaSets verpackt. Während ReplicaSets die Verfügbarkeit von zustandslosen Pods sicherstellen, können sie nicht mit zustandsbehafteten Workloads wie Datenbank-Clustern verwendet werden.

Es mag einfach sein, zeitgemäße Cloud-native Anwendungen in Kubernetes zu verpacken, bereitzustellen, zu verwalten und zu skalieren, aber die Bereitstellung und Verwaltung traditioneller Workloads wie Datenbanken und Content-Management-Systemen in einer containerisierten Umgebung erfordert einen anderen Ansatz. StatefulSets bringen die Flexibilität von Kubernetes ReplicaSets in zustandsbehaftete Workloads.

Im letzten Teil dieser Tutorialserie werden Sie einen hochverfügbaren MongoDB ReplicaSet in Kubernetes als StatefulSet mithilfe von Helm bereitstellen, einem beliebten Open-Source-Paketmanager für Kubernetes.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

  • Einen aktiven Kubernetes-Cluster, der auf centron läuft und über StackPointCloud installiert ist.
  • Die Beispiel-Webanwendung, die in einem vorherigen Tutorial eingeführt wurde und auf Node.js und MongoDB basiert und erweitert wurde, um hohe Verfügbarkeit für die Datenbank zu gewährleisten.
  • Ein aktives Docker Hub-Konto zum Speichern des Docker-Images für die Anwendung.
  • Eine lokale Maschine mit installiertem Git.

Schritt 1 – Installation des Helm-Clients auf der Entwicklungs-Maschine

Helm ermöglicht es Administratoren, komplexe Kubernetes-Anwendungen mit einem einzigen Befehl bereitzustellen. Anwendungen werden als Charts verpackt, die Kubernetes-Anwendungen definieren, installieren und aktualisieren. Charts bieten eine Abstraktion über Kubernetes-Objekte wie Pods, Bereitstellungen und Dienste.

Helm hat zwei Komponenten – den Server und den Client. Der Serverteil von Helm läuft in Kubernetes als Service namens Tiller. Der Client ist ein Befehlszeilentool, das mit Tiller interagiert.

Nachdem Sie einen MongoDB ReplicaSet Helm Chart bereitstellen möchten, benötigen Sie die CLI, die mit Tiller, der serverseitigen Komponente von Helm, spricht. StackPointCloud, das Sie zur Einrichtung von Kubernetes auf centron verwendet haben, wird mit Tiller vorinstalliert geliefert.

Schritt 2 – Bereitstellung des MongoDB ReplicaSets in Kubernetes

Eine StorageClass in Kubernetes bietet Administratoren eine Möglichkeit, die „Klassen“ von Speicher zu beschreiben, die sie anbieten. Zum Beispiel, wenn Benutzer ein Speichervolumen anfordern, bestimmt die StorageClass, welche Klasse von Speicherbackend für sie bereitgestellt wird. Die Klassen können standardmäßige HDD und eine schnellere SSD umfassen. Hinter den Kulissen interagiert die StorageClass mit der zugrunde liegenden Infrastruktur, wie z.B. der API eines Cloud-Anbieters, um Speicher bereitzustellen.

Da Sie persistenten Speicher benötigen, um MongoDB-Daten zu speichern, möchten Sie möglicherweise ein centron-Blockspeichervolumen an einen Arbeitsknoten anhängen und den MongoDB-Pod darauf verweisen, das Speichervolumen für die Persistenz zu verwenden.

In diesem Fall fungiert die StorageClass als Schnittstelle zwischen dem Pod und dem centron-Blockspeicherdienst. Wenn Sie ein Volumen des Blockspeichers anfordern, spricht die StorageClass mit dem vorab konfigurierten Treiber, der weiß, wie man ein Blockspeichervolumen zuweist.

StackPointCloud installiert den centron-Speichertreiber und registriert die StorageClass bei Kubernetes während der Einrichtung. Dies erspart uns die Schritte, die für die Installation und Konfiguration des Treibers und der StorageClass erforderlich sind.

Schritt 3 – Bereitstellung und Skalierung der Webanwendung in Kubernetes

Lassen Sie uns die ToDo-Node.js-Anwendung erweitern, die wir in früheren Teilen dieser Tutorialserie verwendet haben, um von dem MongoDB-Cluster zu profitieren.

Beginnen Sie mit der Erstellung eines neuen Arbeitsverzeichnisses und dem Klonen des Repositories der ToDo-Anwendung, das den Code und die Kubernetes-Artefakte enthält.

Wechseln Sie in das Verzeichnis der ToDo-App/Kubernetes, das die Kubernetes-Konfigurationsdateien enthält.

Öffnen Sie die Datei `web-rs-ss.yaml` in Ihrem Editor.

containers:
– name: web
image: janakiramm/todo
env:
– name: „DBHOST“
value: „mongodb://todo-mongodb-replicaset-0.todo-mongodb-replicaset,todo-mongodb-replicaset-1.todo-mongodb-replicaset,todo-mongodb-replicaset-2.todo-mongodb-replicaset:27017“
ports:
– containerPort: 3000

Dies übermittelt die Datenbankverbindungszeichenfolge als Umgebungsvariable zur Laufzeit an die Anwendung. Anstatt die Anwendung auf einen einfachen MongoDB-Pod zu verweisen, verwendet diese Version der Anwendung das von Ihnen erstellte StatefulSet. Jeder Eintrag im Wertebereich bezieht sich auf einen der Pods des MongoDB StatefulSets.

Verwenden Sie `kubectl`, um das Web-ReplicaSet zusammen mit dem Web-Service bereitzustellen:

kubectl create -f web-rs-ss.yaml -f web-service.yaml

Sie werden sehen, dass beide erstellt werden:

replicaset „web“ created
service „web“ created

Listen Sie die Pods erneut auf:

Sie sehen nun alle Pods, die zu MongoDB und zur Webanwendung gehören.

Lassen Sie uns die Kubernetes-Services überprüfen:

Die Web-Pods kommunizieren über den Service `todo-mongodb-replicaset` mit dem MongoDB-Cluster. Die Webanwendung ist über den Service `web` auf NodePort 31201 verfügbar.

Schritt 4 – Testen des MongoDB ReplicaSets auf hohe Verfügbarkeit

Einer der Vorteile der Verwendung eines StatefulSets ist die hohe Verfügbarkeit von Workloads. Testen wir dies, indem wir einen der Pods im MongoDB StatefulSet löschen.

kubectl delete pod todo-mongodb-replicaset-2

Löschen Sie einen Pod im MongoDB StatefulSet:

kubectl delete pod todo-mongodb-replicaset-2

Kontrollieren Sie die Anzahl der Pods:

Innerhalb weniger Minuten sehen Sie, dass Kubernetes einen anderen Pod initialisiert, um den gelöschten zu ersetzen.

Nun, da Sie wissen, dass alles funktioniert, können Sie aufräumen.

Fazit

In diesem Tutorial haben Sie ein langlebiges, persistentes, hochverfügbares MongoDB ReplicaSet als Kubernetes StatefulSet bereitgestellt. Sie haben auch gelernt, wie Sie auf das StatefulSet von anderen in demselben Kubernetes-Cluster bereitgestellten Anwendungen zugreifen können. Optimierung der Container-Verwaltung: Stateful Services in Kubernetes

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: