Furkan KapukayaYazılım geliştirme
Sunucu, Bulut ve DevOps3 dk okuma

Kubernetes Nedir? Ne Zaman Gerekir, Ne Zaman Gerekmez?

Kubernetes'in ne olduğu, sağladığı faydalar, pod, deployment ve service gibi temel kavramlar, operasyonel maliyeti ve küçük ve orta ölçekli projeler için daha basit alternatifler.

Kubernetes, konteynerlerin çok sayıda sunucu üzerinde çalıştırılmasını, ölçeklenmesini ve ayakta tutulmasını otomatikleştiren açık kaynak bir platformdur. Modern altyapının sembollerinden biri haline geldi; ancak her proje için doğru araç değildir. Asıl soru, Kubernetes'in çözdüğü problemlere gerçekten sahip olup olmadığınızdır.

Kubernetes ne sağlar?

  • Kendini onarma: Çöken konteyneri yeniden başlatır, bozuk sunucudaki iş yükünü sağlam olana taşır.
  • Ölçeklenme: Yük arttığında kopya sayısını otomatik artırır.
  • Kesintisiz güncelleme: Yeni sürümü kademeli yayar, sorun olursa geri alır. Bkz. sıfır kesintili dağıtım.
  • Servis keşfi ve yük dengeleme: Servisler birbirini isimle bulur.
  • Bildirime dayalı yönetim: "Bu uygulamanın 3 kopyası çalışsın" dersiniz, gerisini Kubernetes sağlar.

Temel kavramlar

KavramAnlamı
ClusterKubernetes'in yönettiği sunucular kümesi
NodeKümedeki tek bir sunucu
PodBirlikte çalışan bir veya birkaç konteynerin en küçük birimi
DeploymentBir uygulamanın kaç kopya ve hangi sürümle çalışacağının tanımı
ServicePod'lara sabit bir ağ adresi sağlayan katman
IngressDışarıdan gelen HTTP trafiğini servislere yönlendiren kurallar

Gizli maliyetler

Kubernetes'in kendisi de yönetilmesi gereken karmaşık bir sistemdir:

  • Ağ, depolama, güvenlik ve sürüm yükseltmeleri ciddi uzmanlık ister.
  • İzleme ve log altyapısı ayrıca kurulmalıdır (gözlemlenebilirlik).
  • Küçük bir uygulama için küme maliyeti, uygulamanın kendisinden pahalı olabilir.
  • Yanlış yapılandırma ciddi güvenlik açıkları doğurabilir.

Bulut sağlayıcılarının yönetilen Kubernetes hizmetleri bu yükün bir kısmını üstlenir ama tamamını değil.

Ne zaman mantıklı?

  • Çok sayıda servis ve bunları yöneten birden çok ekip varsa
  • Trafik büyük ve değişkense, otomatik ölçeklenme gerçek tasarruf sağlıyorsa
  • Yüksek erişilebilirlik hedefleri birden çok sunucuyu zorunlu kılıyorsa
  • Kurumda platform ekibi veya bu konuda deneyimli kişiler varsa

Daha basit alternatifler

İhtiyaçAlternatif
Tek sunucuda birkaç servisDocker Compose
Konteyneri sunucu yönetmeden çalıştırmakBulutların yönetilen konteyner hizmetleri
Basit web uygulamasıPaaS uygulama hizmetleri
Statik siteCDN ve statik barındırma

İşletme yazılımlarının büyük çoğunluğu, iyi yapılandırılmış bir veya iki sunucu ve otomatik bir dağıtım hattı ile yıllarca sorunsuz çalışır. Uygulamanın kendisini bölme kararı için bkz. monolit mi mikroservis mi.

Sık sorulan sorular

Kubernetes öğrenmek kariyer için faydalı mı?

Evet; özellikle platform ve DevOps rollerinde aranan bir beceridir. Ancak önce Linux, ağ ve Docker temellerini sağlamlaştırmak gerekir.

Uygulamam Docker ile çalışıyorsa Kubernetes'e geçmek kolay mı?

Konteynerleştirme önemli bir adımdır; ama sağlık kontrolleri, yapılandırma yönetimi ve durumsuz (stateless) tasarım gibi ek gereksinimler de karşılanmalıdır.

Sonuç

Kubernetes, büyük ölçekte çok güçlü bir araçtır; küçük ölçekte ise çoğu zaman gereksiz bir yük. Altyapı kararını ölçeğe ve ekip yetkinliğine göre vermek, hem maliyeti hem de operasyonel riski düşürür.