Kubernetes, 2014 yılında Google mühendisleri Brendan Burns, Joe Beda ve Craig McLuckie tarafından geliştirilen bir açık kaynaklı platformdur. Konteyner tabanlı iş yüklerini otomatikleştirmek için kullanılır ve buluta yönelik işletim sistemi olarak da bilinir. Yazılım alanında da çok fazla kullanılan bir yöntemdir.
Kubernetes, konteynerde çalışan uygulamaların dağıtılmasını, ölçeklendirilmesini ve düzenlenmesini sağlar. İşte bu platformun temel işleyişi:
- Master ve Worker Bileşenleri:
- Master (Control Plane): Kubernetes yönetiminin yapıldığı merkezi bileşendir. API Server, etcd, scheduler ve Controller Manager’dan oluşur.
- API Server: Sıradan bir REST API’dır ve Kubernetes tarafından yapılması istenilen işlemler buraya iletilir.
- etcd: Dağıtılmış bir veritabanıdır ve yapılandırma bilgilerini depolar.
- Scheduler: Yeni pod’ların hangi worker node’a yerleştirileceğini belirler.
- Controller Manager: Çeşitli kontrol döngülerini yönetir.
- Worker Node’lar:
- İş yüklerinin çalıştığı yerlerdir. Her bir worker node, pod’ları barındırır.
- Her worker node, kubelet (master ile iletişim kuran ajan), kube-proxy (servislerin yönlendirilmesini sağlar) ve container runtime (örneğin Docker) içerir.
- Pod’lar:
- En küçük yönetim birimidir ve bir veya daha fazla konteyneri içerir.
- Aynı pod içindeki konteynerler aynı worker node üzerinde çalışır ve aynı ağ alanını paylaşır.
- ReplicaSet ve Deployment:
- ReplicaSet, belirli sayıda aynı pod’un çalışmasını sağlar.
- Deployment, ReplicaSet’i yönetir ve uygulamanın güncellenmesini kolaylaştırır.
- Servisler:
- Pod’lar dinamik IP adresleriyle başlar ve değişebilir. Servisler, pod’ları sabit bir IP adresiyle gruplar ve dış dünyadan erişimi sağlar.
- Ölçeklendirme:
- Kubernetes, yatay ölçeklemeyi destekler. İhtiyaca göre yeni worker node’lar ekleyerek uygulamaların performansını artırır.
- Güvenlik ve İzolasyon:
- RBAC (Role-Based Access Control) ve Network Policies gibi mekanizmalarla güvenliği sağlar.
- Yüksek Kullanılabilirlik:
- Master bileşenlerini yedekler ve hızlı bir şekilde yeniden başlatır.