Kubernetes Cluster, Node ve Bileşenler
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.
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.
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:
- 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.
- 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.
- 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çinkubectl 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
veAPI Server
bileşenleri active-active çalışabilirkenScheduler
veController 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çinkubectl get pods -n kube-system
komutunu çalıştırabilirsiniz.
Sıradaki yazı ile eğitim serisine devam edebilirsiniz.