Wo läuft ein Programm in Kubernetes?
Kubernetes ist eine Software, die Programme auf einem oder mehreren Rechnern startet und am Laufen hält. Jede Ausgabe seines Befehls kubectl besteht aus drei Begriffen: Knoten, Namespace und Pod.
Stellen Sie sich das Rechenzentrum einer Stadtbibliothek vor. Der Ausleihkatalog, die Webseite und der Newsletter laufen dort nebeneinander. Kubernetes ordnet jedem Programm einen Rechner und einen Bereich zu.
Am Ende dieser Lektion
Notiz
Ich kann sagen, was ein Knoten, ein Namespace und ein Pod sind.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Cluster | alle Rechner zusammen, auf denen Kubernetes Programme startet | |
| Knoten | ein einzelner Rechner des Clusters | node |
| Namespace | ein benannter Bereich, der die Dinge einer Gruppe von denen einer anderen trennt | kube-system |
| Pod | eine laufende Kopie eines Programms | |
| Container | ein Programm, verpackt mit allem, was es zum Laufen braucht | |
| kubectl | der Befehl, mit dem Sie dem Cluster etwas sagen oder ihn fragen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Knoten ist ein Rechner des Clusters
Ein Cluster besteht aus einem oder mehreren Rechnern. Jeder Rechner heißt Knoten, auf Englisch node.
Ihr Lab ist ein Cluster mit genau einem Knoten. Ein großes Unternehmen hat Hunderte. Der Befehl kubectl get nodes listet sie auf, eine Zeile je Knoten.
Die Knoten des Clusters auflisten
kubectl get nodesHier 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 der Knoten
| Spalte | Das steht darin |
|---|---|
| NAME | Der Name des Rechners |
| STATUS | Ready heißt: Der Knoten nimmt Arbeit an |
| ROLES | control-plane heißt: Dieser Knoten steuert den Cluster |
| AGE | Wie lange der Knoten schon zum Cluster gehört |
| VERSION | Die Version von Kubernetes auf dem Knoten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Namespace trennt die Dinge einer Gruppe
Auf einem Cluster arbeiten oft mehrere Teams. Ein Namespace gibt jedem Team einen eigenen Bereich mit eigenen Namen. Zwei Teams dürfen dann beide ein Programm „kasse“ nennen.
Kubernetes legt vier Namespaces selbst an. kube-system gehört Kubernetes, die anderen sind default, kube-public und kube-node-lease. Ohne weitere Angabe fragt kubectl immer im Namespace default.
Alle Namespaces auflisten
kubectl get namespacesHier 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 im Namespace default auflisten
kubectl get podsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Pod ist eine laufende Kopie eines Programms
Kubernetes startet kein Programm direkt, sondern einen Pod. Ein Pod enthält einen oder mehrere Container und läuft immer auf genau einem Knoten.
Die Befehle unten legen einen eigenen Namespace kurs1 an und starten darin einen Pod kasse. Er benutzt busybox, ein winziges Werkzeugpaket. Das Lab hat kein anderes Image, denn es erreicht keine Registry.
Den Namespace kurs1 anlegen
kubectl create namespace kurs1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Einen Pod namens kasse starten
kubectl run kasse --image=busybox:1.37.0 -n kurs1 -- sleep 3600Hier 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 im Namespace kurs1 auflisten
kubectl get pods -n kurs1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Namespace des Pods abfragen
kubectl get pod kasse -n kurs1 -o jsonpath='{.metadata.namespace}'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 Image des Pods abfragen
kubectl get pod kasse -n kurs1 -o jsonpath='{.spec.containers[0].image}'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, kubectl get pods zeige alle Pods des Clusters. Der Befehl zeigt nur die Pods eines einzigen Namespaces, ohne Angabe also des Namespaces default. Fragen Sie mit -n name nach einem anderen Bereich oder mit -A nach allen. Der Befehl kubectl get pods -A listet auch die Pods von kube-system.
Den Namespace kurs1 wieder löschen
kubectl delete namespace kurs1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Weiterführend
Die Pods von kube-system laufen auch auf Ihrem Knoten. Finden Sie mit kubectl get pods -n kube-system heraus, wie viele es sind. Schreiben Sie auf, was die Namen vermuten lassen.
Fragen Sie dann mit kubectl get pods -A, ob irgendein Name zweimal vorkommt. Zwei Pods mit gleichem Namen in verschiedenen Namespaces sind erlaubt.