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) anzeigenkubectl config current-contextAktiven Kontext anzeigenkubectl config use-context prodKontext wechselnkubectl config set-context --current --namespace=webStandard-Namespace für den aktuellen Kontext setzenkubectl cluster-infoAdressen von API-Server und Dienstenkubectl versionVersion von Client und Serverkubectl api-resourcesAlle Ressourcentypen mit Kurznamen (po, deploy, svc …)kubectl explain deployment.spec.strategyDokumentation zu einem Feld direkt aus dem ClusterRessourcen anzeigen
kubectl get podsPods im aktuellen Namespacekubectl get pods -APods in allen Namespaceskubectl get pods -o wideMit Node und Pod-IPkubectl get pods -l app=webNach Label filternkubectl get pods -wÄnderungen live verfolgenkubectl get pods --field-selector=status.phase!=RunningPods, die nicht laufenkubectl get all -n webGängige Ressourcen eines Namespacekubectl get deploy,svc,ingressMehrere Typen auf einmalkubectl get pod web-7d4f -o yamlVollständige Definition als YAMLkubectl get pods -o jsonpath='{.items[*].metadata.name}'Einzelne Felder per JSONPath ausgebenkubectl describe pod web-7d4fDetails und Ereignisse, erste Anlaufstelle bei Problemenkubectl get events --sort-by=.metadata.creationTimestampEreignisse nach Zeit sortiertkubectl get nodesKnoten des Clusterskubectl top podsCPU und Speicher je Pod (benötigt metrics-server)kubectl top nodesCPU und Speicher je KnotenErstellen und ändern
kubectl apply -f deployment.yamlRessourcen aus Datei anlegen oder aktualisierenkubectl apply -f ./manifeste/Alle Dateien eines Verzeichnisses anwendenkubectl apply -k ./overlays/prodKustomize-Verzeichnis anwendenkubectl diff -f deployment.yamlVorher zeigen, was sich ändern würdekubectl delete -f deployment.yamlRessourcen aus Datei löschenkubectl create namespace webNamespace anlegenkubectl create deployment web --image=nginx --replicas=2Deployment ohne YAML anlegenkubectl create deployment web --image=nginx --dry-run=client -o yamlYAML-Vorlage erzeugen, ohne etwas anzulegenkubectl expose deployment web --port=80 --target-port=8080Service für ein Deployment anlegenkubectl scale deployment web --replicas=3Anzahl der Pods ändernkubectl set image deployment/web nginx=nginx:1.27Image eines Containers austauschenkubectl edit deployment webRessource im Editor bearbeitenkubectl label pod web-7d4f env=testLabel setzen (env- am Ende entfernt es)kubectl delete pod web-7d4fPod löschen; ein Deployment startet ihn neukubectl create secret generic db --from-literal=passwort=geheimSecret aus Wert anlegenkubectl create configmap app --from-file=config.yamlConfigMap aus Datei anlegenkubectl 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 verfolgenkubectl rollout history deployment/webFrühere Revisionen anzeigenkubectl rollout undo deployment/webAuf die vorherige Revision zurückkubectl rollout undo deployment/web --to-revision=2Auf eine bestimmte Revision zurückkubectl rollout restart deployment/webAlle Pods schrittweise neu startenkubectl rollout pause deployment/webRollout anhalten (resume setzt fort)Logs und Fehlersuche
kubectl logs web-7d4fLogs eines Podskubectl logs -f web-7d4f -c sidecarLogs eines bestimmten Containers mitlesenkubectl logs --previous web-7d4fLogs des vorherigen, abgestürzten Containerskubectl logs -l app=web --tail=50Letzte 50 Zeilen aller Pods mit Labelkubectl logs deployment/web --since=1hLogs der letzten Stunde über das Deploymentkubectl exec -it web-7d4f -- shShell im Container öffnenkubectl port-forward svc/web 8080:80Service lokal unter Port 8080 erreichbar machenkubectl 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ängenkubectl run tmp --rm -it --image=busybox --restart=Never -- shEinmaligen Test-Pod starten, wird danach gelöschtkubectl auth can-i create podsPrüfen, ob die eigenen Rechte für eine Aktion reichenKnoten warten
kubectl cordon node1Keine neuen Pods mehr auf den Knoten planenkubectl drain node1 --ignore-daemonsets --delete-emptydir-dataPods vom Knoten verdrängen, etwa vor Wartungkubectl uncordon node1Knoten wieder freigebenkubectl taint nodes node1 dedicated=gpu:NoScheduleTaint setzen, damit nur passende Pods dort laufenKein Eintrag gefunden. Versuchen Sie einen anderen Begriff oder wählen Sie „Alle Gruppen“.
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
- Im Feld „Suchen“ einen Begriff wie logs, rollout oder namespace eingeben.
- Über „Gruppe“ auf einen Bereich wie Rollouts oder Logs und Fehlersuche eingrenzen.
- Den passenden Befehl mit „Kopieren“ übernehmen.
- 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.
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.
Das könnte auch helfen
HTTP-Statuscodes
Alle gängigen HTTP-Statuscodes von 100 bis 511 mit Bedeutung, typischer Ursache und Suche.
ÖffnenHTTP-Header-Referenz
Wichtige Anfrage- und Antwort-Header mit Bedeutung und Beispiel, durchsuchbar.
ÖffnenMIME-Typen
Über 150 MIME-Typen nachschlagen: Dateiendung zu Content-Type und umgekehrt.
ÖffnenGit-Befehle
Git-Spickzettel: die wichtigsten Befehle nach Aufgaben gruppiert, durchsuchbar und kopierbar.
ÖffnenBash-Befehle
Bash- und Linux-Befehle für Dateien, Text, Prozesse und Netzwerk, mit Suche und Kopieren.
ÖffnenPort-Liste
Bekannte TCP- und UDP-Ports von 20 bis 51820 mit Dienst und Hinweis, durchsuchbar.
Öffnen