kubernetes architecture

İbrahim Yıldız
3 min readDec 31, 2024

Kubernetes Mimarisi ve Haberleşme Mekanizması

Kubernetes, konteyner yönetiminde en popüler orkestrasyon araçlarından biridir. Bu sistem, uygulamaları dağıtmayı, ölçeklendirmeyi ve yönetmeyi kolaylaştırırken, dayanıklı ve yüksek performanslı bir altyapı sunar. Kubernetes’in mimarisi, bir Master-Worker yapısına dayalıdır. A

Kubernetes Mimarisi

Kubernetes mimarisi, iki ana katmandan oluşur: Kontrol Düzlemi (Control Plane) ve Çalışan Node’lar (Worker Nodes). Bu katmanlar, aşağıdaki bileşenlerden oluşur:

1. Kontrol Düzlemi (Control Plane)

Control Plane, Kubernetes kümesinin merkezi yönetim mekanizmasıdır. Tüm node’ları ve kaynakları yöneten bileşenler burada bulunur:

a. API Server

• Tüm bileşenlerin iletişim kurduğu merkezi bileşendir.

• Kullanıcı isteklerini alır, doğrular ve diğer bileşenlere yönlendirir.

• Haberleşme: API Server, RESTful HTTP/HTTPS protokolünü kullanır ve kube-apiserver servisiyle çalışır.

b. Etcd

• Kubernetes’in veritabanıdır. Tüm küme durumunu (cluster state) saklar.

• Dağıtılmış ve yüksek erişilebilir bir anahtar-değer deposu olarak çalışır.

• API Server, yapılandırma verilerini ve durum bilgilerini etcd üzerinden okur/yazar.

c. Controller Manager

• İş yüklerinin durumunu sürekli olarak kontrol eder ve belirli bir durumda olmayan bileşenleri düzeltir (örneğin, bir Pod’un yeniden başlatılması).

• Farklı kontrolörler barındırır: Node Controller, Replication Controller, Endpoint Controller, vb.

d. Scheduler

• Yeni Pod’ların hangi Worker Node üzerinde çalışacağını belirler.

• Node’ların kapasitesine, kaynak kullanımına ve diğer metriklere göre yerleştirme (scheduling) yapar.

2. Çalışan Node’lar (Worker Nodes)

Worker Node’lar, uygulamaların (container’ların) çalıştığı fiziksel ya da sanal makinelerden oluşur. Bu node’lar, aşağıdaki bileşenleri içerir:

a. Kubelet

• Her node’da çalışan bir aracı servistir.

• API Server ile iletişim kurarak Pod tanımlarını alır ve uygulamaları çalıştırır.

• Haberleşme: API Server üzerinden kontrol düzlemiyle iletişim kurar.

b. Kube-Proxy

• Kubernetes ağı için önemli bir bileşendir.

• Pod’lar arasındaki veya Pod’larla dış dünya arasındaki trafiği yönlendirir.

• Haberleşme: İstekleri iptables veya ipvs kurallarıyla yönlendirir.

c. Container Runtime

• Pod’ların içinde çalışan konteynerleri oluşturur ve yönetir.

• Desteklenen runtime’lar arasında Docker, containerd, CRI-O gibi seçenekler bulunur.

3. Kubernetes Nesneleri

Kubernetes’in temel yapı taşları şunlardır:

Pod: En küçük dağıtım birimi, bir veya birden fazla konteyner içerir.

Service: Pod’lara erişim sağlamak için sabit bir IP ve DNS ismi sunar.

Deployment: Pod’ların istenen durumda çalışmasını sağlar (örneğin, replika sayısı).

ConfigMap ve Secret: Yapılandırma ve hassas bilgileri yönetir.

Kubernetes’te Haberleşme Mekanizması

Bir isteğin Kubernetes içinde nasıl yönlendirildiğine bakalım. Örneğin, bir dış istemciden bir Pod’a HTTP isteği gönderildiğinde:

1. API Server Üzerinden İstek Alınır

• Kullanıcı veya CLI (kubectl) bir kubectl apply komutu gönderdiğinde, bu istek API Server tarafından alınır.

• API Server, isteklerin doğruluğunu (authentication ve authorization) kontrol eder.

2. İstek Etcd’ye Yazılır

• API Server, isteği doğruladıktan sonra küme durumu (örneğin, yeni bir Pod oluşturma talebi) için etcd’ye kaydeder.

3. Scheduler Devreye Girer

• Scheduler, Pod’un hangi Worker Node’da çalışması gerektiğini belirler.

• API Server, bu bilgilere göre Pod’u ilgili node’a yönlendirir.

4. Kubelet, Pod’u Başlatır

• İlgili Worker Node üzerindeki Kubelet, API Server’dan talimat alır.

• Kubelet, Pod tanımını alır ve container runtime (örneğin, Docker) ile iletişim kurarak Pod’u çalıştırır.

5. Pod’lar Arası Haberleşme

• Kubernetes, tüm Pod’lar için bir overlay network sağlar (örneğin, Flannel, Calico).

• Pod’lar, Kubernetes’in atadığı sanal IP’ler aracılığıyla doğrudan iletişim kurar. Kube-Proxy, bu trafiği yönlendiren bir ağ kuralları katmanı oluşturur.

6. Pod’a Erişim (Service Kullanımı)

• Eğer dış dünyadan bir Pod’a erişim gerekiyorsa, bir Service tanımlanır.

• Service, Pod’lara sabit bir IP ve DNS adı sağlar.

• LoadBalancer veya NodePort gibi mekanizmalar sayesinde Pod’a dışarıdan erişim sağlanır.

Umarım faydalı olmuştur :)

--

--

No responses yet