08 Stateful Postgres
Dieses Lab zeigt eine zustandsbehaftete Datenbank mit StatefulSet, Headless Service, PVC, Init-SQL, Backup-CronJob und NetworkPolicies.
Prüfen
kubectl apply --dry-run=client -f manifests/
Ausführung
kubectl apply -f manifests/
kubectl rollout status statefulset/postgres -n postgres-lab
kubectl get statefulset,svc,pvc,cronjob -n postgres-lab
Optional kann ein Backup sofort aus dem CronJob erzeugt werden:
kubectl create job manual-postgres-backup \
--from=cronjob/postgres-backup \
-n postgres-lab
kubectl wait --for=condition=complete job/manual-postgres-backup -n postgres-lab --timeout=120s
kubectl logs -n postgres-lab job/manual-postgres-backup
Lernpunkte
StatefulSetgibt Pods stabile Namen und bindet PVCs an Replikas.- Ein Headless Service ist für stabile DNS-Namen zustandsbehafteter Pods nützlich.
PGDATAvermeidet Probleme mit automatisch angelegten Verzeichnissen im PVC.- Backup-Jobs brauchen eigene Ressourcen, Secrets, Netzwerkfreigaben und Fehlergrenzen.
- NetworkPolicies müssen Ingress und Egress getrennt modellieren.
Cleanup
kubectl delete namespace postgres-lab
PVCs werden mit dem Namespace gelöscht. In echten Umgebungen wird Storage-Cleanup bewusst separat entschieden.