DevOps Practitioner · Modül 1: Kubernetes workload yönetimi
Kubernetes API ve Bildirimsel Model
Kubernetes komut çalıştırmaz, niyeti kaydeder. İstenen durumu nesnelerle bildirirsin, denetleyiciler gerçek ile istenen arasındaki farkı görür ve fark kapanana kadar çalışır.
10 dk okuma
Kazanımlar
- Kubernetes nesnesini açıklamak: isim, spec, status ve etiketler
- Uzlaşım döngüsünü anlatmak: denetleyiciler gerçek durumu istenene yaklaştırır
- Manifest okuyup her nesnenin hangi denetleyiciye ait olduğunu adlandırmak
- Çalışan nesne elle düzenlenince ne olacağını öngörmek
Neden önemli
Yeni biri kümeye girip aksayan podu elle siler. Saniyeler sonra aynı pod yeni isimle belirir ve yeni başlayan kümenin perili olduğunu düşünür. Perili olan yoktur: ReplicaSet denetleyicisi istenenden bir replika eksik görmüş ve yenisini açmıştır. Kubernetes'teki her sürpriz bu modele döner. Biri, insan veya denetleyici, durumu bildirir; denetleyiciler uzlaştırır. Bir nesnenin hangi denetleyiciye ait olduğunu adlandıramazsan kümenin sırada ne yapacağını öngöremezsin ve her komut tahmindir.
Kavramlar
API sunucusu tek kapıdır: tüm okuma ve yazma oradan geçer, arkasındaki depo bildirilen durumu saklar. Kubernetes nesnesi üstveri (isim, alan, etiket), spec (yazdığın istenen durum) ve status (denetleyicilerin bildirdiği gözlenen durum) taşır. Etiketler bağlantıdır: Servisler podları etiketle seçer, Deploymentlar ReplicaSetleri etiketle yönetir; yanlış etiket zinciri sessizce koparır.
Denetleyiciler karşılaştır ve onar döngüsüyle çalışır. Deployment denetleyicisi ReplicaSet sayısını doğru tutar, ReplicaSet denetleyicisi pod sayısını, uç nokta denetleyicisi Servis hedef listesini. Hiçbiri bir kez çalışıp çıkmaz; her biri izler, gerçeği istenenle karşılaştırır, harekete geçer. Elle müdahale notu: kubectl edit canlı nesneyi API sunucusunda günceller ve başka bir şey o alanı yeniden yazana kadar kalır. Kubernetes tek başına dizüstündeki manifest dosyasını yeniden okuyup düzenlemeyi geri almaz. Düzenleme, alan bir denetleyiciye ya da kendi istenen durumunu yeniden uygulayan bir GitOps aracına aitse kaybolur (örneğin Deployment şablonundan podları yeniden üretir ya da GitOps ajanı repoyu yeniden uygular). Kural manifest-önceliktir: niyet repoda durur, küme bu dosyaların izdüşümüdür, elle düzenleme kalıcı değişim değil teşhis içindir.
Emir kipindeki komutlar aynı nesneleri yazar ama repoda niyet kaydı bırakmaz. M16 bunun borcunun neden biriktiğini gösterir; burada kurulacak alışkanlık manifest-önceliktir: önemli nesne dosya olarak vardır, incelenip sürümlenir ve küme bu dosyaların izdüşümüdür.
Uygulamalı örnek
Demo alanında üç replikalı web Deployment çalışır. Öğrenci imaj etiketini değiştiren manifesti uygular ve izler: Deployment yeni şablonla yeni ReplicaSet açar, eskisini teker teker kapatırken yenisini teker teker açar; Servis boyunca trafiği hazır podlara gönderir. Sonra öğrenci canlı pod etiketini elle değiştirir ve Servisin o podu saniyeler içinde uç nokta listesinden düşürdüğünü, sonraki uygulamada geri getirdiğini görür. İki komut, tek model: içeride bildirilen durum, dışarıda uzlaşım.
Yaygın yanlış hamle
Podlara evcil hayvan muamelesi: elle pod açmak, canlı nesneleri elle düzenlemek ve belirti yer değiştirene kadar şeyleri yeniden başlatmak. Pod sistemin en ucuz, en atılabilir birimidir; dosyadan silip yeniden açamadığın her şey tanımsız demektir. L25 labı bunu somutlaştırır: CrashLoopBackOff nedenini podu yeniden başlatarak değil, sahiplik zincirinden yapılandırma nedenine izleyerek bulur.
Mini kontrol
4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.
Ders geri bildirimi
Henüz yayında geri bildirim yok.
Geri bildirim yazmak için giriş yap ve dersi tamamla.
Kaynaklar
Alıştırma
Yerel kümede dosyadan iki replikalı Deployment uygula, bir podu elle sil; yerine geleni ve taşıdığı sahiplik kaydını not et.
Geçme kriterleri
Yeni isimli yeni pod vardır, sahiplik kaydı ReplicaSeti gösterir ve kayıtta istenen replika sayısının hiç bozulmadığı yazar.