Deployment vs StatefulSet

Deployment vs StatefulSet

Deployments und StatefulSets sind zwei verschiedene Controller in Kubernetes, die zur Verwaltung von Pods und deren Lifecycle dienen. Sie unterscheiden sich maßgeblich im Hinblick auf Zustandsbehandlung, Namensgebung, Speicher und Skalierung.

Ein Deployment ist die Standard-Option für zustandslose Anwendungen, bei denen es keine Rolle spielt, auf welchem Pod der Service läuft. Ein StatefulSet hingegen ist für zustandsbehaftete Anwendungen konzipiert, die stabile Identitäten, persistente Speicherzuordnungen und geordnete Starts benötigen – etwa bei Datenbanken oder Message Queues.

Unterschiede im Überblick:

MerkmalDeploymentStatefulSet
Pod-Namenzufälligstatisch (z. B. app-0, app-1)
Speichernicht persistent / gemeinsamdedizierter PersistentVolume pro Pod
Start-Reihenfolgebeliebiggeordnete Start-/Stopreihenfolge
Skalierungleicht, da zustandsloskomplexer, da Zustand erhalten bleibt

Typische Einsatzszenarien:

  • Deployment: Webserver, API-Gateways, Microservices
  • StatefulSet: MySQL, PostgreSQL, Redis, Kafka

Verwandte Begriffe:

Pod, PersistentVolume, Container, Kubernetes, ReplicaSet, VolumeClaim