Leitfaden: Microservices in Kubernetes bereitstellen und skalieren
Tauchen Sie ein in die Welt der Microservices mit Kubernetes! Dieses Tutorial führt Sie durch die Schritte zur Bereitstellung, Skalierung und Verwaltung von Microservices-Anwendungen. Entdecken Sie praxisnahe Anleitungen und bewährte Methoden, um Ihre Anwendungen effizient in Kubernetes-Clustern zu betreiben und zu skalieren. Perfekt für Entwickler, die ihre Container-Orchestrierungsfähigkeiten auf das nächste Level bringen möchten!
Kubernetes ist ein Open-Source-Orchestrierungstool für die Verwaltung containerisierter Anwendungen. In unserem vorherigen Tutorial dieser Serie, „Ein genauerer Blick auf Kubernetes“, haben Sie die Grundlagen von Kubernetes kennengelernt. In diesem Tutorial wenden Sie die Konzepte aus den vorherigen Tutorials an, um eine End-to-End-Microservices-Anwendung in Kubernetes zu erstellen, bereitzustellen und zu verwalten. Die Beispielanwendung, die Sie in diesem Tutorial verwenden werden, ist eine „To-Do-Liste“-Anwendung, die in Node.js geschrieben ist und MongoDB als Datenbank verwendet. Dies ist dieselbe Anwendung, die wir im Tutorial „Containerisierte Anwendungen erstellen“ verwendet haben.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie:
- Einen Kubernetes-Cluster, den Sie im dritten Teil dieser Tutorialserie, „Einstieg in Kubernetes“, konfigurieren können.
- Ein aktives Docker-Hub-Konto, um das Image zu speichern.
- Git auf Ihrem lokalen Rechner installiert. Sie können dem Tutorial „Zur Open-Source beitragen: Erste Schritte mit Git“ folgen, um Git auf Ihrem Computer zu installieren und einzurichten.
Schritt 1 – Erstellen eines Images mit Dockerfile
Wir beginnen damit, die Webanwendung zu containerisieren, indem wir sie in ein Docker-Image verpacken. Wechseln Sie zunächst in Ihr Home-Verzeichnis und verwenden Sie Git, um die Beispielanwendung dieses Tutorials aus ihrem offiziellen Repository auf GitHub zu klonen.
cd ~
git clone https://github.com/janakiramm/todo-app.git
Erstellen Sie das Container-Image aus der Dockerfile. Verwenden Sie den -t-Schalter, um das Image mit dem Registrierungsnutzernamen, dem Bildnamen und einem optionalen Tag zu versehen.
docker build -t sammy/todo .
Die Ausgabe bestätigt, dass das Bild erfolgreich erstellt und entsprechend markiert wurde. Überprüfen Sie, ob das Bild erstellt wurde, indem Sie den Befehl `docker images` ausführen.
docker images
Schritt 2 – MongoDB Pod in Kubernetes bereitstellen
Die Anwendung verwendet MongoDB, um die über die Webanwendung erstellten To-Do-Listen zu speichern. Um MongoDB in Kubernetes auszuführen, müssen wir es als Pod verpacken. Erstellen Sie eine neue YAML-Datei namens db-pod.yaml:
#nano db-pod.yaml
Fügen Sie den folgenden Code hinzu, der einen Pod mit einem Container basierend auf MongoDB definiert. Wir setzen den Port 27017, den Standardport von MongoDB, frei.
apiVersion: v1
kind: Pod
metadata:
name: db
labels:
name: mongo
app: todoapp
spec:
containers:
– image: mongo
name: mongo
ports:
– name: mongo
containerPort: 27017
volumeMounts:
– name: mongo-storage
mountPath: /data/db
volumes:
– name: mongo-storage
hostPath:
path: /data/db
Führen Sie den folgenden Befehl aus, um einen Pod zu erstellen.
kubectl create -f db-pod.yaml
Überprüfen Sie die Erstellung des Pods.
kubectl get pods
Schritt 3 – Die Node.js-Webanwendung als Pod bereitstellen
Verpacken Sie das Docker-Image, das Sie im ersten Schritt dieses Tutorials erstellt haben, als Pod und bereitstellen Sie es im Cluster. Dies wird als die Front-End-Webanwendungsschicht fungieren, die für Endbenutzer zugänglich ist.
Erstellen Sie eine neue YAML-Datei namens web-pod.yaml:
nano web-pod.yaml
Fügen Sie den folgenden Code hinzu, der einen Pod mit einem Container basierend auf dem Docker-Image `sammy/todo-app` definiert. Er wird über den TCP-Port 3000 freigegeben.
apiVersion: v1
kind: Pod
metadata:
name: web
labels:
name: web
app: todoapp
spec:
containers:
– image: sammy/todo-app
name: myweb
ports:
– containerPort: 3000
Führen Sie den folgenden Befehl aus, um den Pod zu erstellen:
kubectl create -f web-pod.yaml
Überprüfen Sie die Erstellung des Pods:
kubectl get pods
Schritt 4 – Skalieren der Webanwendung
Ein Replica Set stellt sicher, dass eine Mindestanzahl von Pods im Cluster jederzeit ausgeführt wird. Wenn ein Pod als Replica Set verpackt ist, wird Kubernetes immer die minimale Anzahl von Pods ausführen, die in der Spezifikation definiert ist.
Lassen Sie uns den aktuellen Pod löschen und zwei Pods durch das Replica Set neu erstellen.
kubectl delete pod web
Erstellen Sie dann eine neue Replica Set-Deklaration.
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: web
labels:
name: web
app: todoapp
spec:
replicas: 2
template:
metadata:
labels:
name: web
spec:
containers:
– name: web
image: sammy/todo-app
ports:
– containerPort: 3000
Erstellen Sie das Replica Set:
kubectl create -f web-rs.yaml
Überprüfen Sie die Anzahl der Pods:
kubectl get pods
Fazit
In diesem Tutorial haben Sie alle Konzepte der Serie angewendet, um eine Microservices-Anwendung zu verpacken, bereitzustellen und zu skalieren. Im nächsten Teil dieser Serie erfahren Sie, wie Sie MongoDB hochverfügbar machen, indem Sie es als StatefulSet ausführen.