kubernetes, container içinde çalışan uygulamaların nerede ve kaç kopya çalışacağını yöneten bir orkestrasyon sistemidir. uygulamanın kendisi değildir, bulut değildir, yazılım mimarisi hiç değildir. elinizdeki uygulamaları belirlediğiniz düzende çalıştırmaya uğraşan ayrı bir yönetim katmanıdır.

en basit haliyle sisteme “bu uygulamadan üç tane çalışsın” dersiniz. kubernetes uygun sunucuları bulur, uygulamaları dağıtır ve çalışan kopyalardan biri çökerse yenisini başlatır. trafik arttığında kopya sayısını yükseltebilir, güncelleme sırasında eski sürümden yenisine kontrollü geçiş yapabilir ve kullanıcı isteklerini sağlıklı kopyalara yönlendirebilir. resmî belgelerde buna yük dağıtımı, yatay ölçekleme ve self-healing deniyor. fakat self-healing denilen şey, kubernetes’in bozuk kodunuzu anlayıp düzeltmesi değildir. çöken container’ı yeniden başlatır; container aynı hata yüzünden tekrar çöküyorsa sizin hatanızı büyük bir kararlılıkla tekrar tekrar çalıştırmış olur. Kubernetes’in kendi dokümantasyonu da uygulama hatalarının ayrıca düzeltilmesi gerektiğini açıkça söylüyor.  

kubernetes’in güçlü olduğu yer, çok sayıda servisin, farklı ekiplerin ve sık dağıtım yapılan ortamların yönetimidir. onlarca mikroservisiniz, değişken trafiğiniz, yüksek erişilebilirlik ihtiyacınız, farklı test ve production ortamlarınız varsa ciddi fayda sağlar. hangi uygulamanın ne kadar işlemci ve bellek kullanacağını belirleyebilir, servisleri birbirine bağlayabilir, hatalı kopyaları trafikten çıkarabilir ve sistemin çalışmasını tek bir sunucunun ayakta kalmasına bağımlı olmaktan kurtarabilir. bunlar Kubernetes’in resmî olarak sunduğu temel yeteneklerdir.  

ama bunun karşılığında yeni bir işletim yükü getirir. artık yalnızca uygulamayı değil; cluster’ı, node’ları, container imajlarını, ağ kurallarını, ingress’i, kalıcı depolamayı, sertifikaları, yetkileri, logları, metrikleri, yedekleri ve kubernetes sürüm yükseltmelerini de yönetirsiniz. sistem büyüdükçe rbac, network policy, secret yönetimi, kaynak limitleri ve gözlemlenebilirlik ayrı uzmanlık alanlarına dönüşür.

üç servisi olan küçük bir ekibin kubernetes kurması, dükkâna iki masa daha koymak için alışveriş merkezi yönetim sistemi satın almaya benzer. çalışır mı? çalışır. ama artık esas işiniz müşteriye hizmet vermek değil; yürüyen merdivenin bakım sözleşmesini takip etmek olur.

tek bir web uygulamanız, birkaç arka plan servisiniz ve öngörülebilir trafiğiniz varsa docker compose, yönetilen bir uygulama platformu veya basit bir container servisi çoğu zaman yeterlidir. küçük ekibin kubernetes kullanması teknik olgunluk göstergesi değildir. bazen yalnızca çözmediği problemler için yeni problemler üretme biçimidir.

kubernetes’e ihtiyaç, yalnızca trafik büyüdüğü için doğmaz. uygulama sayısı, ekip sayısı, dağıtım sıklığı, hata toleransı ve operasyon kabiliyeti birlikte büyüdüğünde doğar.

önce kubernetes kurup sonra ona uygun problem arıyorsanız, elinizde altyapı değil pahalı bir hobi vardır.
1 1
ayı kullanıcısının profil fotografı