Kubernetes (K8s) Mimarisi: Control Plane ve Worker Node Mantığı

müfettiş

Moderatör
Katılım
20 Ocak 2024
Mesajlar
325
Tepkime puanı
1
Puanları
18

images (1).png

Kubernetes (K8s) Mimarisi: Control Plane ve Worker Node Mantığı​


Giriş: Konteynerlerin Kaptanı​

Docker ile uygulamaları konteynerlere koymayı öğrendik. Peki ya elinizde 1.000 tane konteyner varsa? Bunlardan hangisi hangi sunucuda çalışacak? Biri çökerse kim yeniden başlatacak? Trafik arttığında kim yeni kopyalar oluşturacak?

İşte bu soruların cevabı Kubernetes (K8s)'tir. Google tarafından geliştirilen K8s, konteynerleştirilmiş uygulamaların otomatik dağıtımını, ölçeklendirilmesini ve yönetimini sağlayan bir orkestrasyon platformudur. K8s'i devasa bir yük gemisinin kaptanı gibi düşünebilirsiniz.

Temel Mimari: Beyin ve Kaslar​

Kubernetes kümesi (Cluster) iki ana bölümden oluşur:
  1. Control Plane (Master Node): Karar veren beyin takımı.
  2. Worker Nodes: İşin yapıldığı kas gücü (Sunucular).

1. Control Plane Bileşenleri (Beyin)​

Kaptan köşkünde şu kritik parçalar çalışır:
  • kube-apiserver: Kümenin "Resepsiyonu"dur. Siz (veya diğer bileşenler) kümeyle konuşmak istediğinizde (örn: kubectl komutuyla) buraya gelirsiniz. Kapıdaki tek giriş noktasıdır.
  • etcd: Kümenin "Hafızası"dır. Tüm verilerin (hangi Pod nerede, durumu ne?) tutulduğu anahtar-değer (key-value) veritabanıdır.
  • kube-scheduler: "Lojistik Müdürü"dür. Yeni oluşturulacak bir Pod için en uygun Node'u seçer. (Örn: "Bu Pod 4GB RAM istiyor, Node-3'te boş yer var, oraya gitsin.")
  • kube-controller-manager: "Denetleyici"dir. Sistemin olması gereken durumunu (Desired State) korur. "Bana 3 tane Nginx lazım" derseniz, sürekli sayar; biri çökerse yeni bir tane oluşturulması emrini verir.

2. Worker Node Bileşenleri (Kaslar)​

Uygulamalarınızın (Konteynerlerin) fiilen çalıştığı sunuculardır.
  • Kubelet: "Gemici"dir. Control Plane'den gelen emirleri dinler. "Burada bir konteyner çalıştır" denildiğinde Docker'a (veya Containerd'ye) gidip işi yaptırır. Ayrıca Node'un sağlık durumunu raporlar.
  • Kube-proxy: "Ağ Sorumlusu"dur. Ağ kurallarını yönetir ve trafiğin doğru Pod'a gitmesini sağlar.
  • Container Runtime: Motorun kendisidir (Docker, containerd, CRI-O). Konteyneri çalıştıran yazılımdır.

Atomik Birim: Pod Nedir?​

Kubernetes'te en küçük birim konteyner değil, Pod'dur.
  • Bir Pod, genellikle tek bir konteyner içerir (bazen yardımcı konteynerlerle birlikte birden fazla olabilir).
  • Pod'lar ölümlüdür (Ephemeral). Bir Pod öldüğünde "dirilmez", yerine yenisi oluşturulur.
  • Her Pod'un kendi IP adresi vardır.

K8s Nasıl Çalışır? (Bildirimsel Model)​

Kubernetes Declarative (Bildirimsel) çalışır. Siz ona "Nasıl yapacağını" söylemezsiniz, "Ne istediğinizi" söylersiniz.
  • Yanlış: "Sunucu 1'e git, Docker run komutunu çalıştır." (Imperative)
  • Doğru: "Bana her zaman çalışan 3 adet Nginx kopyası ver." (Declarative - YAML dosyası ile).
K8s bu emri alır, mevcut duruma bakar (Şu an 0 tane var), farkı kapatmak için 3 tane oluşturur. Biri çökerse, fark yine oluşur (2 tane kaldı) ve otomatik olarak 1 tane daha ekler. Buna Self-Healing (Kendi Kendini İyileştirme) denir.

Sonuç​

Kubernetes karmaşık bir mimariye sahiptir ancak modern mikroservis dünyasının işletim sistemi haline gelmiştir. Onu anlamak için Control Plane'in "karar verdiğini", Worker Node'ların ise "uyguladığını" bilmek temel adımdır.
 
Geri
Üst