Kubernetes Grundbefehle

7 Kernbefehle
Die wichtigsten kubectl-Befehle für die Kubernetes-Administration: kubectl get · kubectl describe · kubectl apply · kubectl delete · kubectl logs · kubectl exec · kubectl config Kubernetes ist die führende Plattform für die Orchestrierung von containerisierten Anwendungen. Diese Befehle sind essenziell für die tägliche Arbeit mit Pods, Deployments, Services und anderen Ressourcen.

kubectl get – Ressourcen auflisten

kubectl get <resource> [name] [Optionen]
kubectl get pods kubectl get pods -n kube-system kubectl get services -o wide kubectl get all

kubectl get listet Kubernetes-Ressourcen wie Pods, Services, Deployments, Nodes, ConfigMaps und vieles mehr auf.

Häufige Ressourcen

Ressource Abkürzung Beschreibung
pods po Container-Pods
services svc Netzwerk-Services
deployments deploy Deployment-Controller
nodes no Cluster-Knoten
namespaces ns Namespaces
configmaps cm Konfigurationsdaten
secrets - Geheime Daten
ingress ing Ingress-Ressourcen
persistentvolumes pv Persistente Volumes

Häufige Optionen

Option Beschreibung
-n, --namespace Namespace angeben (Standard: default)
-o wide Zusätzliche Informationen anzeigen
-o yaml Ausgabe als YAML
-o json Ausgabe als JSON
-w, --watch Änderungen live verfolgen
--selector Nach Labels filtern
Beispiele
kubectl get pods # Alle Pods im default-Namespace
kubectl get pods -n kube-system # System-Pods
kubectl get svc -o wide # Services mit IPs und Ports
kubectl get nodes -o yaml # Nodes als YAML
kubectl get all --selector app=nginx # Alle Ressourcen mit Label app=nginx
kubectl get pods -w # Pod-Status live verfolgen
Tipp: kubectl get all -n mynamespace zeigt die wichtigsten Ressourcen eines Namespaces auf einen Blick. Verwenden Sie --selector für gezielte Abfragen.

kubectl describe – Detaillierte Informationen

kubectl describe <resource> [name]
kubectl describe pod my-pod kubectl describe service my-service -n production kubectl describe node node-1

kubectl describe zeigt detaillierte Informationen zu einer bestimmten Ressource – inklusive Events, Labels, Selektoren und Status.

Beispiele
kubectl describe pod nginx-7b8c9d5f6-abc12 # Details zu einem Pod
kubectl describe deployment myapp # Deployment-Details
kubectl describe service my-service # Service-Details
kubectl describe node worker-1 # Node-Ressourcen und Pods
# Wichtige Bereiche in der Ausgabe:
Events: # Letzte Ereignisse (fehlerhafte Pods, Image-Pull-Fehler)
Conditions: # Statusbedingungen (Ready, PodScheduled)
Mounts: # Volume-Mounts
Tipp: kubectl describe ist das erste Werkzeug zur Fehlersuche. Die Events-Sektion zeigt oft die Ursache von Problemen (z.B. ImagePullBackOff, OOMKilled).

kubectl apply – Ressourcen erstellen/aktualisieren

kubectl apply -f <file> [Optionen]
kubectl apply -f deployment.yaml kubectl apply -f ./manifests/ kubectl apply -f https://example.com/manifest.yaml

kubectl apply erstellt oder aktualisiert Kubernetes-Ressourcen aus YAML- oder JSON-Manifesten. Es ist der deklarative Standard zur Verwaltung von Ressourcen.

Beispiele
kubectl apply -f deployment.yaml # Deployment erstellen/aktualisieren
kubectl apply -f service.yaml # Service erstellen
kubectl apply -f configmap.yaml # ConfigMap erstellen
kubectl apply -f ./manifests/ # Alle YAMLs im Ordner anwenden
kubectl apply -f https://example.com/app.yaml # Von URL anwenden
kubectl apply -f deployment.yaml --dry-run=client # Trockenlauf (nur prüfen)
Tipp: kubectl apply verwendet einen "Last Applied"-Annotation, um Änderungen zu verfolgen. Im Gegensatz zu kubectl create kann es Ressourcen aktualisieren, ohne sie zu löschen.

kubectl delete – Ressourcen löschen

kubectl delete <resource> [name] [Optionen]
kubectl delete pod my-pod kubectl delete deployment myapp kubectl delete -f deployment.yaml kubectl delete pods --all

kubectl delete löscht Kubernetes-Ressourcen – entweder nach Name, aus einer Datei oder mit Selektoren.

Beispiele
kubectl delete pod nginx-7b8c9d5f6-abc12 # Einzelnen Pod löschen
kubectl delete deployment myapp # Deployment löschen
kubectl delete service my-service # Service löschen
kubectl delete -f deployment.yaml # Ressource aus Datei löschen
kubectl delete pods --selector app=nginx # Alle Pods mit Label app=nginx
kubectl delete pods --all # Alle Pods im Namespace (⚠️ vorsichtig!)
kubectl delete namespace myns # Namespace löscht alle enthaltenen Ressourcen
⚠️ Warnung: Das Löschen eines Deployments oder Namespaces entfernt alle zugehörigen Ressourcen. Verwenden Sie kubectl delete --dry-run=client, um zu prüfen, was gelöscht wird.

kubectl logs – Container-Logs anzeigen

kubectl logs <pod> [container] [Optionen]
kubectl logs my-pod kubectl logs my-pod -f kubectl logs my-pod -c sidecar-container kubectl logs my-pod --tail=50

kubectl logs zeigt die Logs eines Pod-Containers an. Bei Pods mit mehreren Containern muss der Container mit -c angegeben werden.

Beispiele
kubectl logs my-pod # Logs des Pods anzeigen
kubectl logs my-pod -f # Logs live verfolgen
kubectl logs my-pod -c sidecar # Sidecar-Container-Logs
kubectl logs my-pod --tail=20 # Letzte 20 Zeilen
kubectl logs my-pod --since=1h # Logs der letzten Stunde
kubectl logs deployment/myapp # Logs des ersten Pods im Deployment
Tipp: kubectl logs -f pod funktioniert wie tail -f. Mit --previous können Sie Logs des letzten, neu gestarteten Containers anzeigen – nützlich bei CrashLoops.

kubectl exec – Befehle im Container ausführen

kubectl exec -it <pod> -- <befehl>
kubectl exec -it my-pod -- /bin/bash kubectl exec my-pod -- ls -la /app kubectl exec -it my-pod -c sidecar -- sh

kubectl exec führt einen Befehl in einem laufenden Container aus. Mit -it öffnen Sie eine interaktive Shell.

Beispiele
kubectl exec -it my-pod -- /bin/bash # Shell im Pod öffnen
kubectl exec my-pod -- env # Umgebungsvariablen anzeigen
kubectl exec my-pod -c sidecar -- cat /var/log/app.log # Datei in Sidecar-Container lesen
kubectl exec deployment/myapp -- nginx -t # Nginx-Konfiguration testen
kubectl exec -it my-pod -- sh -c "echo 'Hello' > /tmp/test.txt" # Datei erstellen
Tipp: kubectl exec -it pod -- /bin/bash ist der Standard-Weg, um in einen laufenden Container zu gelangen. Für Alpine-Images verwenden Sie /bin/sh statt /bin/bash.

kubectl config – Kontext und Cluster verwalten

kubectl config [Subbefehl]
kubectl config get-contexts kubectl config use-context prod-cluster kubectl config view

kubectl config verwaltet die kubectl-Konfiguration für den Zugriff auf verschiedene Kubernetes-Cluster, Kontexte und Benutzer.

Beispiele
kubectl config view # Aktuelle Konfiguration anzeigen
kubectl config get-contexts # Alle verfügbaren Kontexte
kubectl config current-context # Aktueller Kontext
kubectl config use-context prod-cluster # Zu prod-cluster wechseln
kubectl config set-context dev --namespace=development # Kontext mit Namespace setzen
kubectl config set-credentials user --token=TOKEN # Benutzer mit Token setzen
kubectl config delete-context old-context # Kontext löschen
Tipp: Verwenden Sie kubectl config set-context --current --namespace=myns, um den Standard-Namespace für den aktuellen Kontext zu ändern – das spart Tipparbeit.

Kubernetes Grundkonzepte im Überblick

Pod Kleinste Einheit – ein oder mehrere Container
kubectl get pods
Deployment Replikate und Rollouts verwalten
kubectl get deployments
Service Stabiler Endpunkt für Pods
kubectl get services
Namespace Virtuelle Cluster innerhalb des Clusters
-n namespace
Node Worker-Knoten im Cluster
kubectl get nodes
Ingress HTTP-Routing ins Cluster
kubectl get ingress

Quick Summary

kubectl get
Ressourcen auflisten
kubectl describe
Details anzeigen
kubectl apply
Ressourcen anwenden
kubectl delete
Ressourcen löschen
kubectl logs
Logs anzeigen
kubectl exec
Befehl im Container
kubectl config
Kontext verwalten
kubectl get pods -n namespace · kubectl apply -f deployment.yaml · kubectl logs -f pod