“Kubernetes ist großartig für Stateless-Anwendungen.” Das haben wir schon oft gehört. Aber was ist mit Datenbanken, Message Brokern? PersistentVolumes und StorageClasses bringen Kubernetes in die Welt der Stateful Workloads.
PV, PVC, StorageClass – das Trio, das Sie kennen müssen¶
PersistentVolume (PV) ist ein Stück Storage im Cluster. PersistentVolumeClaim (PVC) ist eine Storage-Anforderung einer Anwendung. StorageClass definiert, wie PVs dynamisch erstellt werden.
Dynamisches Provisioning ist der Schlüssel. StorageClass provisioniert automatisch ein neues Volume, wenn ein PVC erstellt wird.
Unser Setup: Ceph On-Premise, EBS in der Cloud¶
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-rbd
provisioner: kubernetes.io/rbd
parameters:
monitors: 10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789
pool: kube
reclaimPolicy: Retain
StatefulSets + PVC = Stateful-Anwendungen¶
StatefulSet garantiert stabilen Hostnamen und persistenten Storage für jeden Pod. Pod postgres-0 bekommt immer PVC data-postgres-0. Auch nach einem Neustart verbindet sich der Pod mit demselben Volume.
Wir betreiben PostgreSQL, Redis und Elasticsearch auf diese Weise. Es ist nicht ohne Probleme – ein Node-Ausfall mit lokalem Storage bedeutet manuellen Eingriff. Aber für die meisten Fälle funktioniert es zuverlässig.
Backup-Strategie¶
- Volume Snapshots (Ceph unterstützt das nativ)
- Anwendungs-Backups (pg_dump für PostgreSQL)
- reclaimPolicy: Retain – niemals Delete für Produktionsdaten
- Testen Sie den Restore – ein Backup ohne verifizierten Restore ist eine Illusion
Stateful Workloads in Kubernetes sind Realität¶
PersistentVolumes und StatefulSets bringen Kubernetes über die Grenzen von Stateless Microservices hinaus. Mit einem guten Storage-Backend und einer durchdachten Strategie funktioniert es auch für Datenbanken.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns