Kubernetes

Containerisierte Anwendungen im großen Maßstab orchestrieren - automatisiertes Deployment, Skalierung und Verwaltung über Cluster

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

BefehlBeschreibung
kubectl get podsPods auflisten
kubectl get servicesServices auflisten
kubectl get deploymentsDeployments auflisten
kubectl describe pod NAMEPod-Details
kubectl logs PODPod-Logs anzeigen
kubectl exec -it POD -- bashShell in Pod öffnen
kubectl apply -f file.yamlKonfiguration anwenden
kubectl delete -f file.yamlRessourcen löschen
kubectl scale deploy NAME --replicas=3Deployment skalieren
kubectl rollout restart deploy NAMEDeployment 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

Next Steps