Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Kubectl Cheat Sheet: Kubernetes mit diesen Befehlen meistern [inkl. kostenlosem PDF]

By DoiTApr 14, 202511 min read

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

person coding on laptop

Im Werkzeugkasten jedes Kubernetes-Administrators steht kubectl ganz vorne – die leistungsstarke Kommandozeile, mit der sich Kubernetes-Cluster effizient verwalten lassen.

Kubectl (ausgesprochen "kube-control" oder "kube-C-T-L") ist Ihre direkte Verbindung zum Kubernetes-API-Server. Damit deployen Sie Anwendungen, prüfen Ressourcen, sehen Logs ein und führen praktisch jede Operation in Ihrem Cluster aus. Egal, ob Sie als DevOps-Engineer, Plattform-Administrator oder Entwickler an containerisierten Anwendungen arbeiten – wer kubectl beherrscht, hat die Grundlage für ein effektives Kubernetes-Management im Cloud Computing.

Dieses praktische Cheat Sheet bündelt die nützlichsten kubectl-Befehle – inklusive konkreter Beispiele und Tipps, mit denen Sie Ihre täglichen Kubernetes-Aufgaben deutlich schneller erledigen.

Was sind die zentralen Kategorien von kubectl-Befehlen?

Kubectl logo Kubectl-Logo

Kubectl-Befehle lassen sich in drei Hauptkategorien einteilen, die jeweils unterschiedliche Aspekte des Cluster-Managements abdecken:

1. Befehle für Cluster-Informationen

Diese Befehle geben Ihnen Einblick in Zustand und Konfiguration Ihres Kubernetes-Clusters:

  • Informationen zu Cluster-Komponenten abrufen
  • Node-Status und -Ressourcen einsehen
  • Zustand des apiservers prüfen
  • Komponenten der Control Plane inspizieren

2. Befehle für das Ressourcen-Management

Mit diesen Befehlen erstellen, ändern, löschen und prüfen Sie Kubernetes-Ressourcen:

  • Ressourcen erstellen und aktualisieren
  • Ressourcen auflisten und beschreiben
  • Ressourcen löschen
  • Ressourcen hoch- und herunterskalieren
  • Ressourcen in Echtzeit bearbeiten

3. Befehle für das Deployment von Anwendungen

Schließlich erleichtern Deployment-Befehle die Bereitstellung und das Lifecycle-Management Ihrer Anwendungen:

  • Anwendungen aus YAML oder JSON deployen
  • Deployments und Rollouts verwalten
  • Autoscaling konfigurieren
  • Anwendungs-Konfigurationen aktualisieren
  • Networking von Anwendungen steuern

Mit diesen drei Kategorien im Hinterkopf werfen wir nun einen genaueren Blick auf konkrete kubectl-Befehle, die Ihnen auf Ihrem Kubernetes-Weg regelmäßig begegnen werden.

Tiefer eintauchen: das kubectl-Cheat-Sheet

person coding on laptop person coding on laptop

Hier ist ein Cheat Sheet zum Griffbereithalten: Es listet die kubectl-Befehle auf, die Sie im Alltag am häufigsten brauchen – inklusive Beispielen, mit denen Sie Ihre Kubernetes-Workflows verschlanken.

Pods

Pods sind die kleinsten deploybaren Einheiten in Kubernetes. Sie bestehen aus einem oder mehreren Containern, die sich Storage- und Netzwerkressourcen teilen.

Alle Pods auflisten:

kubectl get pods

Pods mit mehr Details auflisten:

kubectl get pods -o wide

Detaillierte Informationen zu einem bestimmten Pod abrufen:

kubectl describe pod

Pod aus einer YAML-Datei erstellen:

kubectl apply -f pod.yaml

Pod löschen:

kubectl delete pod

Befehl im Container eines Pods ausführen:

kubectl exec -it --

Pod-Logs abrufen:

kubectl logs

Pod-Logs in Echtzeit streamen:

kubectl logs -f

Logs eines bestimmten Containers in einem Multi-Container-Pod abrufen:

kubectl logs -c

Port-Forwarding zu einem Pod:

kubectl port-forward :

Dateien zu/von einem Pod kopieren:

kubectl cp :/path/to/file /local/path

kubectl cp /local/path :/path/in/pod

Services

Services stellen ein stabiles Netzwerk für Pods bereit und erleichtern als Abstraktionsschicht die Kommunikation zwischen verschiedenen Komponenten.

Alle Services auflisten:

kubectl get services

Detaillierte Informationen zu einem Service abrufen:

kubectl describe service

Service aus einer YAML-Datei erstellen:

kubectl apply -f service.yaml

Ein Deployment als Service exposen:

kubectl expose deployment --port= --target-port=

Service löschen:

kubectl delete service

Endpoints eines Services anzeigen:

kubectl get endpoints

ClusterIP-Service erstellen:

kubectl create service clusterip --tcp=:

NodePort-Service erstellen:

kubectl create service nodeport --tcp=:

Einen LoadBalancer-Service erstellen:

kubectl create service loadbalancer --tcp=:

Deployments

Deployments liefern deklarative Updates für Pods und ReplicaSets und ermöglichen einfaches Skalieren sowie Anwendungs-Updates.

Alle Deployments auflisten:

kubectl get deployments

Detaillierte Informationen zu einem Deployment abrufen:

kubectl describe deployment

Deployment aus einer YAML-Datei erstellen:

kubectl apply -f deployment.yaml

Deployment direkt über die Kommandozeile erstellen:

kubectl create deployment --image=

Deployment skalieren:

kubectl scale deployment --replicas=

Container-Image eines Deployments aktualisieren:

kubectl set image deployment/ =

Deployment auf eine vorherige Revision zurücksetzen:

kubectl rollout undo deployment/

Status eines Deployment-Rollouts anzeigen:

kubectl rollout status deployment/

Verlauf eines Deployment-Rollouts anzeigen:

kubectl rollout history deployment/

Deployment-Rollout pausieren:

kubectl rollout pause deployment/

Deployment-Rollout fortsetzen:

kubectl rollout resume deployment/

ConfigMaps und Secrets

ConfigMaps und Secrets dienen zum Speichern von Konfigurationsdaten bzw. sensiblen Informationen.

Wichtiger Sicherheitshinweis: Sowohl ConfigMaps als auch Secrets werden standardmäßig unverschlüsselt in etcd abgelegt. Beim Umgang mit sensiblen Daten sollten Sie daher Encryption at Rest aktivieren.

ConfigMaps auflisten:

kubectl get configmaps

ConfigMap aus literalen Werten erstellen:

kubectl create configmap --from-literal=key1=value1 --from-literal=key2=value2

ConfigMap aus einer Datei erstellen:

kubectl create configmap --from-file=

Detaillierte Informationen zu einer ConfigMap abrufen:

kubectl describe configmap

ConfigMap löschen:

kubectl delete configmap

Secrets auflisten:

kubectl get Secrets

Secret aus literalen Werten erstellen:

kubectl create secret generic --from-literal=key1=value1 --from-literal=key2=value2

Secret aus einer Datei erstellen:

kubectl create secret generic --from-file=

Detaillierte Informationen zu einem Secret abrufen:

kubectl describe secret

Secret löschen:

kubectl delete secret

Profi-Tipps für den Einsatz von kubectl

person looking at phone while codingperson looking at phone while coding

Das Kommandozeilen-Tool kubectl ist ein Muss, wenn Sie mit Kubernetes-Clustern arbeiten und deren Ressourcen verwalten. Wer den Dreh raus hat, spart sich im Alltag viel Aufwand und kann effizienter deployen, skalieren und Probleme beheben. Mit kubectl edit passen Sie Ressourcen wie Pods und Deployments direkt über die Kommandozeile an.

Namespaces effektiv nutzen

Namespaces sind eine Kernfunktion in Kubernetes: Mit ihnen unterteilen Sie Ihren Cluster in virtuelle Sub-Cluster. Das ist besonders praktisch in Multi-Tenant-Setups oder beim Betrieb komplexerer Anwendungen.

Ressourcen in einem bestimmten Namespace auflisten:

kubectl get -n

Ressource in einem bestimmten Namespace erstellen:

kubectl apply -f <file.yaml> -n

Standard-Namespace für alle kubectl-Befehle setzen:

kubectl config set-context --current --namespace=

Ressourcen über alle Namespaces hinweg anzeigen:

kubectl get --all-namespaces

Neuen Namespace erstellen:

kubectl create namespace

Es lohnt sich, zusammengehörige Ressourcen in eigene Namespaces zu bündeln und so klare Grenzen zwischen Apps oder Teams zu ziehen. Verwenden Sie sprechende Namen wie dev-frontend, prod-backend oder monitoring.

Label-Selektoren zum Filtern von Ressourcen

Labels sind Schlüssel-Wert-Paare, die Kubernetes-Objekten zugeordnet werden. Damit lassen sich Gruppen von Ressourcen einfach organisieren, auswählen und verwalten.

Ressourcen mit einem bestimmten Label auflisten:

kubectl get -l key=value

Ressourcen mit mehreren Label-Bedingungen auflisten:

kubectl get -l ‘key1=value1,key2=value2’

Ressourcen mit einem bestimmten Label-Schlüssel auflisten (unabhängig vom Wert):

kubectl get -l ‘key’

Ressourcen ohne ein bestimmtes Label auflisten:

kubectl get -l ‘!key’

Label zu einer bestehenden Ressource hinzufügen:

kubectl label key=value

Label von einer Ressource entfernen:

kubectl label key-

Eine konsistente Labeling-Strategie ist der Schlüssel zu effektivem Ressourcen-Management. Setzen Sie auf Labels wie app, environment, tier, version und owner, um Ordnung und Übersicht in Ihre Ressourcen zu bringen.

Rolling Updates umsetzen

Kubernetes macht es einfach, Anwendungen ohne Downtime per Rolling Update zu aktualisieren. Bei dieser Strategie werden Instanzen der alten Version schrittweise durch die neue ersetzt.

Deployment mit neuem Image aktualisieren (löst Rolling Update aus):

kubectl set image deployment/ =:

Rollout-Status prüfen:

kubectl rollout status deployment/

Update-Strategie in einem Deployment-YAML konfigurieren:

spec:

strategy:

type: RollingUpdate

rollingUpdate:

 maxUnavailable: 25%

 maxSurge: 25%

Bei Problemen auf die vorherige Version zurückrollen:

kubectl rollout undo deployment/

Deployment-Rollout pausieren:

Copykubectl rollout pause deployment/

Das ist besonders praktisch für gestaffelte Deployments: Sie rollen zunächst auf eine Teilmenge der Pods aus, prüfen die Funktionalität und setzen den Rollout nach erfolgreicher Validierung fort.

Deployment-Rollout fortsetzen:

Copykubectl rollout resume deployment/

Bei kritischen Anwendungen empfiehlt sich der --record-Flag bei Deployment-Änderungen. Damit wird der ausgeführte Befehl notiert und Sie können die Änderungs-Historie später leicht nachvollziehen:

kubectl apply -f deployment.yaml --record

Resource Quotas und Limits sorgfältig verwalten

Das Ressourcen-Management spielt im Kubernetes-Betrieb eine zentrale Rolle. Die richtigen Resource Requests und Limits zu setzen, ist entscheidend, um den Cluster stabil zu halten und Ressourcen fair zu verteilen.

Resource Quotas in einem Namespace anzeigen:

kubectl get resourcequota -n

Resource Quota für einen Namespace erstellen:

kubectl create quota --hard=cpu=1,memory=1G,pods=10 -n

Ressourcennutzung von Pods prüfen:

kubectl top pods

Ressourcennutzung von Nodes prüfen:

kubectl top nodes

Definieren Sie in Container-Spezifikationen immer Resource Requests und Limits:

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

Wichtig zu wissen: Resource Requests helfen dem Scheduler bei der Entscheidung, wo der Pod platziert wird, während Limits die Maximalnutzung definieren, ab der Container terminiert werden können. Eine gute Faustregel: Setzen Sie Requests anhand der erwarteten Steady-State-Nutzung und Limits auf das, was zu Spitzenzeiten akzeptabel ist.

Debugging mit kubectl meistern

Debugging ist entscheidend, damit Ihre Kubernetes-Apps reibungslos laufen. Glücklicherweise bringt kubectl viele Befehle mit, die Ihnen das Troubleshooting erleichtern.

Container-Logs abrufen:

kubectl logs -c

Interaktives Debugging mit einem temporären Pod:

kubectl run debug --rm -it --image=busybox -- sh

Debug-Container an einen bestehenden Pod anhängen:

kubectl debug -it --image=busybox --share-processes --copy-to=

Events in einem Namespace anzeigen:

kubectl get events -n

Pod-Conditions und Statusdetails prüfen:

Copykubectl describe pod

Damit erhalten Sie eine strukturierte Ausgabe der Pod-Conditions inklusive vollständiger Übergangs-Historie und aktuellem Zustand in einem gut lesbaren Format.

Konnektivität zwischen Pods mit einem Network-Debugging-Container prüfen:

kubectl run test-connectivity --rm -it --image=nicolaka/netshoot -- bash

Bei hartnäckigen Problemen lohnt sich der --previous-Flag, um Logs zuvor abgestürzter Container einzusehen:

kubectl logs --previous

Security Best Practices mit kubectl

two people coding on laptoptwo people coding on laptop

Die Sicherheit Ihres Kubernetes-Clusters ist enorm wichtig – und kubectl spielt dabei eine zentrale Rolle. Hier sind einige Best Practices, mit denen Sie in Sachen Sicherheit den Überblick behalten:

Zugriffskontrollen mit RBAC verwalten

Role-Based Access Control (RBAC) ist der Standard für Autorisierung in Kubernetes. Damit definieren Sie detaillierte Berechtigungen für Benutzer und Service Accounts.

Roles in einem Namespace anzeigen:

kubectl get roles -n

Cluster Roles anzeigen:

kubectl get clusterroles

Role Bindings anzeigen:

kubectl get rolebindings -n

Cluster Role Bindings anzeigen:

kubectl get clusterrolebindings

Role mit spezifischen Berechtigungen erstellen:

kubectl create role developer --verb=get,list,watch --resource=pods,deployments -n

Role an einen User binden:

kubectl create rolebinding dev-user-binding --role=developer --user=dev-user -n

Setzen Sie wann immer möglich auf RoleBindings statt ClusterRoleBindings, um Berechtigungen auf einen bestimmten Namespace zu begrenzen. Das folgt dem Principle of Least Privilege: Zugriff erhalten nur die Namespaces, die ihn tatsächlich brauchen – das verringert die Auswirkungen kompromittierter Anmeldedaten.

Halten Sie sich an das Principle of Least Privilege und geben Sie Benutzern und Service Accounts nur die Berechtigungen, die sie wirklich brauchen. Machen Sie es sich zur Gewohnheit, Role Bindings regelmäßig zu überprüfen, damit sie auch bei wechselnden Rollen und Verantwortlichkeiten weiterhin passen.

Sicherer Umgang mit Secrets

Kubernetes Secrets erfordern einen sorgfältigen Umgang, denn sie enthalten sensible Informationen wie API-Schlüssel, Passwörter und Zertifikate.

Secret sicher aus einer Datei erstellen:

kubectl create secret generic db-credentials --from-file=./username.txt --from-file=./password.txt

TLS-Secret erstellen:

kubectl create secret tls tls-secret --cert=path/to/cert --key=path/to/key

Secrets als Umgebungsvariablen einbinden:

env:

- name: DB_PASSWORD

valueFrom:

 secretKeyRef:

   name: db-credentials

   key: password

Secrets als Dateien einbinden:

volumes:

- name: secret-volume

secret:

 secretName: ssl-certificates

Für mehr Sicherheit lohnt sich der Blick auf externe Secret-Management-Tools wie HashiCorp Vault, AWS Secrets Manager oder Sealed Secrets. Sie bieten nützliche Funktionen wie Secret-Rotation, Audit Trails und Verschlüsselung.

kubectl mit sicherem Context nutzen

Vergewissern Sie sich immer, dass Sie im richtigen Context arbeiten – sonst verändern Sie womöglich aus Versehen den falschen Cluster.

Alle verfügbaren Contexts anzeigen:

kubectl config get-contexts

Zu einem bestimmten Context wechseln:

kubectl config use-context

Aktuellen Context anzeigen:

kubectl config current-context

Namespace für den aktuellen Context setzen:

kubectl config set-context --current --namespace=

In kritischen Produktionsumgebungen empfiehlt es sich, mit visuellen Hinweisen wie Shell-Prompts zu arbeiten, die den aktuellen Cluster und Namespace anzeigen. So vermeiden Sie versehentliche Aktionen auf den falschen Ressourcen.

Network Policies einsetzen

Network Policies wirken wie Firewalls innerhalb Ihres Kubernetes-Clusters und steuern die Kommunikation zwischen Pods.

Network Policies auflisten:

kubectl get networkpolicies

Network Policy erstellen, die standardmäßig allen Ingress-Traffic blockiert:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: default-deny-ingress

spec:

podSelector: {}

policyTypes:

- Ingress

EOF

Network Policy erstellen, die bestimmten Traffic erlaubt:

kubectl apply -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

name: allow-frontend-to-backend

spec:

podSelector:

matchLabels:

 app: backend

ingress:

- from:

- podSelector:

   matchLabels:

     app: frontend

ports:

- port: 8080

EOF

Beginnen Sie mit einer "Deny-all"-Network-Policy als Basislinie und erlauben Sie dann gezielt nur den Traffic, den Sie wirklich brauchen. So bleiben Sie dem Principle of Least Privilege treu und halten Ihre Angriffsfläche so klein wie möglich.

Kubernetes-Management mit kubectl-Befehlen und Best Practices meistern

Kubectl ist das unverzichtbare Tool in der Welt der Kubernetes-Befehle und Ihre zentrale Schnittstelle, um Kubernetes-Cluster zu verwalten und mit ihnen zu arbeiten. Wer diese Run-Befehle beherrscht und die Best Practices aus diesem Cheat Sheet beherzigt, ist bestens gerüstet, um die Herausforderungen containerisierter Anwendungen souverän zu meistern.

Denken Sie daran: Kubernetes entwickelt sich stetig weiter – und kubectl ebenso. Bleiben Sie bei neuen Features und Updates am Ball, um Ihre Cluster-Management-Skills laufend auszubauen.

Wenn Sie tiefer in fortgeschrittene Themen eintauchen möchten, etwa das Erweitern von Kubernetes-Service-IP-Ranges, lesen Sie unseren ausführlichen Leitfaden dazu, wie Sie Service-IP-Ranges nahtlos erweitern.

Je größer und komplexer Ihr Kubernetes-Setup wird, desto wichtiger werden die richtigen Tools und das passende Know-how. Genau hier kommt DoiT ins Spiel. Unser globales Team aus Cloud-Architekten unterstützt Unternehmen dabei, kosteneffiziente, skalierbare und resiliente Cloud-Infrastrukturen aufzubauen. Wir helfen Ihnen, anspruchsvolle Kubernetes-Konfigurations- und Integrationsthemen zu lösen, beim Troubleshooting und dabei, die operative Effizienz zu steigern.

Sprechen Sie mit uns und erfahren Sie, wie wir Ihre Container-Orchestrierung für mehr Performance und niedrigere Kosten optimieren.