Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Kubernetes Deployment und Replicas

Nach dieser Lektion: Ich kann drei Kopien eines Pods am Laufen halten.

Lektion, 55 Min.10 BefehleKubernetes-Lab: ein k3s-Cluster mit einem Knoten für jede lernende Person auf einer privaten Ubuntu-VM

Wie hält Kubernetes drei Kopien am Laufen?

Ein Deployment ist in Kubernetes der Auftrag, eine feste Zahl gleicher Pods am Laufen zu halten. Fällt ein Pod aus, startet Kubernetes von selbst einen neuen.

Der Onlineshop eines Fahrradhändlers in Leipzig nimmt Bestellungen an. Läuft das Programm nur einmal, sind alle Bestellungen weg, sobald es abstürzt. Mit drei Kopien bedient der Shop weiter, auch wenn eine ausfällt.

Am Ende dieser Lektion

Notiz

Ich kann drei Kopien eines Pods am Laufen halten.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Deploymentder Auftrag, eine Zahl gleicher Pods am Laufen zu halten
Replicaeine der gleichen Kopien eines Podsreplicas: 3
ReplicaSetdie Liste, mit der ein Deployment seine Pods zählt
Soll-Zustanddas, was Sie sich wünschen
Skalierendie gewünschte Zahl der Kopien ändern
Labelein Schild mit Name und Wert an einem Podapp=bestellungen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Deployment ist ein Wunsch an Kubernetes

Sie sagen nicht, wie Pods gestartet werden. Sie sagen, wie viele Sie wollen. Das ist der Soll-Zustand.

Kubernetes vergleicht den Soll-Zustand ständig mit dem, was läuft. Fehlt ein Pod, startet es einen. Sind es zu viele, beendet es einen. Die Befehle unten legen den Namespace kurs2 an und darin das Deployment bestellungen mit drei Replicas.

Den Namespace kurs2 anlegen

Befehl
kubectl create namespace kurs2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Deployment mit drei Replicas anlegen

Befehl
kubectl create deployment bestellungen --image=busybox:1.37.0 --replicas=3 -n kurs2 -- sleep 3600

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Deployment anzeigen

Befehl
kubectl get deployment bestellungen -n kurs2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

So lesen Sie die Tabelle eines Deployments

SpalteDas steht darin
READY3/3 heißt: Drei Pods laufen, drei sind gewünscht
UP-TO-DATEWie viele Pods nach der neuesten Vorlage gebaut sind
AVAILABLEWie viele Pods Anfragen annehmen
AGEWie lange das Deployment schon besteht

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Das ReplicaSet zählt die Pods

Ein Deployment zählt nicht selbst. Es legt ein ReplicaSet an, und dieses hält die Zahl der Pods richtig. Das ReplicaSet erkennt seine Pods an einem Label, hier app=bestellungen.

Der Befehl unten zeigt es. DESIRED ist der Wunsch, CURRENT die Zahl der vorhandenen Pods, READY die Zahl der bereiten. Der Name enthält eine Kennung, die bei jedem Lauf anders ist.

Das ReplicaSet anzeigen

Befehl
kubectl get replicasets -n kurs2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein gelöschter Pod wird ersetzt

Löschen Sie einen Pod, fehlt dem Soll-Zustand einer. Das ReplicaSet merkt es sofort und startet einen neuen Pod mit neuem Namen.

Der erste Befehl löscht den ersten Pod der Liste. --grace-period=1 beendet ihn schnell, sonst wartet Kubernetes bis zu dreißig Sekunden. Danach laufen wieder drei Pods, einer davon ist nur wenige Sekunden alt.

Genau einen Pod löschen

Befehl
kubectl delete -n kurs2 --grace-period=1 $(kubectl get pods -n kurs2 -o name | head -n 1)

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Pods nach dem Löschen anzeigen

Befehl
kubectl get pods -n kurs2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Skalieren ändert nur die gewünschte Zahl

Skalieren heißt, die Zahl der Replicas zu ändern. Der Befehl kubectl scale setzt eine neue Zahl. Das Deployment startet oder beendet dann genau so viele Pods, dass die Zahl stimmt.

Wir gehen hier auf zwei herunter. Ein Pod bleibt etwa eine halbe Minute im Status Terminating, weil sleep das Beenden nicht annimmt. Gezählt werden deshalb nur die Pods mit Status Running.

Auf zwei Replicas herunterskalieren

Befehl
kubectl scale deployment bestellungen -n kurs2 --replicas=2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die gewünschte Zahl abfragen

Befehl
kubectl get deployment bestellungen -n kurs2 -o jsonpath='{.spec.replicas}'

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die laufenden Pods zählen

Befehl
kubectl get pods -n kurs2 --no-headers | grep -c Running

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein Deployment starte seine Pods einmal und lasse sie dann in Ruhe. Es vergleicht aber ständig Wunsch und Wirklichkeit. Deshalb ersetzt es einen gelöschten Pod, solange das Deployment besteht. Nur wer das Deployment löscht oder auf null skaliert, beendet das Programm.

Das Deployment mit seinen Pods löschen

Befehl
kubectl delete deployment bestellungen -n kurs2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Über dieses Lab und seinen Quellcode: Kubernetes-Lab: ein k3s-Cluster mit einem Knoten für jede lernende Person auf einer privaten Ubuntu-VM

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.