Kubernetes Cluster, Node ve Bileşenler
4 min read

Kubernetes Cluster, Node ve Bileşenler

Kubernetes, Control Plane ve Worker olmak üzere iki ana parçadan oluşur. Her biri ise kendine özgü birçok bileşen içerir.
Kubernetes Cluster, Node ve Bileşenler
Photo by orbtal media / Unsplash

Kubernetes mimarisinde, uygulamaların üzerinde çalıştığı sunuculara node adı verilir. Herbir node Control Plane (manager) veya Worker olarak üzere iki moddan biri olarak çalışır. Tüm node'lar bir araya gelerek ise Kubernetes cluster'ı meydana getirirler. Kubernetes cluster içinde yer alan node sayısı gereksinimlerinize ve kullanım senaryolarınıza göre değişebilir.

Şekil-1: Kubernetes cluster control plane ve worker modda çalışan bir veya daha fazla node'dan meydana gelir.

Control Plane veya Worker modda çalışan node'lar Kubernetes cluster'ınızı yönetmeniz için birçok bileşen içerirler.

Control Plane, Kubernetes cluster içinde merkezi yönetim birimi olarak hizmet verir. Control plane, manager, aşağıdaki listede yer alan bileşenleri içerir ve bu bileşenlerle Kubernetes cluster'ınızın yönetimini, düzenlemesini ve kontrolünü sağlar.

  • Etcd
  • API Server
  • Scheduler
  • Controller Manager

Worker Node ise, uygulamaların çalıştığı ve Kubernetes objelerinin gerçekten barındığı yerdir. Worker node, bu objeleri yönetebilmek için şu bileşenleri içerir:

  • Kubelet
  • Kube-proxy
  • Container Runtime

Kubernetes, bu bileşenlerin birlikte çalışması sayesinde, uygulamalarınızı kolayca yönetmenizi ve ölçeklendirmenizi sağlar. Bu makalede, Kubernetes'in Control Plane ve Worker Node bileşenlerini daha ayrıntılı bir şekilde ele alacağız.

Şekil-2: Kubernetes control plane ve worker node bileşenleri

1. Kubernetes Control Plane Bileşenleri

Kubernetes Control Plane, bir Kubernetes cluster'ın merkezi yönetim birimidir ve cluster'ın tüm kaynaklarının yönetimini sağlar. Control Plane, API Server , etcd veritabanı, Controller Manager, Scheduler ve diğer araçları içeren bir dizi bileşenin bir araya gelmesiyle oluşur. Bu bileşenler, Kubernetes objelerinin oluşturulması, yönetimi ve durumunun takibi gibi işlemleri gerçekleştirir.

Tüm bu bileşenlerin ne işe yaradığına bakalım:

  • API Server: Kubernetes API'ını ortaya çıkaran  ve cluster'ın giriş noktası olan en önemli bileşendir. Kubernetes cluster'ındaki tüm bileşenlerin birbirleriyle iletişim kurmasına olanak tanır. Kullanıcılar veya araçlar, Kubernetes API Servera doğrudan erişebilirler ve Kubernetes objelerini oluşturabilir, güncelleyebilir veya silebilirler.
  • etcd: Kubernetes cluster'ın control plane bileşenlerinin durumunu ve yapılandırmalarını tutmak ve tutarlı bir şekilde çalışmalarını sağlamak için bir key-value veritabanı görevi görür. Controller Manager, cluster'ın durumunu takip etmek için etcd veritabanına erişir ve gerektiğinde işlem yapar.
  • Controller Manager: Kubernetes objelerinin durumunu izleyen ve gerektiğinde müdahale eden bir dizi arka plan işlevi içeren bir bileşendir. Node controller, Job controller, Endpoints controller gibi birden fazla controller mekanizmasının tek bir binary altında toplanmasından oluşur.
  • Scheduler: Yeni oluşturulan pod'ları uygun bir node'a atamaktan sorumludur ve cluster'daki kaynakların en verimli şekilde kullanılmasına yardımcı olur. Scheduler, belirli bir pod'u hangi Worker Node'a yerleştireceğine karar verirken, çeşitli kriterleri ve yapılandırmaları dikkate alır.

2. Kubernetes Worker Bileşenleri

Kubernetes Worker, Kubernetes cluster'ındaki fiziksel veya sanal makinelerdir ve Kubernetes Pod'larını çalıştırmak için gereken kaynakları sağlar. Worker, Kubernetes Control Plane ile iletişim kurarak, Controller Manager'ın talebine yanıt verir ve Pod'ların uygun bir şekilde yerleştirilmesi ve çalıştırılması için gerekli kaynakları sağlar.

Worker, Kubelet, Kube-proxy ve Container Runtime bileşenlerini içerir:

  1. Kubelet: Kubernetes Node'daki temel bileşendir ve Pod'ların çalıştırılmasından sorumludur. Kubelet, PodSpec adı verilen yapılandırma dosyalarını okur ve Pod'ların düzgün bir şekilde çalıştırılmasını sağlar. Kubelet ayrıca, Pod'un sağlık durumunu ve kaynak kullanımını takip eder ve durumunu Kubernetes Control Plane'a rapor eder.
  2. Kube-proxy: Kube-proxy, Kubernetes cluster'ındaki ağ trafiğini yönetir. Pod'ların IP adresleri ve portları dinamik olarak atanabilir ve Kube-proxy, gelen trafiği doğru Pod'a yönlendirmek için bu bilgileri kullanır.
  3. Container Runtime: Kubernetes Pod'ları, bir veya daha fazla container'ı çalıştırmak için tasarlanmıştır. Container Runtime, bu konteynerleri çalıştırmak için gerekli alt yapıyı sağlar. Kubernetes; Docker, containerd ve CRI-O gibi farklı Container Runtime'larını destekler.

3. Bileşenlere Dair Notlar

  • API Server, ComponentStatus isimli bir API expose eder. Bu API ile her bir Control Plane bileşeninin sağlık durumunu kontrol edebilirsiniz. Bunun için kubectl get componentstatuses komutunu çalıştırınız.
  • Tüm Kubernetes bileşenleri sadece API Server ile iletişime geçerler. Hiçbir bileşen başka bir bileşenle doğrudan haberleşmez.
  • API Server, etcd bileşeni ile iletişime geçen tek bileşendir. Diğer bileşenlerin etcd ile doğrudan iletişime geçmesini engellenerek lock mekanizması ve veri tutarlılığı sağlanmış olur.
  • High Availability için control plane bileşenleri aynı anda birden fazla node'da çalıştırılabilir. Fakat etcd ve API Server bileşenleri active-active çalışabilirken Scheduler ve Controller Manager sadece active-passive çalışabilir.
  • En temel bileşen olan kubelet sistem bileşeni olarak kurulur ve çalıştırılır. Diğer bileşenler ise ise kubelet tarafından pod olarak çalıştırılır. Bu bileşenlerin podlarını listelemek için kubectl get pods -n kube-system komutunu çalıştırabilirsiniz.

Sıradaki yazı ile eğitim serisine devam edebilirsiniz.

Kubernetes Pod Nedir?
Pod, içinde bir veya birden fazla container’ın çalıştığı en küçük Kubernetes birimidir.