CodeBlanks Logo Icon CodeBlanks

StatefulSet YAML

StatefulSet YAML yapısını öğrenirsin.

StatefulSet YAML

StatefulSet YAML'ı Deployment'a benzer; ek olarak serviceName zorunludur. Bu, pod'lara DNS kaydı veren headless servisin adıdır:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db
spec:
  serviceName: db
  replicas: 3
  selector:
    matchLabels:
      app: db
  template:
    metadata:
      labels:
        app: db
    spec:
      containers:
        - name: postgres
          image: postgres:16
          ports:
            - containerPort: 5432

Headless servis

clusterIP: None olan servis sanal IP almaz; DNS sorgusu doğrudan pod IP'lerini döndürür ve her StatefulSet pod'u pod-adı.servis-adı biçiminde kendi kaydını alır. Böylece istemciler belirli bir kopyaya (ör. birincile) bağlanabilir:

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
    - port: 5432

# db-0.db.default.svc.cluster.local -> 10.244.1.12
# db-1.db.default.svc.cluster.local -> 10.244.2.15

Uygulama StatefulSet ve headless servis

Bir StatefulSet YAML'ı yaz: adı db, serviceName: db, replicas: 3; selector ve şablon etiketi app: db; container adı postgres, image postgres:16.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db
spec:
  serviceName: db
  replicas: 3
  selector:
    matchLabels:
      app: db
  template:
    metadata:
      labels:
        app: db
    spec:
      containers:
        - name: postgres
          image: postgres:16
          ports:
            - containerPort: 5432

Beklenen çıktı

statefulset.apps/db created

Soru ve cevaplar

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

1 StatefulSet'te serviceName neden zorunludur?

  • Etiketleri belirler
  • Her pod'a db-0.db gibi sabit bir DNS adı veren headless servisi belirtir Doğru cevap
  • Yük dengeleyici oluşturur
  • Dış IP verir

Açıklama: Servisin ayrıca oluşturulması gerekir; StatefulSet onu kendisi yaratmaz.

2 Servisi headless yap.

Soru
spec:
  clusterIP: ____
Cevap
spec:
  clusterIP: None

Açıklama: clusterIP: None sanal IP ayırmaz.

3 Eşleştir.

Kavram Anlamı
serviceName Headless servis adı
clusterIP: None Sanal IP yok
db-0.db Pod DNS adı
kind: StatefulSet apps/v1

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