StatefulSet YAML
- Docker & Kubernetes kursu
- İleri seviye
- Ders 14/70
- 4 dk
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.15Uygulama 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
# buraya yazÖrnek çözüm
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: 5432Beklenen çı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.
spec:
clusterIP: ____
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 |