Referenz · Spickzettel

kubectl — Spickzettel

Grammatik: kubectl <verb> <ressource> <name> [flags]. Read-only-Verben (grün, ungefährlich): get, describe, logs, explain, diff. Schreib-Verben (Vorsicht): apply, create, edit, scale, delete, rollout.

📍 Wo du den Namespace brauchst

Die meisten Objekte leben in einem Namespace: pods, deploy, svc, cm, secret, endpoints, rs, job … Befehle darauf brauchen -n <namespace> (ein bestimmter) oder -A (alle). Ohne Angabe gilt still default — fast nie gewollt.

Kein -n nötig bei cluster-weiten Objekten (nodes, namespaces, pv, clusterrole) und bei config / api-resources.

In den Beispielen unten ist -n der Übersicht halber weggelassen — denk es bei jedem Befehl auf ein namespaced Objekt mit.

Wo bin ich? (Sicherheit)

kubectl config current-context
Aktiver Kontext — IMMER zuerst.
kubectl config get-contexts
Alle Kontexte (* = aktiv).
kubectl config use-context NAME
Kontext wechseln.
kubectl config set-context --current --namespace=<namespace>
Standard-Namespace setzen (spart künftig das -n).

Schauen (read-only)

kubectl get pods
Pods auflisten (mit -A = alle Namespaces).
kubectl get pods -o wide
Mehr Spalten (Node, IP).
kubectl get all
Gängige Objekte auf einen Blick.
kubectl get pods --show-labels
Labels anzeigen.
kubectl get pods -w
Live mitverfolgen (watch).

Verstehen / Debuggen

kubectl describe pod NAME
Details + Events (Warum?).
kubectl logs NAME
Container-Ausgabe.
kubectl logs NAME -f
Live folgen.
kubectl logs NAME --previous
Logs des abgestürzten Vorgängers.
kubectl get events --sort-by=.lastTimestamp
Cluster-Events chronologisch.

Reingehen

kubectl exec -it NAME -- sh
Shell im Container.
kubectl exec NAME -- env
Einen Befehl ausführen.
kubectl port-forward POD 8080:80
Lokalen Port auf Pod legen.
kubectl cp NAME:/pfad ./lokal
Datei aus Pod kopieren.

Deployen (deklarativ)

kubectl apply -f datei.yaml
Soll-Zustand anwenden.
kubectl apply -f ./ordner/
Ganzen Ordner anwenden.
kubectl diff -f datei.yaml
Vorschau: was würde sich ändern?
kubectl apply -f f.yaml --dry-run=server
Validieren ohne zu schreiben.

YAML generieren (imperativ→Datei)

kubectl create deploy web --image=nginx --dry-run=client -o yaml
Manifest-Gerüst erzeugen.
kubectl run pod --image=nginx --dry-run=client -o yaml
Pod-Gerüst (CKA-Speed-Trick).
kubectl get deploy web -o yaml
Bestehendes Objekt als YAML.

Updaten & Rollback

kubectl rollout status deploy/web
Update beobachten.
kubectl rollout history deploy/web
Revisionen auflisten.
kubectl rollout undo deploy/web
Zurück zur Vorversion.
kubectl scale deploy/web --replicas=3
Hoch-/runterskalieren.

Felder nachschlagen

kubectl explain pod
Top-Level-Felder.
kubectl explain pod.spec.containers
Tiefer bohren.
kubectl explain deploy --recursive
Ganze Feld-Struktur.
kubectl api-resources
Alle Objekttypen + Kurznamen.

Aufräumen (Vorsicht!)

kubectl delete -f datei.yaml
Sicher: löscht genau was im Manifest steht.
kubectl delete pod NAME
Einzelnen Pod löschen.
kubectl delete pod -l app=web
Per Label löschen — Selector zuerst mit get prüfen!

Tempo-Tricks (CKA/CKAD)

TrickWirkung
alias k=kubectlSpart bei jedem Befehl Tipparbeit.
source <(kubectl completion bash)Tab-Vervollständigung für Ressourcen/Namen.
po, deploy, svc, ns, cmKurznamen (kubectl api-resources zeigt alle).
export do="--dry-run=client -o yaml"Dann k create deploy web --image=nginx $do > web.yaml.
-n <namespace> / -ANamespace gezielt / alle. Häufigster Fehler: falscher Namespace.