CodeBlanks Logo Icon CodeBlanks

Meydan okuma - StatefulSet

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-2

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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: 1Gi

Beklenen çı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

terminal
# buraya yaz

Örnek çözüm

terminal
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 anahtar

Beklenen çı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.

Soru
spec:
  serviceName: redis
  podManagementPolicy: ____
Cevap
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

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