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

Grundlagen von Kubernetes

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Ubuntu-VM-Lab11 Min. Lesezeit10 Befehle

Am Laufen halten

Der Webshop eines Ladens muss den ganzen Tag erreichbar sein. Wenn der Rechner, auf dem er läuft, nachts um drei ausfällt, muss ihn jemand woanders neu starten. Kubernetes übernimmt diese Arbeit: Du sagst, was laufen soll, und es hält es am Laufen und startet eine neue Kopie, sobald eine verschwindet.

Am Ende dieser Lektion

Notiz

Ich kann sagen, was ein Deployment tut und was passiert, wenn einer seiner Pods gelöscht wird.

Schlüsselwörter

  • Cluster: die Maschinen, auf denen Kubernetes deine Programme ausführt.
  • Node (Knoten): eine Maschine des Clusters.
  • Pod: eine laufende Kopie eines Programms, aus einem oder mehreren Containern.
  • Deployment: dein Wunsch nach einer Anzahl gleicher Pods, den Kubernetes wahr hält.
  • Namespace: ein benannter Ordner, der die Dinge einer Gruppe von denen einer anderen trennt.
  • kubectl: der Befehl, der mit dem Cluster spricht.

Zum Start: Was du schon weißt

Notiz

Antworte im Kopf. 1. Was ist ein Container? 2. Was geht schief, wenn ein Programm nur auf einem Rechner läuft und dieser Rechner ausfällt? 3. Was bedeutet es, ein Programm zu skalieren? Alle drei Antworten brauchst du gleich.

Bevor du anfängst

Notiz

Klicke oben in der Leiste dieser Lektion auf Lab starten. Dieses Lab ist eine ganze Ubuntu-Maschine nur für dich, mit einem kleinen Kubernetes-Cluster, k3s, darin, und braucht deshalb beim ersten Mal einige Minuten zum Starten. Jede Schaltfläche Ausführen tippt ihren Befehl ins Terminal der Maschine, einen nach dem anderen in derselben Sitzung. Wenn eine meldet, dass der Cluster nicht bereit ist, warte eine Minute und drücke sie noch einmal. Um zuzusehen oder eigene Befehle zu tippen, klicke in der Leiste auf Terminal öffnen. Kubernetes braucht 2 GB Arbeitsspeicher: Das ist die Maschine eines Einrichtungskontos, die eines kostenlosen Kontos hat 1 GB.

Ein Cluster, den man lesen kann

Dieser Cluster ist eine einzige Maschine, hat also einen Node. kubectl get nodes listet ihn auf: Sein STATUS ist Ready, seine Rolle control-plane, und die letzte Spalte ist die k3s-Version. kubectl get pods -A listet die Pods aller Namespaces auf. Die in kube-system hat Kubernetes selbst gestartet: coredns gibt dem Cluster Namen, und local-path-provisioner gibt Pods einen Ort für Dateien.

Befehl
kubectl get nodes

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

Befehl
kubectl get pods -A

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 hält Pods am Laufen

Zuerst ein eigener Namespace, demo, damit hier nichts dem Lab in den Weg kommt. Dann ein Deployment namens hello: drei Kopien eines kleinen Programms, busybox mit sleep. Diese Maschine erreicht keine Image-Registry, deshalb nutzt jeder Pod in diesem Lab das eine Image, das sie hat, busybox. kubectl get pods -n demo listet drei Pods auf, deren Namen mit hello- beginnen und mit zufälligen Buchstaben enden. Nach ein paar Sekunden sind sie Running, bis dahin Pending oder ContainerCreating.

Befehl
kubectl create namespace demo

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

Befehl
kubectl create deployment hello --image=busybox:1.37.0 --replicas=3 -n demo -- 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.

Befehl
kubectl get pods -n demo

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, das Löschen eines Pods beende das Programm. Das stimmt nicht. Das Deployment will weiterhin drei Pods und macht einen neuen. Um das Programm zu beenden, löscht man das Deployment oder skaliert es herunter.

Lösche die Pods, und sie kommen zurück

Lösche jetzt alle drei Pods auf einmal. --grace-period=1 stoppt sie nur schnell. Der Befehl gibt drei Zeilen aus, eine für jeden gelöschten Pod. Liste die Pods dann noch einmal auf: Es sind drei, mit neuen Namen und einem AGE von ein paar Sekunden. Niemand hat Kubernetes gesagt, sie zu starten. Das Deployment hat bemerkt, dass es keinen mehr hatte, und drei gemacht.

Befehl
kubectl delete pods -n demo -l app=hello --grace-period=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.

Befehl
kubectl get pods -n demo

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

Prüfe dich

Tipp

Warum sind es noch drei Pods, nachdem du alle drei gelöscht hast? Antwort: Das Deployment ist ein Wunsch nach drei Pods, und Kubernetes macht diesen Wunsch immer wieder wahr.

Skaliere es und räume auf

Skalieren heißt, die Zahl im Wunsch zu ändern. kubectl scale verlangt fünf. Das Deployment zeigt READY als 3/5, während die zwei neuen Pods starten, dann 5/5. Der letzte Befehl löscht den Namespace, und alles darin verschwindet mit ihm, bereit für das Lab.

Befehl
kubectl scale deployment hello -n demo --replicas=5

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

Befehl
kubectl get deployment hello -n demo

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

Befehl
kubectl delete namespace demo

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

Jetzt das Lab machen

Tipp

Du hast gesehen, wie ein Deployment drei Pods hält. Dein Lab verlangt mehr: drei Webserver hinter dem einen Namen eines Service, ein ConfigMap, aus dem die Seiten gemacht werden, und drei kaputte Deployments, die du reparierst, indem du liest, was Kubernetes sagt. Öffne die Datei README.md in deinem Home-Ordner mit cat README.md im Terminal.

Abschlusscheck

Tipp

Antworte, ohne zurückzuschauen. 1. Was tut ein Deployment? 2. Was passiert, wenn du einen Pod eines Deployments mit drei Pods löschst? 3. Was ändert kubectl scale? 4. Wofür ist ein Namespace da? Antworten: Es hält eine Anzahl gleicher Pods am Laufen; es macht einen neuen, sodass es wieder drei gibt; die Anzahl der Pods, die das Deployment will; die Dinge einer Gruppe von denen einer anderen zu trennen.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab gehalten wird: Die Schritte und die Ausführen-Schaltflächen sind die Lektion, und das Lab ist die Kopie jeder lernenden Person. Sie wird in einem VM-Lab gehalten: Jede lernende Person hat eine eigene Ubuntu-Maschine mit einem Kubernetes-Cluster aus einem Node (k3s), und eine Ausführen-Schaltfläche tippt in deren Terminal und zeigt die Ausgabe. Kernpunkte: 1. Ein Deployment ist ein Wunsch nach einer Anzahl Pods. 2. Kubernetes hält den Wunsch wahr, ein gelöschter Pod kommt also zurück. 3. Skalieren ändert die Zahl. Häufiger Fehler: glauben, das Löschen eines Pods beende das Programm. Material: das Lab und ein Browser sowie ein Einrichtungskonto, weil der Cluster 2 GB braucht. Tipp: Fragen Sie die Klasse vor dem Löschen der Pods, was passieren wird und warum. Das Lab selbst hat eine Prüfung, die den Cluster bewertet. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektions-Editor eine neue von Grund auf.

Ü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 Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.