StatefulSet ile veritabanı
- Docker & Kubernetes kursu
- İleri seviye
- Ders 62/70
- 4 dk
Veritabanını StatefulSet olarak yazarsın.
StatefulSet ile veritabanı
Veritabanı tek kopyalı bir StatefulSet'e taşınır: sabit adı (db-0), kalıcı diski (data-db-0) ve headless servisi olur. Şablon, disk boyutunu values'tan alır:
# templates/db-statefulset.yaml (özet)
spec:
serviceName: db
replicas: 1
template:
spec:
containers:
- name: postgres
image: postgres:16
envFrom:
- secretRef: {name: db-gizli}
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumeClaimTemplates:
- metadata: {name: data}
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: {{ .Values.db.storage }}Veritabanını sınamak
Kurulumdan sonra veritabanının hazır olduğu, diskin bağlandığı ve sabit adın çözüldüğü sınanır:
kubectl rollout status sts/db -n magaza
kubectl get pvc -n magaza
kubectl exec -n magaza db-0 -- pg_isready -U postgres
/var/run/postgresql:5432 - accepting connections
kubectl exec -n magaza deploy/api -- getent hosts db-0.dbUygulama Veritabanını doğrula
Üç komut yaz: magaza'da sts/db'nin dağıtımının bitmesini bekle; magaza'daki PVC'leri listele; magaza'da db-0 pod'unda pg_isready -U postgres çalıştır.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl rollout status sts/db -n magaza
kubectl get pvc -n magaza
kubectl exec -n magaza db-0 -- pg_isready -U postgresBeklenen çıktı
partitioned roll out complete: 1 new pods have been updated... NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS data-db-0 Bound pvc-5e6f… 20Gi RWO hizli-ssd /var/run/postgresql:5432 - accepting connections
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu yapıda helm uninstall magaza çalıştırılırsa veritabanı verisi ne olur?
- Başka namespace'e taşınır
- PVC (data-db-0) kalır; veri korunur Doğru cevap
- Hemen silinir
- Yedeğe taşınır
Açıklama: volumeClaimTemplates'ten oluşan PVC'ler Helm release'inin parçası değildir.
2 Disk boyutunu values'tan al.
storage: {{ .____.db.storage }}
storage: {{ .Values.db.storage }}
Açıklama: .Values values dosyalarındaki değerlerdir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
db-0 |
Sabit pod adı |
data-db-0 |
Kalıcı disk |
pg_isready |
Veritabanı hazır mı |
db-0.db |
Pod DNS adı |