- Kubernetes’in Doğuşu ve Gelişim Süreci
- Kubernetes Nedir?
- Kubernetes’in Felsefesi: Deklaratif Altyapı
- Kubernetes Temel Mimarisi
- Kubernetes Temel Kavramları
- İleri Seviye Bileşenler
- Gerçek Dünya Kullanım Senaryoları
- Güvenlik Perspektifi
- İzleme ve Gözlemlenebilirlik
- Kubernetes Ekosistemi
- Kubernetes Öğrenme Yolculuğu
- Sonuç
Yazılım geliştirme dünyası, son on yılda baş döndürücü bir dönüşüm yaşadı. Monolitik uygulamalardan mikroservislere , fiziksel sunuculardan konteynerlere, manuel dağıtımdan sürekli entegrasyon ve dağıtıma (CI/CD) geçildi. Bu dönüşümde konteyner teknolojisi kritik bir rol oynarken, bu konteynerlerin yönetimi için yeni bir çağın kapılarını açan sistem ise Kubernetes oldu.
Peki Kubernetes nedir? Sadece bir orkestrasyon sistemi mi? Yoksa yazılım dağıtımında devrim yaratan bir altyapı standardı mı? Bu yazıda Kubernetes’in temellerinden ileri seviye kullanım senaryolarına kadar her yönünü ele alacağız...
Kubernetes’in Doğuşu ve Gelişim Süreci
Kubernetes, Google’ın yıllarca kullandığı Borg adlı içsel sistemin halka açık, modernleştirilmiş bir versiyonudur. Borg, binlerce uygulamayı yüz binlerce sunucuda çalıştırabilen devasa bir platformdu. Google bu tecrübeyi açık kaynak dünyasına aktarmak istedi ve 2014 yılında Kubernetes’i duyurdu.
Kubernetes kısa sürede Cloud Native Computing Foundation (CNCF) çatısı altına alındı. CNCF, Kubernetes’in gelişimini destekleyen, topluluk tarafından yönlendirilen bir yapıdır. Bugün Kubernetes; AWS, Azure, Google Cloud gibi tüm büyük bulut sağlayıcıları tarafından desteklenen, dev bir ekosisteme sahip bir platformdur.
Kubernetes’in Felsefesi: Deklaratif Altyapı
Kubernetes’i özel kılan yönlerden biri, deklaratif bir yaklaşımı benimsemesidir. Geleneksel yöntemlerde sistem yöneticisi her adımı manuel olarak tanımlar (imperatif). Kubernetes’te ise geliştirici ya da DevOps mühendisi sistemin "nasıl olması gerektiğini" tanımlar; Kubernetes bunu gerçekleştirmek için gereken adımları kendi atar.
Bu, altyapının idempotent (tekrarlanabilir ve sonuçta aynı duruma gelen) olmasını sağlar. Yani sistemde bir problem oluştuğunda Kubernetes otomatik olarak tanımlanan duruma dönmeye çalışır.
Kubernetes Temel Mimarisi
Kubernetes’in bileşenlerini genel hatlarıyla daha önce tanımlamıştık. Şimdi biraz daha derine inelim.
Control Plane (Yönetim Uçbirimi)
Kubernetes’in sinir merkezi olan Control Plane şu servislerden oluşur:
· kube-apiserver: Tüm bileşenlerin iletişim kurduğu merkezi API uç noktasıdır.
· etcd: Dağıtık bir key-value veritabanıdır. Kubernetes’in durumu burada saklanır.
· kube-scheduler: Pod’ları uygun node’lara atar. CPU, bellek, node etiketi, affinity/anti-affinity kuralları gibi birçok kriteri dikkate alır.
· controller-manager: ReplicaSet, DaemonSet, NodeController gibi kontrol döngülerini yöneten bir orkestratördür.
Node (Çalışma Noktaları)
Node’lar, uygulamaların çalıştığı fiziksel ya da sanal makinelerden oluşur. Her node üzerinde şunlar bulunur:
· kubelet: Control Plane ile haberleşen ajan.
· container runtime: Docker, containerd gibi konteyner çalıştırıcısı.
· kube-proxy: Ağ trafiğini yönlendirir, servislerin IP eşleşmelerini sağlar.
Kubernetes Temel Kavramları
Pod
Pod, Kubernetes’in çalıştırabildiği en küçük birimdir. Aynı Pod içerisindeki konteynerler aynı IP’yi, depolama alanını ve yaşam döngüsünü paylaşır. Genellikle her Pod’da tek bir uygulama konteyneri bulunur.
ReplicaSet
Belirli sayıda Pod’un her zaman çalışmasını sağlar. Örneğin 3 replikalı bir web uygulaması varsa, sistem bunlardan biri çökse bile hemen yenisini yaratır.
Deployment
ReplicaSet’leri yönetir. Uygulamaların sürümlerini yönetmek, rolling update yapmak ve rollback sağlamak için kullanılır.
Service
Pod’lar dinamik olarak yaratılıp silindiğinden IP adresleri değişkendir. Service, bu değişkenliği soyutlar ve sabit bir DNS adresi ile uygulamalara ulaşmayı sağlar. Service türleri:
· ClusterIP: Sadece küme içinden erişim sağlar.
· NodePort: Dış dünyadan erişimi mümkün kılar.
· LoadBalancer: Bulut sağlayıcı destekli yük dengeleyici oluşturur.
Namespace
Kaynakları mantıksal olarak bölmek için kullanılır. “dev”, “test”, “prod” gibi farklı ortamlarda izole kaynak yönetimi sağlar.
İleri Seviye Bileşenler
StatefulSet
Veritabanı gibi durum bağımlılığı olan uygulamalar için tasarlanmıştır. Pod’lara kalıcı ve sabit kimlikler verir.
ConfigMap ve Secret
Uygulama yapılandırmaları ve gizli bilgileri (şifreler, API anahtarları) konteyner dışı olarak saklamak için kullanılır.
DaemonSet
Her node’da aynı pod’un çalıştırılmasını sağlar. Genellikle log toplayıcılar (fluentd), node monitörleri (node-exporter) için kullanılır.
CronJob
Zamanlanmış görevleri çalıştırır. Örneğin her gece saat 3’te yedek alma işlemi gibi.
Gerçek Dünya Kullanım Senaryoları
1. Mikroservis Mimarisi
Bir e-ticaret sitesinin her özelliği (katalog, ödeme, kullanıcı yönetimi) ayrı mikroservis olarak Kubernetes’te dağıtılabilir. Bu servisler izole, bağımsız ve ölçeklenebilir şekilde yönetilir.
2. CI/CD Otomasyonu
Git push yapıldığında otomatik olarak yeni bir imaj oluşturulur, test edilir ve Kubernetes’e dağıtılır. Bu süreç ArgoCD veya Jenkins-X gibi araçlarla entegre edilir.
3. Makine Öğrenmesi Dağıtımları
Model eğitimi için GPU destekli node’lar kullanılır. Eğitim sonrası model container olarak paketlenip Kubernetes üzerinde API şeklinde yayınlanabilir (MLOps).
4. Hibrit Bulut Senaryoları
Kubernetes ile aynı altyapı hem şirket içi veri merkezinde, hem de dilediğiniz bulut sağlayıcısı üzerinde çalışabilir. Böylece taşınabilirlik ve bağımsızlık sağlanır.
Güvenlik Perspektifi
Kubernetes güvenliği, çok katmanlı bir yaklaşımla ele alınmalıdır:
-RBAC (Role-Based Access Control) ile kullanıcı ve servis yetkilendirme.
-Pod Security Policies / Admission Controllers ile pod seviyesinde denetim.
-Network Policy ile pod’lar arası trafiğin sınırlandırılması.
-Image scanning ile kötü amaçlı imajların engellenmesi.
-Ayrıca Secret’lar genelde şifrelenmiş şekilde etcd içinde saklanır, fakat ek olarak HashiCorp Vault gibi sistemlerle de yönetilebilir.
İzleme ve Gözlemlenebilirlik
Kubernetes üzerinde çalışan sistemlerin izlenebilirliği için popüler kombinasyon:
· Prometheus: Metrik toplama.
· Grafana: Görsel dashboard’lar.
· Alertmanager: Alarm üretimi.
· Fluentd / Loki / ELK Stack: Log toplama ve analiz.
Ayrıca OpenTelemetry entegrasyonu ile dağıtık izleme (tracing) yapılabilir.
Kubernetes Ekosistemi
Kubernetes, kendi başına güçlü olsa da, onu tamamlayan büyük bir araç ekosistemi vardır:
| Kategori | Araçlar |
|---|---|
| Paketleme | Helm, Kustomize |
| GitOps | ArgoCD, Flux |
| İzleme | Prometheus, Grafana, Loki |
| Service Mesh | Istio, Linkerd, Consul |
| Test Otomasyonu | Kube-bench, kube-hunter, Chaos Mesh |
| Geliştirici Araçları | Skaffold, Tilt, Okteto |
Kubernetes Öğrenme Yolculuğu
Başlangıç seviyesinden ileri düzeye doğru bir yol haritası:
· Kavramları öğren: Pod, Service, Deployment, Volume.,
· Minikube ile lokal cluster kur: Deneysel kurulumlar için.
· YAML yazma pratiği yap.
· Helm ve CI/CD entegrasyonu öğren.
· Monitoring, güvenlik, HPA gibi gelişmiş konulara geç.
· Gerçek bir projede kullan.
Sonuç
Kubernetes, modern uygulama geliştirme ve dağıtım dünyasında oyunun kurallarını değiştiren bir platformdur. Sağladığı otomasyon, taşınabilirlik, esneklik ve topluluk desteği sayesinde; Kubernetes sadece bir araç değil, aynı zamanda bir altyapı kültürü hâline gelmiştir.
Her geçen gün daha fazla kurum, uygulamalarını Kubernetes üzerine taşımakta. Bu yüzden Kubernetes bilgisi, yazılım geliştiriciler, sistem mühendisleri ve DevOps uzmanları için kariyer açısından stratejik bir yatırım niteliğindedir.