PerfectScalePerfectScale

PerfectScale

Kubectl Cheat Sheet: Cluster, Pods, Deployments & mehr im Griff

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Tania Duggal
By Tania Duggal
Oct 13, 202625 min read

Hallo und willkommen! Wir haben die am häufigsten verwendeten Kubernetes-Befehle für Sie in einem sofort einsetzbaren kubectl Cheat Sheet zusammengestellt. Das Cheat Sheet führt Sie Schritt für Schritt durch die Verwaltung Ihres Kubernetes-Clusters mit dem kubectl-Kommandozeilen-Tool.

Hier zunächst eine kurze Übersicht der wichtigsten Befehle. Das vollständige Cheat Sheet finden Sie weiter unten.

Cluster-Context und Konfiguration:

  • Contexts auflisten: kubectl config get-contexts
  • Aktiven Context wechseln: kubectl config use-context <context-name>
  • Cluster-Details anzeigen: kubectl cluster-info
  • Version prüfen: kubectl version

Deployments und Anwendungsverwaltung:

  • Aus einem Manifest deployen: kubectl apply -f <filename.yaml>
  • Ressourcen aus einem Manifest löschen: kubectl delete -f <filename.yaml>
  • Deployment skalieren: kubectl scale deployment <deployment-name> --replicas=<N>
  • Rollout-Status eines Deployments prüfen: kubectl rollout status deployment/<deployment-name>
  • Rollback eines Deployments: kubectl rollout undo deployment/<deployment-name>

Prüfen und Debuggen:

  • Alle Ressourcen in allen Namespaces anzeigen: kubectl get all -A
  • Pod-Status und -Details anzeigen: kubectl describe pod <pod-name>
  • Pod-Logs live verfolgen: kubectl logs -f <pod-name>
  • Befehle in einem Container ausführen: kubectl exec -it <pod-name> -- <command>
  • Shell in einem Pod öffnen: kubectl exec -it <pod-name> -- /bin/bash
  • Lokalen Port an einen Pod weiterleiten: kubectl port-forward <pod-name> <local-port>:<container-port>

Produktivitäts-Tipps und Flags:

  • Alias anlegen: alias k=kubectl
  • Autocompletion einrichten: source <(kubectl completion bash)
  • Ressourcen nach Namespace filtern: Nutzen Sie das Flag -n <namespace>
  • Änderungen testen, ohne sie anzuwenden: kubectl apply -f <filename.yaml> --dry-run=client
  • Ressourcen als YAML anzeigen: kubectl get pod <pod-name> -o yaml

Was ist kubectl?

Kubectl ist das CLI-Tool für Kubernetes, mit dem Sie mit Ihren Clustern interagieren und Ressourcen bequem erstellen, verwalten, bearbeiten und löschen können. Es kommuniziert mit dem Kubernetes-API-Server, sodass Sie Ihre Anwendungen überwachen und steuern können.

Wie funktioniert kubectl?

Schaubild zur Funktionsweise von kubectl: Ein kubectl-Befehl wird aus der kubeconfig-Datei gelesen, in einen REST-API-Aufruf umgewandelt, authentifiziert und per HTTPS an den API-Server in der Control Plane gesendet, der ihn verarbeitet und eine JSON-Antwort zurückgibt, die kubectl formatiert und anzeigt

Kubectl sendet Befehle an den Kubernetes-API-Server, der die angeforderten Operationen anschließend im Cluster ausführt. Wenn Sie einen kubectl-Befehl ausführen – etwa um eine Anwendung zu deployen oder den Status von Ressourcen abzufragen –, kommuniziert kubectl über HTTP mit dem API-Server und übermittelt Ihre Anweisungen. Der API-Server verarbeitet diese Anfragen, aktualisiert den Cluster-Zustand in etcd (einem verteilten Key-Value-Store) und weist andere Komponenten wie den Scheduler oder den Controller Manager an, die nötigen Aktionen auszuführen, um den gewünschten Zustand zu erreichen. So können Sie Ihre Kubernetes-Ressourcen effizient über die Kommandozeile verwalten und überwachen.

Hinweis: In früheren Kubernetes-Versionen nutzte kubectl sogenannte Generatoren, um Ressourcenkonfigurationen auf Basis bestimmter Eingaben zu erstellen. Mit dem Flag --generator konnten Nutzer angeben, welcher Ressourcentyp erstellt werden sollte, etwa ein Pod, ein Deployment oder ein Job. So erzeugte beispielsweise kubectl run nginx --image=nginx --generator=run-pod/v1 eine Pod-Ressource. Dieser Ansatz ermöglichte es, die Ressourcenerstellung mit vorhersehbaren Ergebnissen zu skripten und zu automatisieren. Wichtig zu wissen: Das Flag --generator wurde in Kubernetes v1.12 als veraltet markiert und in v1.18 entfernt. Seit v1.18 erstellt kubectl run nur noch Pods, und Generatoren wurden durch explizitere, deklarative Befehle wie kubectl create und kubectl apply ersetzt.

Legen wir los:

kubectl einrichten: Version, Cluster-Infos und Autocompletion

Der erste Schritt nach der Installation von kubectl besteht darin, zu prüfen, ob das Tool korrekt installiert ist und mit Ihrem Cluster kommunizieren kann. Der folgende Befehl zeigt die Client-Version an – und, falls ein Cluster konfiguriert ist, auch die Server-Version:

Terminal window
kubectl version

Um zu bestätigen, dass kubectl mit dem richtigen Cluster verbunden ist, verwenden Sie:

Terminal window
kubectl cluster-info

Dieser Befehl zeigt die Adressen der Kubernetes Control Plane und der Kern-Services an. Gibt der Befehl einen Fehler zurück, prüfen Sie, ob Ihre kubeconfig-Datei korrekt konfiguriert und der Ziel-Cluster erreichbar ist.

Die aktuelle Konfiguration und die verfügbaren Contexts prüfen Sie mit:

Terminal window
kubectl config get-contexts
kubectl config current-context

Wenn Sie mit mehreren Clustern arbeiten, ist der Wechsel ganz einfach:

Terminal window
kubectl config use-context <context-name>

Ersetzen Sie <context-name> durch den gewünschten Context – damit gilt der neue aktive Cluster für alle folgenden kubectl-Befehle.

Für mehr Produktivität aktivieren Sie die Shell-Autocompletion. Damit vervollständigt Ihre Shell Befehle, Ressourcennamen, Namespaces und andere Argumente automatisch, sobald Sie die Tab-Taste drücken. Für Bash führen Sie aus:

Terminal window
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Für Zsh verwenden Sie:

Terminal window
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

Ein praktischer Kniff: Legen Sie einen Alias für kubectl an und aktivieren Sie die Autocompletion auch dafür:

Terminal window
alias k=kubectl
complete -o default -F __start_kubectl k

Wenn Sie Zsh verwenden, ersetzen Sie die letzte Zeile durch:

Terminal window
compdef __start_kubectl k

Mit geprüfter Version, bestätigter Cluster-Verbindung, Context-Management und eingerichteter Autocompletion ist Ihre Umgebung bereit für die tägliche Kubernetes-Administration.

Das ultimative Kubectl Cheat Sheet

Aufbau eines kubectl-Befehls: kubectl get pods -n prod -o wide, aufgeschlüsselt in Programm, Aktion, Ressource, Namespace-Flag und Output-Flag

Optionale Flags

Kubectl bietet optionale Flags, die die Befehlsausgabe und das Ressourcenmanagement erweitern. Zum Beispiel:

Ausgabeformate:

JSON-Ausgabe:

Mit dem Flag -o=json formatieren Sie die Befehlsausgabe als JSON.

Terminal window
kubectl get pods -o=json

YAML-Ausgabe:

Mit dem Flag -o=yaml formatieren Sie die Befehlsausgabe als YAML.

Terminal window
kubectl get pods -o=yaml

Wide-Ausgabe:

Die Option -o=wide liefert eine detaillierte Klartextausgabe (z. B. wird der Node-Name für Pods angezeigt).

Terminal window
kubectl get pods -o=wide

Für maßgeschneiderte Ausgaben bietet kubectl das Flag --custom-columns, mit dem Sie festlegen, welche Spalten angezeigt werden.

Um beispielsweise Pods mit ihren Namen und den Nodes aufzulisten, auf denen sie laufen:

Terminal window
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"

Dieser Befehl gibt Folgendes aus:

POD NAME NODE
nginx-deployment-1 node-1
nginx-deployment-2 node-2

Namespace angeben:

Standardmäßig arbeiten kubectl-Befehle im Namespace des aktuellen Contexts. Um einen bestimmten Namespace anzusprechen, verwenden Sie das Flag -n oder --namespace:

Terminal window
kubectl get pods -n <namespace_name>

Um Ressourcen über alle Namespaces hinweg anzuzeigen, nutzen Sie das Flag -A oder --all-namespaces:

Terminal window
kubectl get pods -A

Und so setzen Sie einen Standard-Namespace für den aktuellen Context:

Terminal window
kubectl config set-context --current --namespace=ns_name

Datei als Eingabe:

Mit dem Flag -f geben Sie beim Erstellen einer Ressource einen Dateinamen, ein Verzeichnis oder eine URL an.

Terminal window
kubectl create -f ./file_name

Nach Labels filtern:

Mit dem Flag -l filtern Sie Ressourcen nach bestimmten Labels.

Terminal window
kubectl get pods -l name=label_name

Hilfe-Option:

Die Hilfe zu kubectl-Befehlen rufen Sie mit dem Flag -h auf.

Terminal window
kubectl -h

Watch-Modus:

Mit dem Flag --watch (oder -w) beobachten Sie Ressourcenänderungen kontinuierlich:

Terminal window
kubectl get pods -w

Ausgabe sortieren:

Mit dem Flag --sort-by sortieren Sie die Ausgabe nach einem bestimmten Feld:

Terminal window
kubectl get pods --sort-by=.metadata.name

kubectl mit Aliassen nutzen

Die Arbeit mit kubectl bedeutet oft lange Befehle – das kostet Zeit und ist fehleranfällig. Um effizienter zu arbeiten, legen viele Entwickler Aliasse für häufig genutzte Befehle an.

Einen einfachen Alias einrichten

Terminal window
alias k=kubectl
echo 'alias k=kubectl' >> ~/.bashrc

Damit können Sie k anstelle von kubectl verwenden.

Nutzen Sie das Repository kubectl-aliases, das Hunderte vordefinierter Aliasse bereitstellt und so die Befehlsausführung beschleunigt.

Für Cluster-Management, Context und Konfiguration

Cluster-Management umfasst das Einrichten, Anzeigen und Anpassen Ihres Clusters.

Befehl Beschreibung
kubectl cluster-info Zeigt die Endpunkte und grundlegende Informationen zu Ihrem Kubernetes-Cluster an.
kubectl config get-contexts Listet alle in Ihrer kubeconfig-Datei definierten Contexts auf.
kubectl config current-context Zeigt den aktuell aktiven Context an.
kubectl config use-context <context> Wechselt den aktiven Context zum angegebenen Context.
kubectl config delete-context <context> Entfernt einen Context aus Ihrer kubeconfig-Datei.
kubectl api-versions Listet alle im Cluster verfügbaren API-Versionen auf.
kubectl api-resources Listet alle in Ihrem Cluster verfügbaren Ressourcentypen auf, inklusive Details zu API-Gruppen und Namespaces.
kubectl config view Zeigt die Konfigurationsdetails aus Ihrer kubeconfig-Datei an (Cluster, Contexts, Benutzereinstellungen).
kubectl version Gibt die Versionsinformationen des kubectl-Clients und des Kubernetes-Servers aus.

Pod-Management

Shortcode: po

Ein Pod ist die kleinste Einheit in Kubernetes und repräsentiert eine einzelne Instanz eines laufenden Prozesses in Ihrem Cluster. Er kann einen oder mehrere Container enthalten, die sich Speicher- und Netzwerkressourcen teilen.

Befehl Beschreibung
kubectl get pods Listet alle Pods im aktuellen Namespace auf.
kubectl describe pod <pod-name> Liefert detaillierte Informationen zum angegebenen Pod, einschließlich Status, Events und Container-Details.
kubectl exec -it <pod-name> <command> Führt den angegebenen Befehl interaktiv im angegebenen Pod aus (die Flags -it ermöglichen den interaktiven Terminal-Zugriff).
kubectl delete pod <pod-name> Löscht den angegebenen Pod aus dem Cluster.
kubectl run <pod-name> --image=<image_name> Erstellt und startet einen Pod mit dem angegebenen Image.
kubectl get pod -n <namespace_name> Listet alle Pods im angegebenen Namespace auf.
kubectl exec <pod-name> -c <container-name> <command> Führt einen Befehl in einem bestimmten Container innerhalb eines Pods aus.
kubectl top pod Zeigt die Ressourcennutzung (z. B. CPU und Arbeitsspeicher) der Pods an.
kubectl annotate pod <pod-name> <annotation> Fügt dem angegebenen Pod eine Annotation hinzu oder aktualisiert sie.
kubectl get pods --field-selector=status.phase=Running Listet durch Filtern nach dem Pod-Status alle Pods auf, die sich aktuell in der Phase Running befinden.
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' Sortiert die Pod-Liste nach der Anzahl der Neustarts des ersten Containers in jedem Pod.

Für ReplicaSets

Shortcode: rs

Ein ReplicaSet stellt sicher, dass eine festgelegte Anzahl von Pod-Replikas läuft. Der wesentliche Unterschied: ReplicaSets unterstützen Set-basierte Label-Selektoren.

Befehl Beschreibung
kubectl get rs Listet alle ReplicaSets im aktuellen Namespace auf.
kubectl get rs <replicaset_name> -o yaml Zeigt die Konfiguration des angegebenen ReplicaSets im YAML-Format an.
kubectl get rs <replicaset_name> -o json Zeigt die Konfiguration des angegebenen ReplicaSets im JSON-Format an.
kubectl describe rs <rs_name> Liefert detaillierte Informationen zum angegebenen ReplicaSet.
kubectl get rs --namespace=<ns_name> Listet alle ReplicaSets im angegebenen Namespace auf.
kubectl delete rs <rs_name> --cascade=orphan Löscht das angegebene ReplicaSet, lässt die von ihm verwalteten Pods aber weiterlaufen (die Pods werden verwaist).
kubectl delete rs <rs_name> Löscht das angegebene ReplicaSet samt aller von ihm verwalteten Pods.
kubectl scale rs <rs_name> --replicas=<count> Passt (skaliert) die Anzahl der vom angegebenen ReplicaSet verwalteten Pods auf den angegebenen Wert an.
kubectl edit rs <rs_name> Öffnet die ReplicaSet-Konfiguration in Ihrem Standard-Editor, sodass Sie Änderungen live vornehmen können.
kubectl replace -f <rs_file.yaml> Ersetzt die bestehende ReplicaSet-Konfiguration durch die in der YAML-Datei angegebene.

Für DaemonSets

Shortcode: ds

Ein DaemonSet stellt sicher, dass ein bestimmter Pod auf allen (oder ausgewählten) Nodes des Clusters läuft. Das ist nützlich für Aufgaben wie das Betreiben eines Monitoring-Agents auf jedem Node.

Befehl Beschreibung
kubectl get daemonset Listet alle DaemonSets im aktuellen Namespace auf.
kubectl describe daemonset <ds_name> Liefert detaillierte Informationen zu einem bestimmten DaemonSet.
kubectl get daemonset <daemonset_name> -o yaml Zeigt die Konfiguration des angegebenen DaemonSets im YAML-Format an.
kubectl get daemonset <ds_name> -o json Zeigt die Konfiguration des angegebenen DaemonSets im JSON-Format an.
kubectl delete daemonset <ds_name> Löscht das angegebene DaemonSet aus dem Cluster.
kubectl label daemonset <ds_name> <key>=<value> Fügt dem angegebenen DaemonSet ein Label hinzu oder aktualisiert es.
kubectl annotate daemonset <ds_name> <key>=<value> Fügt dem angegebenen DaemonSet eine Annotation hinzu oder aktualisiert sie.
kubectl rollout status daemonset <ds_name> Prüft den Status eines DaemonSet-Rollouts.
kubectl rollout history daemonset <ds_name> Zeigt die Rollout-Historie eines DaemonSets an.

Für StatefulSets

Shortcode: sts

StatefulSets steuern Deployment und Skalierung von Pods und sorgen dafür, dass jeder Pod eine eindeutige, stabile Identität und persistenten Speicher erhält. Das ist wichtig für zustandsbehaftete Anwendungen.

Befehl Beschreibung
kubectl get statefulset Listet alle StatefulSets im aktuellen Namespace auf.
kubectl describe statefulset <statefulset_name> Liefert detaillierte Informationen zum angegebenen StatefulSet.
kubectl get statefulset <sts_name> -o yaml Zeigt die Konfiguration des angegebenen StatefulSets im YAML-Format an.
kubectl get statefulset <sts_name> -o json Zeigt die Konfiguration des angegebenen StatefulSets im JSON-Format an.
kubectl edit statefulset <sts_name> Öffnet die Konfiguration des angegebenen StatefulSets in Ihrem Standard-Texteditor, sodass Sie Änderungen live vornehmen können.
kubectl scale statefulset <sts_name> --replicas=<number> Passt die Anzahl der vom angegebenen StatefulSet verwalteten Pod-Replikas auf den angegebenen Wert an.
kubectl rollout status statefulset <statefulset_name> Prüft und zeigt den Rollout-Status des angegebenen StatefulSets an.

Für Namespaces

Shortcode: ns

Namespaces ermöglichen es, Cluster-Ressourcen zwischen mehreren Benutzern oder Anwendungen aufzuteilen.

Befehl Beschreibung
kubectl get namespace Listet alle Namespaces in Ihrem Cluster auf (die Namespaces des aktuellen Contexts).
kubectl create namespace <namespace_name> Erstellt einen neuen Namespace mit dem angegebenen Namen.
kubectl describe namespace <namespace_name> Liefert detaillierte Informationen zum angegebenen Namespace.
kubectl edit namespace <namespace_name> Öffnet die Konfiguration des angegebenen Namespace in Ihrem Standard-Texteditor für Live-Änderungen.
kubectl delete namespace <namespace_name> Löscht den angegebenen Namespace samt aller darin enthaltenen Ressourcen aus Ihrem Cluster.

Für Services

Shortcode: svc

Ein Service definiert eine logische Gruppe von Pods und eine Richtlinie für den Zugriff darauf. Er ermöglicht die Kommunikation zwischen verschiedenen Teilen Ihrer Anwendung und kann Ihre Anwendung für externen Traffic verfügbar machen.

Befehl Beschreibung
kubectl get services Listet alle Services im aktuellen Namespace auf
kubectl create service <svc-type> <svc-name> --tcp=<port> Erstellt einen neuen Service des angegebenen Typs (z. B. clusterip, nodeport oder loadbalancer) mit dem angegebenen Namen und mappt TCP auf den angegebenen Port
kubectl edit service <svc-name> Öffnet einen Editor zum Bearbeiten der Konfiguration des angegebenen Service
kubectl describe service <svc-name> Liefert detaillierte Informationen zum angegebenen Service
kubectl delete service <svc-name> Löscht den angegebenen Service aus dem Cluster
kubectl get endpoints <svc-name> Listet die Endpoints (d. h. die IP-Adressen der Pods) hinter dem angegebenen Service auf
kubectl expose deployment [deploy_name] Erstellt einen Service, der das angegebene Deployment verfügbar macht; mögliche Ressourcen für expose sind pod (po), service (svc) und replicaset (rs)

Für Service Accounts

Shortcode: sa

Ein ServiceAccount stellt eine Identität für Prozesse bereit, die in einem Pod laufen, und ermöglicht ihnen die sichere Interaktion mit der Kubernetes-API.

Befehl Beschreibung
kubectl get serviceaccounts Listet alle Service Accounts im aktuellen Namespace auf
kubectl describe serviceaccount <sa-name> Zeigt detaillierte Informationen zum angegebenen Service Account an
kubectl replace -f <sa.yaml> Ersetzt (aktualisiert) einen Service Account durch eine neue Konfiguration
kubectl delete serviceaccount <sa_name> Löscht den angegebenen Service Account aus dem Cluster.

Für Deployments

Shortcode: deploy

Ein Deployment bietet deklarative Updates für Pods und ReplicaSets. Sie definieren den gewünschten Zustand Ihrer Anwendung, und der Deployment-Controller überführt den tatsächlichen Zustand kontrolliert in den gewünschten Zustand.

Befehl Beschreibung
kubectl get deployment Listet alle Deployments im aktuellen Namespace auf.
kubectl describe deployment <deployment_name> Zeigt detaillierte Informationen zum angegebenen Deployment an
kubectl create deployment <deployment-name> --image=<img-name> Erstellt ein neues Deployment mit dem Namen <deployment-name> auf Basis des angegebenen Container-Images
kubectl edit deployment <deployment_name> Öffnet die Deployment-Konfiguration in Ihrem Standard-Texteditor zur Live-Bearbeitung
kubectl scale deployment <deployment-name> --replicas=<replica-count> Passt die Anzahl der vom Deployment verwalteten Pod-Replikas auf den angegebenen Wert an.
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> Aktualisiert das Image eines bestimmten Containers innerhalb des Deployments
kubectl rollout status deployment/<deployment-name> Zeigt den aktuellen Rollout-Status des Deployments an
kubectl rollout pause deployment/<deployment-name> Pausiert den Rollout-Prozess und verhindert weitere Updates, bis er fortgesetzt wird
kubectl rollout resume deployment/<deployment-name> Setzt einen pausierten Deployment-Rollout fort
kubectl rollout undo deployment/<deployment-name> Setzt das Deployment auf die vorherige Revision zurück
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> Setzt das Deployment auf eine bestimmte Revisionsnummer zurück
kubectl delete deployment <deployment-name> Löscht das angegebene Deployment samt der von ihm verwalteten Pods

Für Jobs und CronJobs

Shortcode: job, cj

Ein Job führt einen oder mehrere Pods aus, bis eine Aufgabe erfolgreich abgeschlossen ist. Ein CronJob erstellt Jobs nach einem Zeitplan – praktisch für Backups, Reports und andere wiederkehrende Aufgaben.

Befehl Beschreibung
kubectl get jobs Listet alle Jobs im aktuellen Namespace auf.
kubectl describe job <job-name> Zeigt detaillierte Informationen zum angegebenen Job an.
kubectl create job <job-name> --image=<image-name> Erstellt einen Job, der das angegebene Container-Image ausführt.
kubectl delete job <job-name> Löscht den angegebenen Job.
kubectl get cronjobs Listet alle CronJobs im aktuellen Namespace auf.
kubectl describe cronjob <cronjob-name> Zeigt detaillierte Informationen zum angegebenen CronJob an.
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" Erstellt einen CronJob mit dem angegebenen Zeitplan.
kubectl create job --from=cronjob/<cronjob-name> <job-name> Erstellt aus einem bestehenden CronJob einen einmaligen Job.
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' Setzt zukünftige Ausführungen des CronJobs aus.
kubectl delete cronjob <cronjob-name> Löscht den angegebenen CronJob.

Für Horizontal Pod Autoscaler

Shortcode: hpa

Ein Horizontal Pod Autoscaler (HPA) passt die Anzahl der Pod-Replikas automatisch anhand von Metriken wie CPU- oder Speicherauslastung an.

Befehl Beschreibung
kubectl get hpa Listet alle Horizontal Pod Autoscaler auf.
kubectl describe hpa <hpa-name> Zeigt detaillierte Informationen zum angegebenen HPA an.
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> Erstellt einen HPA für das angegebene Deployment.
kubectl edit hpa <hpa-name> Öffnet die HPA-Konfiguration zur Live-Bearbeitung.
kubectl delete hpa <hpa-name> Löscht den angegebenen HPA.
kubectl get hpa -w Beobachtet HPA-Metriken und Skalierungsereignisse in Echtzeit.
kubectl top pods Zeigt die vom Metrics Server erfasste Ressourcennutzung der Pods an.
kubectl top nodes Zeigt die CPU- und Speicherauslastung der Nodes an.

Für RBAC und Berechtigungsprüfungen

Role-Based Access Control (RBAC) steuert, welche Benutzer und Service Accounts auf Kubernetes-Ressourcen zugreifen können.

Befehl Beschreibung
kubectl get roles Listet alle Roles im aktuellen Namespace auf.
kubectl get rolebindings Listet alle RoleBindings im aktuellen Namespace auf.
kubectl get clusterroles Listet alle ClusterRoles auf.
kubectl get clusterrolebindings Listet alle ClusterRoleBindings auf.
kubectl describe role <role-name> Zeigt detaillierte Informationen zur angegebenen Role an.
kubectl describe clusterrole <clusterrole-name> Zeigt detaillierte Informationen zur angegebenen ClusterRole an.
kubectl auth can-i <verb> <resource> Prüft, ob der aktuelle Benutzer eine Aktion auf einer Ressource ausführen darf.
kubectl auth can-i <verb> <resource> --as=<user> Prüft die Berechtigungen eines anderen Benutzers.
kubectl auth can-i --list Listet alle Berechtigungen des aktuellen Benutzers auf.

Für Ingress-Ressourcen

Shortcode: ing

Ein Ingress verwaltet den externen HTTP- und HTTPS-Zugriff auf Services in einem Kubernetes-Cluster. In der Regel wird dafür ein Ingress-Controller benötigt.

Befehl Beschreibung
kubectl get ingress Listet alle Ingress-Ressourcen im aktuellen Namespace auf.
kubectl describe ingress <ingress-name> Zeigt detaillierte Informationen zum angegebenen Ingress an.
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" Erstellt einen Ingress mit einer Routing-Regel.
kubectl edit ingress <ingress-name> Öffnet die Ingress-Konfiguration zur Live-Bearbeitung.
kubectl delete ingress <ingress-name> Löscht den angegebenen Ingress.
kubectl get ingress -A Listet Ingress-Ressourcen über alle Namespaces hinweg auf.
kubectl get ingress <ingress-name> -o yaml Zeigt die Ingress-Konfiguration im YAML-Format an.

Für fortgeschrittenes Debugging

Diese Befehle helfen bei der Fehlersuche in Anwendungen, im Netzwerk und bei Ressourcenproblemen in einem Kubernetes-Cluster.

Befehl Beschreibung
kubectl logs <pod-name> Zeigt die Logs des angegebenen Pods an.
kubectl logs <pod-name> -c <container-name> Zeigt die Logs eines bestimmten Containers in einem Multi-Container-Pod an.
kubectl logs -f <pod-name> Streamt die Logs des angegebenen Pods.
kubectl logs <pod-name> --previous Zeigt die Logs der vorherigen Instanz eines abgestürzten Containers an.
kubectl exec -it <pod-name> -- /bin/sh Öffnet eine interaktive Shell in einem laufenden Container.
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> Leitet zum Debuggen einen lokalen Port an einen Pod weiter.
kubectl debug <pod-name> -it --image=busybox Erstellt einen ephemeren Debug-Container, der an den angegebenen Pod angehängt wird.
kubectl get events --sort-by=.metadata.creationTimestamp Listet Cluster-Events in chronologischer Reihenfolge auf.
kubectl describe node <node-name> Zeigt Node-Zustände, zugewiesene Ressourcen und aktuelle Events an.
kubectl cp <pod-name>:<remote-path> <local-path> Kopiert Dateien aus einem Pod auf den lokalen Rechner.

Für Events

Shortcode: ev

Events sind Aufzeichnungen darüber, was in Ihrem Cluster passiert ist – etwa Pod-Erstellungen, Löschungen oder Fehler.

Befehl Beschreibung
kubectl get events Listet alle Events im aktuellen Namespace auf
kubectl get events --field-selector type!=Normal Zeigt Events an, die nicht vom Typ Normal sind
kubectl get events --field-selector type=Warning Filtert und zeigt ausschließlich Events vom Typ Warning an
kubectl get events -w Beobachtet neue Events in Echtzeit
kubectl get events --field-selector involvedObject.name=<object_name> Zeigt Events zu einem bestimmten Objekt an, etwa einem Pod oder Node

Logs

Logs sind die Ausgaben Ihrer laufenden Anwendungen und Systemkomponenten.

Befehl Beschreibung
kubectl logs <pod_name> Ruft die Logs des Hauptcontainers des angegebenen Pods ab und zeigt sie an
kubectl logs -f <pod_name> Streamt die Live-Logs des angegebenen Pods
kubectl logs --since=6h <pod_name> Zeigt die Logs des angegebenen Pods aus den letzten 6 Stunden an
kubectl logs --tail=50 <pod_name> Zeigt die letzten 50 Log-Zeilen des angegebenen Pods an
kubectl logs -f <pod_name> -c <container_name> Streamt Live-Logs aus einem bestimmten Container innerhalb eines Pods
kubectl logs <pod_name> > podfile.log Speichert die Logs eines Pods in einer Datei namens podfile.log
kubectl logs --previous <pod_name> Zeigt die Logs der vorherigen Instanz eines Containers im angegebenen Pod an

Für Secrets und ConfigMaps

Shortcode für ConfigMaps: cm

Secrets speichern sensible Informationen wie Passwörter oder Schlüssel, während ConfigMaps nicht-sensible Konfigurationsdaten enthalten. Beide helfen Ihnen, Konfigurationsartefakte vom Image-Inhalt zu entkoppeln und Ihre Anwendungen portabel zu halten.

Befehl Beschreibung
kubectl get secrets Listet alle Secrets im aktuellen Namespace auf
kubectl get configmaps Listet alle ConfigMaps im aktuellen Namespace auf
kubectl describe secret <secret-name> Liefert detaillierte Informationen zum angegebenen Secret
kubectl delete secret <secret-name> Löscht das angegebene Secret aus dem Cluster
kubectl describe configmap <configmap-name> Liefert detaillierte Informationen zur angegebenen ConfigMap
kubectl create configmap <config-map-name> --from-file=<path-to-file> Erstellt eine neue ConfigMap mit dem angegebenen Namen aus dem Inhalt der angegebenen Datei
kubectl create secret <secret-type> <secret-name> --from-literal=key=value Erstellt ein neues Secret des angegebenen Typs aus einem Schlüssel-Wert-Paar

Für das Node-Management

Shortcode: no

Ein Node ist eine Worker-Maschine in Kubernetes.

Befehl Beschreibung
kubectl get nodes Listet alle Nodes in Ihrem Cluster auf
kubectl describe node <node-name> Liefert detaillierte Informationen zum angegebenen Node
kubectl drain <node-name> Bereitet den Node auf Wartungsarbeiten vor, indem alle Pods evakuiert werden und der Node als unschedulable markiert wird
kubectl uncordon <node-name> Markiert einen zuvor gesperrten (unschedulable) Node wieder als schedulable, sodass neue Pods auf ihm eingeplant werden können
kubectl label node <node_name> <key>=<value> Fügt dem angegebenen Node ein Label hinzu oder aktualisiert es
kubectl cordon <node_name> Markiert den angegebenen Node als unschedulable
kubectl taint node <node_name> <key>=<value>:<taint-effect> Wendet einen Taint auf den angegebenen Node an
kubectl top node <node_name> Zeigt Metriken zur Ressourcennutzung (z. B. CPU und Arbeitsspeicher) des angegebenen Node an
kubectl annotate node <node_name> <key>=<value> Fügt dem angegebenen Node eine Annotation hinzu oder aktualisiert sie

Für Storage (PV, PVC)

Shortcode für Persistent Volume: pv

Shortcode für Persistent Volume Claim: pvc

PersistentVolumes sind Speicherressourcen in Ihrem Cluster, PersistentVolumeClaims sind Speicheranforderungen von Benutzern.

Befehl Beschreibung
kubectl get pv Listet alle Persistent Volumes im Cluster auf
kubectl describe pv <pv-name> Liefert detaillierte Informationen zu einem bestimmten Persistent Volume
kubectl get pvc Listet alle Persistent Volume Claims im aktuellen Namespace auf
kubectl describe pvc <pvc-name> Zeigt detaillierte Informationen zu einem bestimmten Persistent Volume Claim an

Für das Kopieren von Dateien und Verzeichnissen

Sie können Dateien zwischen Ihrem lokalen System und dem Container eines Pods übertragen – hilfreich beim Debugging oder für Daten-Backups.

Befehl Beschreibung
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> Kopiert eine Datei oder ein Verzeichnis von Ihrem lokalen Rechner in einen Container im angegebenen Pod und Namespace.
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> Kopiert eine Datei oder ein Verzeichnis aus einem Container in einem Pod (im angegebenen Namespace) auf Ihren lokalen Rechner.
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> Kopiert eine Datei oder ein Verzeichnis von Ihrem lokalen Rechner in den Ziel-Pod und -Namespace.

Für Output-Verbosity und Debugging

Verbosity bezeichnet den Detailgrad der Logs, die Komponenten wie kubectl und kubelet erzeugen. Sie können die Verbosity von kubectl-Befehlen anpassen.

Befehl Beschreibung
kubectl get <resource-type> --v=<verbosity-level> Die allgemeine Form zum Festlegen des Verbosity-Levels. Sie legt fest, wie viel Debug-Ausgabe kubectl beim Ausführen des Befehls auf dem angegebenen Ressourcentyp einschließt.
kubectl get <resource-type> --v=0 Führt den Befehl mit minimaler Debug-Ausgabe aus (Standard-Level).
kubectl get <resource-type> --v=7 Bietet ein höheres Verbosity-Level mit zusätzlichen Debug-Informationen, einschließlich der vom Client gesendeten HTTPS-Request-Header.
kubectl get <resource-type> --v=8 Erhöht die Verbosity weiter. Ab Level 8 werden auch die Inhalte von HTTP-Requests und -Responses (Body-Daten) angezeigt.

FAQ

Was ist kubectl? kubectl ist das Kommandozeilen-Tool für Kubernetes. Es sendet Ihre Befehle an den Kubernetes-API-Server, der die Anfrage im Cluster ausführt. So können Sie Ressourcen erstellen, verwalten, bearbeiten und löschen sowie Ihre Anwendungen überwachen.

Wie wechsle ich mit kubectl zwischen Clustern? Führen Sie kubectl config get-contexts aus, um die Contexts in Ihrer kubeconfig-Datei aufzulisten, und anschließend kubectl config use-context <context-name>, um einen zu aktivieren. Alle folgenden kubectl-Befehle werden dann auf diesem Cluster ausgeführt.

Wie liste ich Pods in allen Namespaces auf? Fügen Sie das Flag -A (oder --all-namespaces) hinzu, zum Beispiel kubectl get pods -A. Um stattdessen einen bestimmten Namespace anzusprechen, verwenden Sie -n <namespace_name>.

Wie sehe ich die Logs eines abgestürzten Containers? Führen Sie kubectl logs <pod-name> --previous aus, um die Logs der vorherigen Container-Instanz anzuzeigen. Fügen Sie -c <container-name> hinzu, wenn der Pod mehr als einen Container enthält.

Wie setze ich ein Deployment zurück? Führen Sie kubectl rollout undo deployment/<deployment-name> aus, um zur vorherigen Revision zurückzukehren. Um eine bestimmte Revision auszuwählen, fügen Sie --to-revision=<revision-number> hinzu.

Wie richte ich einen kubectl-Alias und Autocompletion ein? Führen Sie alias k=kubectl aus, um k statt kubectl zu verwenden, und tragen Sie den Alias in Ihre ~/.bashrc ein, um ihn dauerhaft zu speichern. Für die Bash-Autocompletion fügen Sie source <(kubectl completion bash) zur ~/.bashrc hinzu. Das Cheat Sheet deckt auch Zsh ab.

Senken Sie Ihre Cloud-Kosten mit PerfectScale um bis zu 50 %

PerfectScale ist ein leistungsstarkes Tool, das nahtlos mit Kubernetes zusammenarbeitet. Durch die Integration von PerfectScale in Ihre Kubernetes-Umgebung vereinfachen und optimieren Sie die Orchestrierung Ihrer Container. Das macht die Verwaltung Ihrer Cluster effizienter: Sie können Ressourcen gezielter zuweisen, Betriebskosten senken und die Stabilität und Resilienz Ihrer Anwendungen insgesamt verbessern. Die KI-gestützten Erkenntnisse von PerfectScale geben Ihnen umfassenden Einblick in die Performance Ihres Systems und ermöglichen proaktive Anpassungen an dynamische Anforderungen. So sichern Sie Spitzenleistung und senken Ihre Kosten gleichzeitig um bis zu 50 % – durch datengetriebene, autonome Aktionen, die jede Ebene Ihres Kubernetes-Stacks kontinuierlich optimieren. Überzeugen Sie sich selbst von den Vorteilen von PerfectScale: Buchen Sie noch heute eine Demo und starten Sie Ihre kostenlose Testphase!