Lektion 01 · Kubernetes-Grundlagen

Der sichere Blick

Einen Cluster lesen und verstehen — ohne irgendetwas anzufassen.

Du hast einen echten Cluster (admin@homelab-kube) und willst beruflich, für die Zertifizierung und dein Homelab fit werden. Erste Regel für all das: Bevor du etwas änderst, musst du sehen können, was da ist. Diese Lektion gibt dir genau das — und alle Befehle hier sind read-only: Du kannst damit nichts kaputtmachen.

1. Das Mental-Modell: Soll vs. Ist

Kubernetes funktioniert nicht wie ein Server, dem du Befehle gibst ("starte das, stoppe jenes"). Du beschreibst stattdessen einen Soll-Zustand ("ich will 3 Kopien dieser App"), und der Cluster vergleicht ihn unermüdlich mit dem Ist-Zustand und gleicht ihn an. Das nennt man Reconciliation.

Kubernetes ist ein Tempomat 🚗
Du sagst „100 km/h“ (Soll). Bergauf, bergab — das Auto reguliert das Gas selbst, bis der Ist-Wert wieder stimmt. Du gibst kein Gas, du gibst ein Ziel.

Deshalb ist die wichtigste Frage beim Debuggen nie „was tut das Programm?“, sondern: „Wo weicht der Ist-Zustand vom Soll-Zustand ab — und warum?“

2. Die Grammatik von kubectl

Fast jeder kubectl-Befehl ist ein einfacher Satz:

kubectl <VERB>  <RESSOURCE>  <NAME>  [flags]
kubectl    get      pods        web-1      -o wide
„Verb — Ding — Name“
Wie ein Befehlssatz auf Deutsch: zeig mir (Verb) die Pods (Ding) namens web-1 (Name).
Achtung: Namespace-Falle

Lässt du den Namen weg, bekommst du nicht „alle“ Pods, sondern nur die im aktuellen Namespace (standardmäßig default). Ist der leer, siehst du No resources found in default namespace. — der Namespace existiert, er ist nur leer. Erst -A (alle Namespaces) zeigt dir wirklich alles im Cluster:

kubectl get pods        # nur Namespace "default" (evtl. leer)
kubectl get pods -A     # ALLE Namespaces

3. Die vier sicheren Lese-Verben

Diese vier ändern nichts am Cluster. Mit ihnen darfst du frei herumstöbern. Sie bauen aufeinander auf — von der Vogelperspektive bis tief ins Innere:

VerbSichtBeantwortet
getVogelperspektiveWas existiert? Welcher Status?
describeLupe + EventsWarum hängt/crasht es? (Events!)
logsIns Innere hörenWas sagt die App selbst?
explainWörterbuchWelche Felder hat dieses Objekt?

Beim Debuggen kletterst du diese Leiter von außen nach innen hoch: getdescribelogs — Liste, dann Events (Lupe), dann die App-Ausgabe (Innere). explain ist dein Wörterbuch fürs spätere YAML-Schreiben.

Warum das sicher ist

get, describe, logs und explain lesen nur. Gefährlich werden erst Verben wie delete, apply, edit oder scale — die kommen in späteren Lektionen, mit Sicherheitsnetz (--dry-run).

4. Die wichtigste Sicherheitsfrage: „Wo bin ich gerade?“

Der häufigste Profi-Unfall: einen Befehl auf dem falschen Cluster absetzen (Produktion statt Test). Mach es dir zur Gewohnheit, vor jeder Aktion deinen Kontext zu prüfen:

# Auf welchem Cluster/Kontext bin ich gerade?
kubectl config current-context

# Alle verfügbaren Kontexte (der mit * ist aktiv)
kubectl config get-contexts
Gewohnheit

Kontext prüfen ist beim Cluster wie der Schulterblick beim Spurwechsel — kostet eine Sekunde, verhindert, dass du einen Befehl versehentlich auf der Produktion absetzt.

5. Hands-on an deinem Homelab-Cluster

Tipp diese Befehle der Reihe nach. Alle sind read-only — nichts kann passieren.

# 1) Wo bin ich? (immer zuerst)
kubectl config current-context

# 2) Vogelperspektive: die Maschinen des Clusters
kubectl get nodes

# 3) Alle Pods, über ALLE Namespaces (-A)
kubectl get pods -A

# 4) Lupe auf einen Node — scrolle runter zu "Events"
kubectl describe node <node-name-aus-schritt-2>

# 5) Wörterbuch: welche Felder hat ein Pod?
kubectl explain pod

# 6) Mehr Spalten zu den System-Pods
kubectl get pods -n kube-system -o wide
Die drei Flags für 90 % des Alltags

-A = Alle Namespaces · -n <name> = ein bestimmter Namespace · -o wide = mehr Spalten (output).

Selbsttest

Aus dem Gedächtnis — nicht hochscrollen. Aktives Abrufen ist das, was hängenbleibt.

1. Du sagst dem Cluster „ich will 3 Replicas“. Wie heißt dieses Konzept?
2. Ein Pod startet nicht. Welcher Befehl zeigt die Events dazu?
3. Welche Gewohnheit schützt vor dem Befehl-am-falschen-Cluster-Unfall?
Stuck oder neugierig? Ich bin dein Lehrer — frag mich alles. Z. B.: „Was ist der Unterschied zwischen einem Pod und einem Container?“, „Was bedeuten die Spalten bei get pods?“ oder „Zeig mir das an einem echten kaputten Pod.“