Kubernetes Cluster Nedir? Yeni Başlayanlar İçin Kılavuz

Kubernetes Cluster Nedir? Yeni Başlayanlar İçin Kılavuz

Bir önceki yazımda sizlere Kubernetes'in geçmişi ve evriminden bahsetmiştim. Bu yazıda ise Kubernetes dünyasına bir adım atacağız ve bir Kubernetes cluster'ının temel bileşenlerini keşfetmeye başlayacağız. Yeni başlayanlar için hazırladığım bu kılavuzda, Kubernetes cluster'ının ne olduğunu ve nasıl çalıştığını basit bir dille anlatacağım.

Yukarıda gördüğünüz diagram bir Kubernetes cluster diagramıdır. Basit bir şekilde anlatmak gerekirse, Kubernetes kurduğumuzda bir cluster'a sahip oluruz. Bir cluster, bir grup makineden oluşur. Cluster içerisinde bir veya daha fazla worker makineler bulunur ve biz bu worker makinelerine Node adını veririz. Node'lar, uygulama iş yüklerimizi çalıştırır ve yönetir.

Cluster ayrıca bir veya daha fazla Master Node içerir. Master Node'lar, Kubernetes'in Control Plane bileşenlerini barındırır. Control Plane, cluster'ın yönetim ve kontrol işlevlerini yerine getiren bileşenlerin tümüdür ve şunları içerir:

  • API Server: Tüm API isteklerini karşılar ve yönetir. Bu bileşen sayesinde biz istediğimiz işlemleri api üzerinden istek atarak kubernetes'e iletiriz. Kubernetes api server ana uygulaması kube-apiserver’dır. Yatay ölçeklenebilir.

  • etcd: Cluster'ın tüm yapılandırma ve durum bilgilerini saklayan dağıtılmış anahtar-değer deposudur. Basitleştirmek gerekirse Kubernetes'in veritabanıdır.

  • Controller Manager: Cluster'ın durumunu kontrol eden ve yönetim işlemlerini gerçekleştiren Node Controller, Job Controller, EndpointSlice Controller gibi bir çok controller çalıştırır. Her controller'ın ayrı bir görevi vardır.

  • Scheduler: Yeni oluşturulan Pod'ları uygun Node'lara yerleştirir. Uygun node seçimini yaparken dikkate aldığı bir kaç faktör vardır.

    1. Kaynak Gereksinimleri: Pod'un CPU ve bellek gibi bireysel ve toplu kaynak ihtiyaçları, Node'un mevcut kaynaklarıyla karşılaştırılır.

    2. Donanım/Yazılım/Politika Kısıtlamaları: Pod'un belirli donanım veya yazılım gereksinimlerine ve organizasyon politikalarına uygun olup olmadığı kontrol edilir.

    3. Affinity ve Anti-Affinity Şartları: Pod'un belirli Node'lara yakın veya uzak olmasını sağlayan kurallar dikkate alınır.

    4. Veri Yerelleştirme: Pod'un kullanacağı veri kaynaklarının bulunduğu yer de dikkate alınır. Veri kaynaklarına yakın olmak, veri erişim hızını artırabilir.

    5. İş Yükleri Arası Etkileşim: Pod'ların diğer iş yükleriyle olan etkileşimleri göz önünde bulundurulur, bu etkileşimler performans ve güvenilirlik açısından önemlidir.

    6. Son Teslim Tarihleri: Pod'un belirli bir zaman diliminde çalışması veya tamamlanması gerekiyorsa, bu da yerleşim kararlarını etkileyebilir.

  • Cloud Controller Manager: Cloud Provider ile etkileşimi sağlar ve cloud kaynaklarının yönetimini gerçekleştirir. Örneğin, load balancer oluşturma, Node'ların sağlıklı olup olmadığını kontrol etme gibi işlemleri yapar. Bu bileşen, AWS EKS (Elastic Kubernetes Service), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS) gibi popüler cloud sağlayıcılar ile entegrasyonu kolaylaştırır. Cloud Controller Manager, bu hizmetler aracılığıyla otomatik ölçeklendirme, yük dengeleme ve cloud ortamında kaynak yönetimi gibi kritik görevleri yerine getirir.

Worker Node'lar, uygulamalarınızı çalıştıran birimlerdir ve her biri şu bileşenleri içerir:

  • kubelet: Her Node'da çalışan ve Pod'ların durumunu API Server'a raporlayan ajan.

  • kube-proxy: Ağ kurallarını uygulayan ve ağ trafiğini yönlendiren ağ bileşeni.

  • Container Runtime: Konteynerlerin çalıştırıldığı ortam (örn. Docker, containerd).

Worker Node'lar üzerinde çalışan en küçük birim ise Pod'lardır. Pod'lar, aynı Node üzerinde çalışan bir veya daha fazla konteyneri barındıran yapılardır. Her Pod, kendi IP adresine ve depolama alanına sahip olabilir ve aynı Node üzerindeki diğer Pod'larla ağ paylaşımında bulunabilir. Kısacası, Kubernetes cluster, uygulamalarınızı dağıtmak ve yönetmek için birlikte çalışan bir Node ve Pod grubudur.

Kubernetes cluster'ının temel bileşenlerini incelediğimiz bu yazıda, cluster'ın yapı taşları olan Node'lar, Pod'lar ve Control Plane bileşenlerini tanıdık. Bu bileşenler, Kubernetes'in iş yüklerinizi etkili bir şekilde yönetmesini sağlar.

Özetle, Kubernetes cluster:

  • Uygulama iş yüklerinizi çalıştıran ve yöneten worker Node'lar,

  • Cluster'ın yönetim ve kontrol işlevlerini yerine getiren Master Node'lar,

  • Yeni oluşturulan Pod'ları uygun Node'lara yerleştiren Scheduler,

  • Cluster'ın tüm yapılandırma ve durum bilgilerini saklayan etcd,

  • Tüm API isteklerini karşılayan ve yöneten API Server,

  • Cluster'ın durumunu kontrol eden ve yönetim işlemlerini gerçekleştiren Controller Manager,

  • Cloud provider ile etkileşimi sağlayan ve cloud kaynaklarının yönetimini gerçekleştiren Cloud Controller Manager,

  • Her Node'da çalışan ve Pod'ların durumunu API Server'a raporlayan kubelet,

  • Ağ kurallarını uygulayan ve ağ trafiğini yönlendiren kube-proxy,

  • Konteynerlerin çalıştırıldığı ortam olan container runtime gibi bileşenlerden oluşur.

Bu temel bileşenlerin yanı sıra, Kubernetes'in iş yüklerinizi ve cluster'ınızı yönetmek için daha birçok bileşeni bulunmaktadır. Bu bileşenler, Kubernetes'in esnek ve ölçeklenebilir yapısını daha da güçlendirir.

Kubernetes'in temel bileşenlerini anlamak, Kubernetes'i verimli bir şekilde kullanmanın ilk adımıdır. Bu bilgilerin üzerine daha fazla araştırma yaparak, denemeler yaparak kubernetes konusunda kendinizi geliştirebilir ve uygulamalarınızı kubernetes ortamında çalıştırabilirsiniz. Bir sonraki yazımda Podlardan bahsedeceğim. Umarım sana dokunmuş olabilirim. Merak ettiğin bir şey olursa benimle iletişime geçebilirsin.

Kaynakçalar

  1. https://kubernetes.io/docs/concepts/overview/components/