CodeBlanks Logo Icon CodeBlanks

Reconcile döngüsü

Denetleyici reconcile döngüsünü öğrenirsin.

Reconcile döngüsü

Kubernetes'in tüm denetleyicileri aynı deseni izler: uzlaştırma (reconcile) döngüsü. Denetleyici istenen durumu (spec) ve gerçek durumu (status, dünyadaki nesneler) okur, farkı hesaplar ve farkı kapatacak en küçük eylemi yapar; sonra yeniden başlar.

for {
    istenen := spec oku
    gercek  := dünyayı gözle
    if istenen != gercek {
        farkı kapatacak eylemi yap   // pod oluştur, sil, güncelle
    }
    status'u güncelle
}

Döngü seviye tetiklidir (level-triggered): olayları değil, son durumu esas alır. Bir olay kaçırılsa bile bir sonraki turda fark yakalanır.

spec, status ve watch

Her nesnenin spec'ini kullanıcı yazar, status'unu denetleyici. Denetleyiciler API'yi sürekli sorgulamak yerine watch ile değişiklik akışını dinler; resourceVersion hangi sürümden itibaren izlendiğini belirtir. observedGeneration, denetleyicinin spec'in hangi sürümünü işlediğini gösterir:

$ kubectl get deploy web -o jsonpath='{.metadata.generation} {.status.observedGeneration}'
7 7     # denetleyici son spec'i işledi
$ kubectl get pods --watch -o name

Uygulama Uzlaşmayı gözle

Üç komut yaz: web deployment'ının generation ve observedGeneration değerlerini jsonpath='{.metadata.generation} {.status.observedGeneration}' ile yazdır; web'i 5 kopyaya ölçekle; ReplicaSet'leri -l app=web ile canlı izle.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get deploy web -o jsonpath='{.metadata.generation} {.status.observedGeneration}'
kubectl scale deploy web --replicas=5
kubectl get rs -l app=web -w

Beklenen çıktı

7 7
deployment.apps/web scaled
NAME            DESIRED   CURRENT   READY   AGE
web-7c5b9f6d8   5         3         3       2h
web-7c5b9f6d8   5         5         4       2h
web-7c5b9f6d8   5         5         5       2h

Soru ve cevaplar

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

1 Seviye tetikli tasarımın olay tetikliye göre avantajı nedir?

  • Kaçırılan olaylar kalıcı tutarsızlığa yol açmaz; son durum yeniden okunur Doğru cevap
  • Daha az kod
  • Daha az bellek
  • Ağ gerektirmez

Açıklama: Denetleyici çökse bile yeniden başlayınca doğru duruma ulaşır.

2 Değişiklik akışını dinle.

Soru
kubectl get pods ____ -o name
Cevap
kubectl get pods --watch -o name

Açıklama: --watch (-w) API watch'ını kullanır.

3 Eşleştir.

Kavram Anlamı
spec Kullanıcının istediği
status Denetleyicinin gözlediği
watch Değişiklik akışı
observedGeneration İşlenen spec sürümü

Uzman bölümündeki tüm dersler