kubectl-Befehle: Kubernetes-Spickzettel

kubectl-Befehle für Kubernetes: Pods und Deployments anzeigen, Manifeste anwenden, skalieren, Rollouts zurücksetzen, Logs lesen und Fehler finden. Durchsuchbar und mit einem Klick kopierbar.

61 Einträge

Kontext und Cluster

kubectl config get-contextsAlle Kontexte (Cluster und Benutzer) anzeigen
kubectl config current-contextAktiven Kontext anzeigen
kubectl config use-context prodKontext wechseln
kubectl config set-context --current --namespace=webStandard-Namespace für den aktuellen Kontext setzen
kubectl cluster-infoAdressen von API-Server und Diensten
kubectl versionVersion von Client und Server
kubectl api-resourcesAlle Ressourcentypen mit Kurznamen (po, deploy, svc …)
kubectl explain deployment.spec.strategyDokumentation zu einem Feld direkt aus dem Cluster

Ressourcen anzeigen

kubectl get podsPods im aktuellen Namespace
kubectl get pods -APods in allen Namespaces
kubectl get pods -o wideMit Node und Pod-IP
kubectl get pods -l app=webNach Label filtern
kubectl get pods -wÄnderungen live verfolgen
kubectl get pods --field-selector=status.phase!=RunningPods, die nicht laufen
kubectl get all -n webGängige Ressourcen eines Namespace
kubectl get deploy,svc,ingressMehrere Typen auf einmal
kubectl get pod web-7d4f -o yamlVollständige Definition als YAML
kubectl get pods -o jsonpath='{.items[*].metadata.name}'Einzelne Felder per JSONPath ausgeben
kubectl describe pod web-7d4fDetails und Ereignisse, erste Anlaufstelle bei Problemen
kubectl get events --sort-by=.metadata.creationTimestampEreignisse nach Zeit sortiert
kubectl get nodesKnoten des Clusters
kubectl top podsCPU und Speicher je Pod (benötigt metrics-server)
kubectl top nodesCPU und Speicher je Knoten

Erstellen und ändern

kubectl apply -f deployment.yamlRessourcen aus Datei anlegen oder aktualisieren
kubectl apply -f ./manifeste/Alle Dateien eines Verzeichnisses anwenden
kubectl apply -k ./overlays/prodKustomize-Verzeichnis anwenden
kubectl diff -f deployment.yamlVorher zeigen, was sich ändern würde
kubectl delete -f deployment.yamlRessourcen aus Datei löschen
kubectl create namespace webNamespace anlegen
kubectl create deployment web --image=nginx --replicas=2Deployment ohne YAML anlegen
kubectl create deployment web --image=nginx --dry-run=client -o yamlYAML-Vorlage erzeugen, ohne etwas anzulegen
kubectl expose deployment web --port=80 --target-port=8080Service für ein Deployment anlegen
kubectl scale deployment web --replicas=3Anzahl der Pods ändern
kubectl set image deployment/web nginx=nginx:1.27Image eines Containers austauschen
kubectl edit deployment webRessource im Editor bearbeiten
kubectl label pod web-7d4f env=testLabel setzen (env- am Ende entfernt es)
kubectl delete pod web-7d4fPod löschen; ein Deployment startet ihn neu
kubectl create secret generic db --from-literal=passwort=geheimSecret aus Wert anlegen
kubectl create configmap app --from-file=config.yamlConfigMap aus Datei anlegen
kubectl get secret db -o jsonpath='{.data.passwort}' | base64 -dSecret-Wert auslesen (nur Base64-kodiert, nicht verschlüsselt)

Rollouts

kubectl rollout status deployment/webFortschritt eines Rollouts verfolgen
kubectl rollout history deployment/webFrühere Revisionen anzeigen
kubectl rollout undo deployment/webAuf die vorherige Revision zurück
kubectl rollout undo deployment/web --to-revision=2Auf eine bestimmte Revision zurück
kubectl rollout restart deployment/webAlle Pods schrittweise neu starten
kubectl rollout pause deployment/webRollout anhalten (resume setzt fort)

Logs und Fehlersuche

kubectl logs web-7d4fLogs eines Pods
kubectl logs -f web-7d4f -c sidecarLogs eines bestimmten Containers mitlesen
kubectl logs --previous web-7d4fLogs des vorherigen, abgestürzten Containers
kubectl logs -l app=web --tail=50Letzte 50 Zeilen aller Pods mit Label
kubectl logs deployment/web --since=1hLogs der letzten Stunde über das Deployment
kubectl exec -it web-7d4f -- shShell im Container öffnen
kubectl port-forward svc/web 8080:80Service lokal unter Port 8080 erreichbar machen
kubectl cp web-7d4f:/tmp/dump.txt ./dump.txtDatei aus dem Pod kopieren (benötigt tar im Container)
kubectl debug -it web-7d4f --image=busybox --target=webDebug-Container an einen laufenden Pod hängen
kubectl run tmp --rm -it --image=busybox --restart=Never -- shEinmaligen Test-Pod starten, wird danach gelöscht
kubectl auth can-i create podsPrüfen, ob die eigenen Rechte für eine Aktion reichen

Knoten warten

kubectl cordon node1Keine neuen Pods mehr auf den Knoten planen
kubectl drain node1 --ignore-daemonsets --delete-emptydir-dataPods vom Knoten verdrängen, etwa vor Wartung
kubectl uncordon node1Knoten wieder freigeben
kubectl taint nodes node1 dedicated=gpu:NoScheduleTaint setzen, damit nur passende Pods dort laufen

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Kubernetes Befehle für Alltag und Fehlersuche

Dieses kubectl Cheat Sheet enthält 61 Kubernetes Befehle, gruppiert nach Aufgaben: Kontexte und Namespaces wechseln, Ressourcen anzeigen, Deployments anlegen und skalieren, Rollouts steuern, Logs lesen und Fehler suchen. Namen wie web, web-7d4f oder node1 sind Platzhalter für Ihre Ressourcen.

Bei Problemen hilft fast immer dieselbe Reihenfolge: Mit kubectl get pods den Status ansehen, mit kubectl describe pod die Ereignisse lesen (etwa ImagePullBackOff oder fehlende Ressourcen), dann mit kubectl logs und bei Neustarts kubectl logs --previous die Ausgabe des Containers prüfen. Änderungen spielen Sie am besten deklarativ mit kubectl apply aus Dateien ein und prüfen sie vorher mit kubectl diff.

Beachten Sie, dass Secrets in Kubernetes standardmäßig nur Base64-kodiert und nicht verschlüsselt sind; zum Dekodieren einzelner Werte genügt der Base64-Dekodierer. Die Befehle gelten für aktuelle kubectl-Versionen; mit kubectl explain lesen Sie die Felder jeder Ressource direkt aus Ihrem Cluster nach.

Anleitung: kubectl-Befehle in 4 Schritten

  1. Im Feld „Suchen“ einen Begriff wie logs, rollout oder namespace eingeben.
  2. Über „Gruppe“ auf einen Bereich wie Rollouts oder Logs und Fehlersuche eingrenzen.
  3. Den passenden Befehl mit „Kopieren“ übernehmen.
  4. Platzhalter wie Pod-Name, Namespace oder Deployment vor dem Ausführen an die eigene Umgebung anpassen.

Typische Anwendungsfälle

  • Pod startet nicht: Mit kubectl describe und kubectl logs --previous die Ursache eines abgestürzten Containers finden.
  • Fehlerhaftes Deployment: Einen Rollout verfolgen und bei Problemen mit kubectl rollout undo zur vorherigen Revision zurückkehren.
  • Wartung eines Knotens: Einen Knoten mit cordon und drain leeren und danach mit uncordon wieder freigeben.
  • Zwischen Clustern wechseln: Kontext und Standard-Namespace setzen, bevor Befehle gegen die Produktion laufen.
Fragen

Häufige Fragen

Wie sehe ich, warum ein Pod nicht startet?

Mit kubectl describe pod name: Unten stehen die Ereignisse, etwa Fehler beim Laden des Images oder zu wenig Ressourcen. Startet der Container und stürzt ab, zeigt kubectl logs --previous name die Ausgabe vor dem Absturz.

Was ist der Unterschied zwischen kubectl apply und kubectl create?

kubectl create legt eine Ressource neu an und schlägt fehl, wenn sie schon existiert. kubectl apply legt an oder aktualisiert und eignet sich deshalb für Manifeste, die in Git verwaltet werden.

Wie wechsle ich den Namespace dauerhaft?

Mit kubectl config set-context --current --namespace=name. Alternativ geben Sie bei jedem Befehl -n name an, für alle Namespaces -A.

Wie rolle ich ein fehlerhaftes Deployment zurück?

kubectl rollout undo deployment/name kehrt zur vorherigen Revision zurück. Mit kubectl rollout history sehen Sie die Revisionen und können mit --to-revision eine bestimmte wählen.

Wie greife ich lokal auf einen Service im Cluster zu?

Mit kubectl port-forward svc/name 8080:80. Der Service ist dann unter localhost:8080 erreichbar, solange der Befehl läuft.

Wie starte ich einen Pod in Kubernetes neu?

Einen Pod selbst kann man nicht neu starten. Bei einem Deployment startet kubectl rollout restart deployment/web alle Pods schrittweise neu; alternativ löschen Sie einen einzelnen Pod mit kubectl delete pod, und das Deployment legt ihn neu an.

Wie zeige ich die Logs aller Container eines Pods an?

Mit kubectl logs web-7d4f --all-containers=true. Einen einzelnen Container wählen Sie mit -c aus, mit -f lesen Sie fortlaufend mit.

Weitere Werkzeuge

Das könnte auch helfen

Alle 358 Werkzeuge