Kubernetes Nedir? Bulut Sunucu Ölçeklendirme Nasıl Yapılır?
Modern yazılım geliştirme ve altyapı yönetimi, sürekli artan karmaşıklık ve ölçeklendirme ihtiyaçları ile karşı karşıyadır. Mikroservis mimarilerinin ve konteyner teknolojilerinin yükselişi, uygulamaları daha esnek, taşınabilir ve verimli hale getirmiştir. Ancak bu dağıtık sistemleri manuel olarak yönetmek, özellikle yüzlerce veya binlerce konteyner söz konusu olduğunda, neredeyse imkansızdır. İşte bu noktada, bu karmaşıklığı otomatize eden, yöneten ve ölçeklendiren bir orkestrasyon aracı devreye girer. Bu aracın adı Kubernetes’tir. Google tarafından geliştirilen ve daha sonra açık kaynaklı hale getirilen Kubernetes, günümüzde konteyner orkestrasyonu için endüstri standardı olarak kabul edilmektedir. İşletmelerin bulut sunucu altyapılarını en verimli şekilde kullanmalarını sağlayarak, uygulamaların kesintisiz ve yüksek performansla çalışmasını garanti eder.
Kubernetes, genellikle K8s olarak kısaltılır (K ve s arasındaki 8 harfi temsil eder), konteynerleştirilmiş uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Temelde, bir sunucu kümesini (cluster) tek bir büyük işlem birimi gibi yönetmenizi sağlar. Bu sayede, geliştiriciler ve sistem yöneticileri, uygulamalarının hangi sunucuda çalıştığı gibi altyapısal detaylarla uğraşmak yerine, uygulamanın kendisiyle ve onun yaşam döngüsüyle ilgilenebilirler. Kubernetes, altyapıyı soyutlayarak, uygulamaların farklı bulut sağlayıcıları veya şirket içi veri merkezleri arasında kolayca taşınabilmesini sağlar.
Kubernetes’in temel amacı, uygulamaların her zaman istenen durumda (desired state) çalışmasını sağlamaktır. Siz platforma uygulamanızın nasıl çalışması gerektiğini (örneğin, “bu uygulamadan 3 kopya çalışsın ve 80 portundan trafik alsın”) bildirirsiniz ve Kubernetes, mevcut durumu sürekli olarak bu istenen durumla karşılaştırır. Herhangi bir sapma olduğunda (örneğin bir konteyner çöktüğünde), Kubernetes otomatik olarak müdahale eder ve sistemi istenen duruma geri getirir. Bu kendi kendini iyileştirme (self-healing) yeteneği, platformun en güçlü özelliklerinden biridir ve sistemlerin dayanıklılığını (resilience) önemli ölçüde artırır. Bu yaklaşım, özellikle konteyner teknolojisi Docker gibi araçlarla oluşturulmuş uygulamalar için hayati önem taşır.
Kubernetes, bir ana (master) ve birden çok işçi (worker) düğümden (node) oluşan bir küme (cluster) mimarisine dayanır. Ana düğüm, kümenin beyni olarak hareket eder ve tüm yönetimsel görevleri üstlenir. İşçi düğümler ise uygulamaların ve konteynerlerin fiilen çalıştığı sunuculardır. Bu mimarinin her bir parçasının belirli bir görevi vardır ve birlikte uyum içinde çalışarak platformun gücünü oluştururlar.
Ana düğüm veya Kontrol Düzlemi (Control Plane), kümenin genel durumunu yönetir, planlama yapar ve değişiklikleri izler. Ana düğümü oluşturan temel bileşenler şunlardır:
İşçi düğümler, konteynerleştirilmiş uygulamaların çalıştığı yerdir. Her işçi düğüm, ana düğümden aldığı talimatları yerine getirmek için gerekli olan bileşenleri barındırır:
Kubernetes’in mimarisi, bu bileşenlerin uyumlu çalışması üzerine kuruludur. Aşağıdaki tablo, temel Kubernetes nesnelerini ve mimari bileşenlerini özetlemektedir.
| Bileşen / Nesne | Rolü ve Görevi | Bulunduğu Yer |
|---|---|---|
| Pod | Bir veya daha fazla konteyneri barındıran en küçük dağıtım birimi. Aynı Pod içindeki konteynerler, ağ ve depolama kaynaklarını paylaşır. | İşçi Düğüm |
| Service | Bir grup Pod’a tek bir erişim noktası (IP adresi ve DNS adı) sağlayan ve yük dengeleme yapan soyutlama katmanı. | Küme Geneli |
| Deployment | Pod’ların ve ReplicaSet’lerin durumunu bildirimsel olarak yönetir. Uygulama güncellemelerini ve geri almaları kolaylaştırır. | Ana Düğüm (etcd’de tanımlı) |
| API Server | Kümenin merkezi yönetim noktası. Tüm komutları alır ve işler. | Ana Düğüm |
| Scheduler | Yeni Pod’ları kaynak durumuna göre en uygun İşçi Düğüme atar. | Ana Düğüm |
| Kubelet | Düğüm üzerindeki Pod’ların ve konteynerlerin sağlıklı bir şekilde çalıştığından emin olan ajandır. | İşçi Düğüm |
Kubernetes’in en güçlü yanlarından biri, bulut sunucu kaynaklarını dinamik ve otomatik olarak ölçeklendirme yeteneğidir. Bu, uygulamanızın trafiği arttığında performans kaybı yaşamamasını, trafik azaldığında ise gereksiz kaynak kullanımını önleyerek maliyet tasarrufu sağlamasını mümkün kılar. Ölçeklendirme temel olarak iki düzeyde gerçekleşir: Pod düzeyinde (yatay) ve Düğüm düzeyinde (küme).
HPA, bir uygulamanın (Deployment veya ReplicaSet) Pod sayısını, gözlemlenen CPU veya bellek kullanımı gibi metrikler doğrultusunda otomatik olarak artırıp azaltır. İşleyişi şu şekildedir:
Bu mekanizma sayesinde, bir e-ticaret sitesinin kampanya dönemlerinde artan trafiği sorunsuzca karşılaması veya gece saatlerinde azalan trafikle birlikte sunucu maliyetlerini düşürmesi tamamen otomatik hale gelir.
Bazen Pod sayısını artırmak tek başına yeterli olmaz. Eğer mevcut işçi düğümlerde yeni Pod’ları çalıştıracak yeterli CPU veya bellek kalmamışsa, kümenin kendisinin büyümesi gerekir. İşte bu noktada Küme Otomatik Ölçeklendirici devreye girer. Bu bileşen, bulut sağlayıcınızla (AWS, Google Cloud, Azure vb.) entegre çalışarak:
Bu iki ölçeklendirme mekanizması birlikte çalışarak, uygulamalara neredeyse sınırsız bir esneklik ve verimlilik kazandırır. Kubernetes, bu sayede bulut bilişimin en önemli vaatlerinden biri olan “kullandığın kadar öde” modelini tam anlamıyla hayata geçirir.