CodeBlanks Logo Icon CodeBlanks

StatefulSet nedir?

StatefulSet'in durumlu uygulama yönettiğini öğrenirsin.

StatefulSet nedir?

StatefulSet, durumlu (stateful) uygulamalar için Deployment'ın karşılığıdır: veritabanları, mesaj kuyrukları, Kafka, Elasticsearch. Deployment'tan üç farkı vardır:

  • Sabit kimlik: pod adları sıralıdır (db-0, db-1) ve yeniden oluşunca aynı adı alır.
  • Kalıcı depolama: her pod kendi PersistentVolumeClaim'ine sahiptir ve pod yeniden oluşunca aynı diske bağlanır.
  • Sıralı işlem: pod'lar sırayla başlar ve tersten kapanır.
$ kubectl get pods -l app=db
NAME   READY   STATUS    RESTARTS   AGE
db-0   1/1     Running   0          10m
db-1   1/1     Running   0          9m
db-2   1/1     Running   0          8m

Ne zaman StatefulSet?

Kopyaları birbirinin yerine geçebilen uygulamalar (web, API) için Deployment kullanılır. Kopyaların kimliğinin önemli olduğu durumlarda StatefulSet gerekir: birincil/yedek ayrımı olan veritabanları, kendi kimliğiyle kümeye katılan düğümler (etcd, ZooKeeper), her kopyanın kendi verisini tuttuğu sistemler.

Deployment:   web-7c5b9f-abcde  web-7c5b9f-fghij   (birbirinin yerine geçer)
StatefulSet:  db-0 (birincil)    db-1 (yedek)       (her biri farklı)

Üretimde çoğu zaman StatefulSet'i elle yazmak yerine bir operator (ör. CloudNativePG) kullanılır.

Uygulama StatefulSet'i incele

Üç komut yaz: StatefulSet'leri listele; app=db etiketli pod'ları listele; db StatefulSet'ini ayrıntılı göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get sts
kubectl get pods -l app=db
kubectl describe sts db

Beklenen çıktı

NAME   READY   AGE
db     3/3     10m
NAME   READY   STATUS    RESTARTS   AGE
db-0   1/1     Running   0          10m
db-1   1/1     Running   0          9m
db-2   1/1     Running   0          8m
Name:               db
Replicas:           3 desired | 3 total
Update Strategy:    RollingUpdate

Soru ve cevaplar

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

1 db-1 pod'u silinirse ne olur?

  • db-3 oluşur
  • Verisi silinir
  • Aynı adla (db-1) yeniden oluşur ve aynı diske bağlanır Doğru cevap
  • Rastgele adlı yeni bir pod oluşur

Açıklama: Kimlik ve depolama pod'dan bağımsız olarak korunur.

2 StatefulSet'leri kısaltmayla listele.

Soru
kubectl get ____
Cevap
kubectl get sts

Açıklama: sts statefulsets'in kısaltmasıdır.

3 Eşleştir.

Kavram Anlamı
db-0 Sıralı sabit ad
her pod kendi PVC'si Kalıcı depolama
sıralı başlatma db-0, sonra db-1
Deployment Birbirinin yerine geçen kopyalar

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