Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Kubernetes’in Mimarisi Nasıldır?

Merhaba,

Bu içeriğimizde, bir önceki Kubernetes Nedir? Temel Kavramları Nelerdir? başlıklı makalemizde konu edindiğimiz Kubernetes teknolojisinin mimarisel yapısını değerlendirecek ve bu minvalde Kubernetes’in kritik bileşenlerini de masaya yatırıyor olacağız.

Kubernetes Mimarisi

Kubernetes, Master Node (Control Plane) ve Worker Node‘lardan oluşan client-server mimarisiyle birlikte gelen bir teknolojidir. Bu iki yapı arasındaki etkileşim, sistemin hem merkezi olarak yönetilmesini hem de distributed bir şekilde çalışmasını sağlamaktadır.

Control Plane; API Server, controller management, scheduler ve etcd database gibi sistemin yönetim bileşenlerini barındıran ve tüm karar verme, orkestrasyon ve durum yönetimi gibi süreçlerden sorumlu olan cluster’ın beynidir.

Worker Node‘lar ise uygulamaların konteyner’larının çalıştığı fiziksel ya da sanal makinelerdir. Master Node ile iletişimi sağlayan kubelet aracılığıyla yönetilmekte ve ağ trafiğini düzenleyen kube-proxy bileşenini içererek, Docker gibi bir container runtime’ı kullanıp konteyner’leri yürütmektedir.

Kubernetes Component’leri

Kubernetes mimarisini derinden anlamak ve sistem yönetiminde ilerleyebilmek için sistemin hem merkezi olarak yönetilmesini hem de dağıtık bir şekilde çalışmasını sağlayan Control Plane Component ve Worker Node Component yapılarını hususi olarak incelemekte fayda görmekteyim.

Control Plane Component

Control Plane, temel olarak bir cluster’ın genel sağlığını yönetmemize yardımcı olan çeşitli bileşenlerin bir koleksiyonudur. Misal olarak; yeni Pod’lar oluşturmak, var olanları yok etmek ya da Pod’ları ölçeklendirmek vs. gibi işlevler bu component üzerinden cereyan etmektedir. Bu component içerisindeki alt bileşenler ise aşağıdaki gibidir;

Worker Node Components

Bu component’ler ise Kubernetes cluster’ının asıl yükünü çeken Node’lardır. Her bir Node, birden fazla Pod barındırabilir ve her Pod’un içinde bir veya birden fazla konteyner çalışabilmektedir. Her Node üzerinde, içindeki Pod’ların zamanlanması ve yönetimi için kullanılan aşağıdaki üç temel süreç bulunmaktadır;

  1. Container Runtime
    Pod’ların içindeki konteyner’leri çalıştıran alt sistemdir. Docker, containerd veya CRI-O gibi runtime’lar kullanılabilir.

    Yani kısaca, konteyner’lerin fiilen çalıştırılmasından sorumlu bileşendir.

  2. Kubelet
    Kubelet, hem container runtime ile hem de Node’un kendisiyle etkileşime giren bir süreçtir. API Server’dan aldığı talimatlara göre Pod’ları oluşturmaktan, yönetmekten, durumlarını denetlemekten ve bir konteyner içeren Pod’un başlatılmasından sorumludur.

    Kubelet için Node üzerinde Pod’ların yaşam döngüsünü yöneten bir agent’tır diyebiliriz.

  3. Kube-Proxy
    Kube-Proxy ise servislerden ve diğer bileşenlerden gelen isteklerin uygun Pod’lara yönlendirilmesinden sorumlu bir işleve sahip bileşendir.

Addons Plug-in

Kubernetes eklentileri, cluster’ın işlevselliğini artıran ve genellikle DaemonSet, Deployment gibi Kubernetes kaynakları biçiminde kurulan eklenti bileşenleridir. Bu eklentiler genellikle kube-system namespace’i içinde konuşlandırılır ve cluster düzeyinde yetenekler sağlayarak Kubernetes’in local özelliklerini genişletir ya da bir başka deyişle Kubernetes çekirdeğini tamamlar.

Aşağıda bazı temel Kubernetes eklentileri ve işlevleri izah edilmektedir;

Yaygın Kubectl Talimatları

Son olarak, Kubernetes cluster’ıyla etkileşim kurabilmek için ileriye dönük bazı yaygın talimatları inceleyerek içeriğimizi noktalayabiliriz.

Nihai olarak;

Böylece, Kubernetes teknolojisinin mimarisel anatomisini incelemiş ve özellikle yapısındaki Control Plane ve Worker Node bileşenlerini detaylıca değerlendirerek Kubernetes’in altyapısına dair teorik bilgi edinmiş bulunuyoruz. Bir sonraki içeriğimizde Kubernetes aracılığıyla konteynerleştirme süreçlerini inceleyecek ve az da olsa pratiksel olarak deneyimlerde bulunuyor olacağız.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Exit mobile version