Kubernetes Deployment einfach erklärt – Architektur, YAML-Beispiele, Rollouts & Best Practices

Ein Kubernetes Deployment ist das zentrale Objekt, um containerisierte Anwendungen zuverlässig, skalierbar und updatefähig zu betreiben. Es kümmert sich nicht nur darum, dass Pods laufen, sondern auch darum, wie sie aktualisiert, ersetzt und zurückgerollt werden.

In diesem Artikel lernst du ausführlich:

  • was ein Deployment in :contentReference[oaicite:0]{index=0} ist
  • wie Deployments mit ReplicaSets zusammenarbeiten
  • wie Rolling Updates & Rollbacks funktionieren
  • wie ein Deployment per YAML definiert wird
  • Best Practices aus der Praxis

1) Was ist ein Kubernetes Deployment?

Ein Deployment ist ein höheres Abstraktionsobjekt in Kubernetes, das den Lebenszyklus von Pods verwaltet. Es beschreibt deklarativ:

  • wie viele Pods laufen sollen
  • welches Container-Image verwendet wird
  • wie Updates durchgeführt werden
  • wie bei Fehlern zurückgerollt wird

Wichtig: Ein Deployment erstellt nicht direkt Pods, sondern erzeugt und verwaltet ReplicaSets, die wiederum die Pods kontrollieren.

Merksatz: Deployment = gewünschter Zustand + Update-Strategie + Versionsverwaltung

2) Warum Deployments so wichtig sind

In produktiven Kubernetes-Clustern werden Deployments fast immer eingesetzt, weil sie Probleme lösen, die mit reinen Pods oder ReplicaSets nicht sauber handhabbar sind.

Typische Aufgaben eines Deployments

  • automatische Pod-Replikation
  • Rolling Updates ohne Downtime
  • Rollback auf frühere Versionen
  • deklarative Konfiguration („Desired State“)
  • Skalierung per YAML oder kubectl

3) Deployment vs Pod vs ReplicaSet

ObjektAufgabeUpdate-Fähigkeit
PodEinzelner Laufzeitcontainer❌ keine
ReplicaSetHält eine Anzahl identischer Pods❌ keine Rollouts
DeploymentVerwaltet ReplicaSets & Updates✅ Rolling Update & Rollback

4) Beispiel: Einfaches Kubernetes Deployment

Das folgende Deployment startet 3 NGINX-Pods und stellt sicher, dass diese dauerhaft laufen.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80

Anwenden

kubectl apply -f nginx-deployment.yaml
kubectl get deploy
kubectl get pods

5) Wie ein Deployment intern funktioniert

Nach dem Anwenden passiert im Cluster Folgendes:

  1. Deployment wird im API-Server gespeichert
  2. Ein ReplicaSet wird erstellt
  3. ReplicaSet erzeugt Pods
  4. Kubelet startet Container auf Nodes

Ändert sich das Deployment (z. B. neues Image), erstellt Kubernetes ein neues ReplicaSet und fährt das alte kontrolliert herunter.

6) Rolling Updates erklärt

Standardmäßig verwendet ein Deployment die Strategie RollingUpdate. Das bedeutet:

  • neue Pods werden schrittweise gestartet
  • alte Pods werden schrittweise beendet
  • keine oder minimale Downtime

Beispiel: Image aktualisieren

kubectl set image deployment/nginx-deployment nginx=nginx:1.26
kubectl rollout status deployment/nginx-deployment

7) Rollback auf eine frühere Version

Einer der größten Vorteile von Deployments ist die integrierte Versionshistorie.

kubectl rollout history deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment

Innerhalb weniger Sekunden läuft wieder die vorherige, stabile Version.

8) Deployment skalieren

Per Kommando

kubectl scale deployment nginx-deployment --replicas=5

Per YAML

Ändere einfach:

spec:
  replicas: 5

9) Deployment und Service

Da Pods dynamisch sind, kombiniert man Deployments fast immer mit einem Service, um eine stabile Netzwerkadresse bereitzustellen.

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80

10) Best Practices für Kubernetes Deployments

  • Immer Deployments statt nackter Pods nutzen
  • Labels konsistent und eindeutig setzen
  • RollingUpdate bewusst konfigurieren
  • Ressourcen-Limits definieren
  • Readiness- & Liveness-Probes verwenden

11) Häufige Fehler & Troubleshooting

  • ImagePullBackOff → Image oder Registry prüfen
  • CrashLoopBackOff → Container-Logs analysieren
  • Pods Pending → Ressourcen oder Node-Selector prüfen
kubectl describe deployment nginx-deployment
kubectl logs <pod-name>

12) Fazit

Ein Kubernetes Deployment ist das Fundament moderner Kubernetes-Anwendungen. Es verbindet Replikation, Updates, Rollbacks und Skalierung in einem einzigen, deklarativen Objekt. Wer Deployments beherrscht, versteht Kubernetes auf produktivem Niveau.

Wenn du Kubernetes ernsthaft betreibst, lautet die Faustregel: Keine Anwendung ohne Deployment.

Nach oben scrollen