Meydan okuma - StatefulSet
- Docker & Kubernetes kursu
- İleri seviye
- Ders 67/70
- 5 dk
VolumeClaimTemplate'li bir StatefulSet yazarsın.
Meydan okuma: üç düğümlü kume
Redis'i üç kopyalı bir StatefulSet olarak çalıştıracaksın: her kopyanın kendi diski ve sabit DNS adı olacak; kopyalar paralel başlayacak (birbirini beklemeleri gerekmiyor). Sonra kimliği ve kalıcılığı sınayacaksın: bir pod silinince aynı adla ve aynı veriyle dönmeli.
redis-0.redis redis-1.redis redis-2.redis
data-redis-0 data-redis-1 data-redis-2Uygulama StatefulSet
Bir StatefulSet YAML'ı yaz: adı redis, serviceName: redis, replicas: 3, podManagementPolicy: Parallel; selector ve şablon etiketi app: redis; container adı redis, image redis:7, data'yı /data'ya bağlar; volumeClaimTemplates'te data adlı, ReadWriteOnce, 1Gi şablon.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
serviceName: redis
replicas: 3
podManagementPolicy: Parallel
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:7
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1GiBeklenen çıktı
statefulset.apps/redis created
Uygulama Kalıcılığı sına
Dört komut yaz: redis-1'de redis-cli set anahtar deger çalıştır; redis-1 pod'unu sil; app=redis etiketli pod'ları listele; redis-1'de redis-cli get anahtar çalıştır.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl exec redis-1 -- redis-cli set anahtar deger
kubectl delete pod redis-1
kubectl get pods -l app=redis
kubectl exec redis-1 -- redis-cli get anahtarBeklenen çıktı
OK pod "redis-1" deleted NAME READY STATUS RESTARTS AGE redis-0 1/1 Running 0 10m redis-1 1/1 Running 0 6s redis-2 1/1 Running 0 10m deger
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 podManagementPolicy: Parallel seçmenin bu senaryodaki faydası nedir?
- Diskler birleşir
- DNS kapanır
- Üç pod da beklemeden aynı anda başlar; açılış hızlanır Doğru cevap
- Veri paylaşılır
Açıklama: Sabit kimlik ve diskler yine korunur; yalnızca sıra beklenmez.
2 Pod'ları paralel başlat.
spec:
serviceName: redis
podManagementPolicy: ____
spec:
serviceName: redis
podManagementPolicy: Parallel
Açıklama: Parallel sıra beklemez.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
redis-0 |
Sabit ad |
data-redis-0 |
Kalıcı disk |
redis-0.redis |
DNS adı |
Parallel |
Aynı anda başlat |