CodeBlanks Logo Icon CodeBlanks

VolumeClaimTemplate

volumeClaimTemplates ile kalıcı depolamayı öğrenirsin.

VolumeClaimTemplate

volumeClaimTemplates, her pod için ayrı bir PersistentVolumeClaim (PVC) şablonudur. 3 kopyalı StatefulSet data-db-0, data-db-1, data-db-2 PVC'lerini oluşturur. Pod silinse de PVC kalır ve yeni pod aynı PVC'ye bağlanır:

spec:
  template:
    spec:
      containers:
        - name: postgres
          image: postgres:16
          volumeMounts:
            - name: data
              mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 10Gi

PVC'leri görmek

PVC adları şablon-adı-pod-adı biçimindedir. Her biri bir PersistentVolume'e bağlanır (Bound):

$ kubectl get pvc -l app=db
NAME        STATUS   VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS
data-db-0   Bound    pvc-3f2a…       10Gi       RWO            standard
data-db-1   Bound    pvc-8d1e…       10Gi       RWO            standard
data-db-2   Bound    pvc-c4b7…       10Gi       RWO            standard

Ölçek küçültülünce (3 → 2) data-db-2 silinmez; tekrar büyütülünce db-2 aynı veriyle döner.

Uygulama Kalıcı depolama ekle

Bir StatefulSet'in volumeClaimTemplates bölümünü yaz (volumeClaimTemplates: ile başlayarak): şablon adı data; accessModes: ["ReadWriteOnce"]; resources.requests.storage: 10Gi.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi

Beklenen çıktı

statefulset.apps/db created
$ kubectl get pvc
NAME        STATUS   CAPACITY   ACCESS MODES
data-db-0   Bound    10Gi       RWO

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 StatefulSet silinince PVC'lere varsayılan olarak ne olur?

  • Hemen silinir
  • Başka StatefulSet'e taşınır
  • Boşaltılır
  • Kalır; veriyi korumak için elle silinmeleri gerekir Doğru cevap

Açıklama: persistentVolumeClaimRetentionPolicy bu davranışı değiştirebilir.

2 Her pod için PVC şablonunu tanımla.

Soru
spec:
  ____:
    - metadata:
        name: data
Cevap
spec:
  volumeClaimTemplates:
    - metadata:
        name: data

Açıklama: volumeClaimTemplates StatefulSet'e özeldir.

3 Eşleştir.

Kavram Anlamı
volumeClaimTemplates Pod başına PVC
data-db-0 PVC adı
ReadWriteOnce Tek node yazar
Bound PV'ye bağlı

İleri seviye bölümündeki tüm dersler