TL;DR
Was: Container-Orchestrierungsplattform zur Automatisierung von Deployment, Skalierung und Verwaltung.
Warum: Container im großen Maßstab mit Hochverfügbarkeit, Rolling Updates und Selbstheilung betreiben.
Quick Start
kubectl installieren:
# macOS
brew install kubectl
# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Überprüfen
kubectl version --client
Minikube installieren (lokaler Cluster):
# macOS
brew install minikube
# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Cluster starten:
minikube start
# Überprüfen
kubectl get nodes
Eine App deployen:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
minikube service nginx
Cheatsheet
| Befehl | Beschreibung |
|---|---|
kubectl get pods | Pods auflisten |
kubectl get services | Services auflisten |
kubectl get deployments | Deployments auflisten |
kubectl describe pod NAME | Pod-Details |
kubectl logs POD | Pod-Logs anzeigen |
kubectl exec -it POD -- bash | Shell in Pod öffnen |
kubectl apply -f file.yaml | Konfiguration anwenden |
kubectl delete -f file.yaml | Ressourcen löschen |
kubectl scale deploy NAME --replicas=3 | Deployment skalieren |
kubectl rollout restart deploy NAME | Deployment neu starten |
Gotchas
Pod stuck in Pending
# Events prüfen
kubectl describe pod POD_NAME
# Häufige Ursachen:
# - Unzureichende Ressourcen → Nodes hinzufügen oder Anforderungen reduzieren
# - Image Pull Error → Image-Namen und Registry-Zugang prüfen
CrashLoopBackOff
# Logs prüfen
kubectl logs POD_NAME --previous
# Häufige Ursachen:
# - App-Crash → Anwendungscode reparieren
# - Fehlende Konfiguration → ConfigMaps/Secrets prüfen
Can’t connect to cluster
# Aktuellen Kontext prüfen
kubectl config current-context
# Kontexte auflisten
kubectl config get-contexts
# Kontext wechseln
kubectl config use-context CONTEXT_NAME
Apply vs Create
kubectl create # Neue Ressource erstellen (schlägt fehl wenn vorhanden)
kubectl apply # Erstellen oder aktualisieren (idempotent)
# Für Produktion immer apply bevorzugen
kubectl apply -f deployment.yaml