Reconcile döngüsü
- Docker & Kubernetes kursu
- Uzman
- Ders 5/47
- 4 dk
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 nameUygulama 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
# buraya yazÖrnek çözüm
kubectl get deploy web -o jsonpath='{.metadata.generation} {.status.observedGeneration}'
kubectl scale deploy web --replicas=5
kubectl get rs -l app=web -wBeklenen çı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.
kubectl get pods ____ -o name
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ü |