08 Stateful Postgres
Αυτό το lab παρουσιάζει μια stateful βάση δεδομένων με StatefulSet, Headless Service, PVC, αρχικό SQL, backup CronJob και NetworkPolicies.
Έλεγχος
kubectl apply --dry-run=client -f manifests/
Εκτέλεση
kubectl apply -f manifests/
kubectl rollout status statefulset/postgres -n postgres-lab
kubectl get statefulset,svc,pvc,cronjob -n postgres-lab
Προαιρετικά, μπορείτε να δημιουργήσετε αμέσως ένα backup από το CronJob:
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
Σημεία μάθησης
- Το
StatefulSetδίνει στα Pods σταθερά ονόματα και συνδέει PVCs με replicas. - Ένα Headless Service προσφέρει σταθερά DNS ονόματα για stateful Pods.
- Το
PGDATAαποτρέπει προβλήματα με καταλόγους που δημιουργούνται αυτόματα στο PVC. - Τα backup Jobs χρειάζονται δικούς τους πόρους, Secrets, δικαιώματα δικτύου και σαφώς καθορισμένα όρια αποτυχίας.
- Οι NetworkPolicies πρέπει να ορίζουν χωριστά το Ingress και το Egress.
Cleanup
kubectl delete namespace postgres-lab
Τα PVCs διαγράφονται μαζί με το Namespace. Σε πραγματικά περιβάλλοντα, το storage cleanup αποφασίζεται ξεχωριστά και συνειδητά.