Kısaca özet
- Kubernetes nedir sorusunun kısa cevabı: birden fazla sunucuya yayılmış konteynerleri otomatik olarak dağıtan, ölçekleyen, çöken konteyneri yeniden başlatan ve trafiği aralarında paylaştıran açık kaynak bir orkestrasyon platformudur.
- Kubernetes’in çözdüğü problem tek sunucu değil, çok sunuculu ve çok servisli sistemlerin kesintisiz yönetimidir.
- Resmî kurulum aracı kubeadm her makine için en az 2 GB RAM, kontrol düzlemi makineleri için en az 2 işlemci ister; gerçek bir küme genellikle birden fazla sunucuyla kurulur.
- Tek sunucuda çalışan, birkaç konteynerden oluşan bir web uygulaması için Docker Compose çoğu zaman yeterlidir ve çok daha az bakım ister.
- Kubernetes’e geçiş eşiği; çok sunucuya yayılma zorunluluğu, sık ve kesintisiz dağıtım ihtiyacı ve bu sistemi işletecek bir ekibin varlığıdır.
- Kendi kümenizi bulut sunucular üzerinde kurabilirsiniz; bu durumda kurulum, güncelleme ve izleme sizin sorumluluğunuzdadır.
Uygulamanızı Docker ile paketlediniz, her şey tek sunucuda düzgün çalışıyor. Sonra bir konferansta ya da bir iş ilanında Kubernetes kelimesini duyuyorsunuz ve soru kafanıza takılıyor: bizim de buna geçmemiz gerekiyor mu? Kubernetes nedir sorusunu cevaplamak kolaydır, asıl zor soru ne zaman gerektiğidir. Yanlış zamanda kurulan bir küme, küçük bir ekibin haftalarını yiyen bir bakım projesine dönüşür. Doğru zamanda kurulan küme ise büyüyen bir sistemi ayakta tutan omurga olur.
Kubernetes Nedir, Hangi Problemi Çözer
Kubernetes, konteynerleştirilmiş uygulamaları birden fazla makine üzerinde çalıştırmak için geliştirilmiş açık kaynak bir platformdur. Google 2014’te projeyi açık kaynak yaptı; bugün Cloud Native Computing Foundation çatısı altında gelişiyor. Kubernetes’in resmî genel bakış sayfası onu, konteyner iş yüklerini bildirimsel yapılandırma ve otomasyonla yöneten taşınabilir bir platform olarak tanımlar.
Somut olarak şunu yapar: siz “bu uygulamadan her zaman üç kopya çalışsın” dersiniz, Kubernetes bu durumu korur. Bir konteyner çökerse yenisini başlatır, bir sunucu kapanırsa üzerindeki konteynerleri diğer sunuculara taşır, trafik artarsa kopya sayısını çoğaltır, yeni sürümü kademeli olarak yayına alır ve sorun çıkarsa geri döner. Tek sunucuda bu işlerin hiçbiri gerçek bir probleme dönüşmez; problem sunucu ve servis sayısı arttıkça büyür.
Bilgi
Kubernetes nedir diye araştıranların sık karıştırdığı nokta şudur: Kubernetes konteyner çalıştırmaz, konteyner çalıştıran makineleri yönetir. Konteyneri paketleyen ve çalıştıran katman ayrıdır. Kubernetes bunların üstünde “nerede, kaç tane ve hangi sürüm” kararlarını veren orkestra şefidir.
Temel Kavramlar, Küme, Düğüm ve Pod
Kubernetes nedir sorusunun pratik tarafı üç kavramla başlar. Küme (cluster), birlikte yönetilen sunucuların tamamıdır. Düğüm (node), kümedeki her bir sunucudur; bir kısmı kontrol düzlemini, yani kararları veren bileşenleri çalıştırır, geri kalanı iş yükünü taşır. Pod ise Kubernetes’in çalıştırdığı en küçük birimdir; bir ya da birkaç konteyner ve bunların paylaştığı ağ ile depolama ayarlarından oluşur.
Bunların üzerine dağıtım (deployment), servis ve giriş (ingress) gibi nesneler gelir. Dağıtım “kaç kopya, hangi sürüm” sorusunu tanımlar, servis podlara sabit bir ağ adresi verir, giriş ise dışarıdan gelen HTTP trafiğini doğru servise yönlendirir. Trafiğin kopyalar arasında nasıl bölündüğünü genel çerçevede merak ediyorsanız yük dengeleme nedir yazısı iyi bir başlangıçtır.
Maliyet ve Karmaşıklık, Görünmeyen Fatura
Kubernetes’in lisans bedeli yoktur ama ücretsiz değildir. Resmî kurulum aracı kubeadm’in gereksinimlerine göre her makinede en az 2 GB RAM, kontrol düzlemi makinelerinde en az 2 işlemci bulunmalı ve kümedeki bütün makineler birbirine tam ağ erişimine sahip olmalı. Yüksek erişilebilir bir küme için kontrol düzlemi birden fazla sunucuya dağıtılır; iş yükünü taşıyan düğümler bunun üstüne eklenir. Yani tek bir web uygulaması için başlangıçta bile birkaç sunucunun faturası söz konusudur.
Asıl maliyet ise insan emeğidir. Küme sürüm yükseltmeleri, sertifika yenileme, ağ eklentisi, kalıcı depolama, izleme, log toplama ve yetkilendirme ayrı ayrı bilgi ister. Kubernetes bunların çoğunu kutudan çıkar çıkmaz vermez; resmî doküman da onun hazır bir platform hizmeti olmadığını, izleme ve log gibi parçaların kullanıcı tarafından seçildiğini açıkça söyler.
Dikkat
Kubernetes özgeçmişte iyi görünür, bu yüzden bazı ekipler ihtiyaç doğmadan küme kurar. Tek sunucuya sığan bir uygulamayı kümeye taşımak, çözmek istediğiniz sorundan daha büyük bir sorun yaratabilir: arıza anında hatanın uygulamada mı, ağ katmanında mı yoksa küme bileşenlerinde mi olduğunu bulmak ciddi deneyim ister.
Küçük Projede Docker Compose Yeter mi
Çoğu küçük ve orta proje için cevap evettir. Docker Compose, birden fazla konteyneri tek bir yapılandırma dosyasıyla tanımlayıp tek sunucuda birlikte çalıştırır. Web uygulaması, veritabanı, önbellek ve arka plan işçisi gibi dört beş servisten oluşan bir sistem Compose ile rahatça yönetilir; yeniden başlatma politikaları sayesinde çöken konteyner de otomatik kalkar. Compose ile çoklu konteyner yönetimini adım adım Docker Compose kullanımı kartında bulabilirsiniz.
Compose’un sınırı tek makinedir. Sunucu kapanırsa her şey kapanır, bir sunucunun kaynağı yetmezse iş yükünü ikinci bir sunucuya kendiliğinden yaymaz. Bu sınıra ulaşılmadan önce genellikle daha büyük bir sunucuya geçmek, yani dikey büyümek, en ucuz ve en hızlı çözümdür. Konteyner iş yükleri için hangi sunucu tipinin uygun olduğunu Docker için hangi sunucu yazısı ayrıntılı karşılaştırıyor.
| Durum | Docker Compose | Kubernetes |
|---|---|---|
| Sunucu sayısı | Tek sunucu | Birden fazla düğüm, genellikle üç ve üzeri |
| Kurulum ve öğrenme | Saatler, tek yapılandırma dosyası | Haftalar, çok sayıda kavram ve bileşen |
| Sunucu arızasında | Servis durur, elle ya da yedekten dönülür | İş yükü diğer düğümlere taşınır |
| Ölçekleme | Daha büyük sunucuya geçerek, dikey | Kopya ve düğüm ekleyerek, yatay ve otomatik |
| Kime uygun | Tek uygulama, küçük ekip, öngörülebilir trafik | Çok servis, sık dağıtım, kesintisizlik şartı olan ekip |

Kubernetes Ne Zaman Gerçekten Gerekir
Üç işaret aynı anda görünüyorsa Kubernetes’i ciddi biçimde düşünme zamanı gelmiştir. Birincisi, sistem artık tek sunucuya sığmıyor ve birden fazla sunucuya yayılmak zorunda. İkincisi, çok sayıda servisi günde birkaç kez kesintisiz güncellemeniz gerekiyor. Üçüncüsü, ekipte bu platformu işletecek, gece gelen alarma bakabilecek en az bir kişi var. Bunlardan biri eksikse, daha büyük bir sunucu ya da iki sunucu ve bir yük dengeleyici gibi daha sade bir mimari genellikle daha doğrudur.
Ara çözümler de vardır. Tek düğümde çalışan hafif Kubernetes dağıtımları, ekibin platformu öğrenmesi için iyi bir deneme ortamıdır. Büyük bulut sağlayıcılarının yönetilen Kubernetes hizmetleri kontrol düzlemini üstlenir, ama çalışan uygulamanın sorumluluğu yine sizde kalır.
Örnek senaryo
Beş kişilik bir yazılım ekibi, randevu uygulamasını yedi konteynerle tek bir 8 çekirdek, 16 GB bellekli sunucuda Docker Compose ile çalıştırıyordu. Kubernetes’e geçmek için bir ay ayırmayı düşündüler. Ölçümlere baktıklarında işlemci kullanımının zirvede yüzde 45’te kaldığını, asıl sıkıntının ise sürüm yayınlarken yaşanan bir iki dakikalık kesinti olduğunu gördüler. Kümeyi ertelediler, dağıtım betiğini iki kopya arasında sırayla güncelleyecek şekilde değiştirdiler ve kesintiyi bir günde çözdüler.
Kendi Kümenizi Bulut Sunucuda Kurmak
Kubernetes nedir sorusunu cevaplayıp ihtiyacı netleştirdiyseniz sıradaki karar altyapıdır. Kümeyi birkaç sanal sunucu üzerine kendiniz kurabilirsiniz; bu durumda işletim sistemi, Kubernetes bileşenleri, sürüm yükseltmeleri, yedekler ve izleme sizin sorumluluğunuzdadır. Düğümler arasında hızlı ve kararlı ağ, hızlı disk ve gerektiğinde kaynağı büyütebilme bu kurulumda belirleyicidir. Sanal sunucu tipleri arasındaki farkı VPS mi VDS mi bulut sunucu mu karşılaştırmasında bulabilirsiniz.
Sonuç
Kubernetes nedir sorusunun karar açısından cevabı şudur: çok sunuculu, çok servisli ve kesintisizlik şartı olan sistemler için güçlü bir araç. Tek sunucuya sığan küçük bir proje için ise Docker Compose, iyi bir yedek planı ve gerektiğinde daha büyük bir sunucu, aynı sonucu çok daha az emekle verir. Kümeye geçiş kararını teknoloji merakı değil, ölçülen ihtiyaç belirlemelidir.
Kubernetes Kararından Önce Kontrol Listesi
- Mevcut sunucunuzun zirve saatlerdeki işlemci, bellek ve disk kullanımını ölçün.
- Asıl sorunun kapasite mi, kesintisiz dağıtım mı yoksa arıza toleransı mı olduğunu yazın.
- Daha büyük bir sunucuya geçmenin sorunu çözüp çözmeyeceğini önce deneyin.
- Kümeyi işletecek ve alarmlara bakacak kişiyi adıyla belirleyin.
- Kalıcı veri tutan servislerin (veritabanı, dosya deposu) kümede mi dışında mı duracağına karar verin.
- Deneme için tek düğümlü hafif bir dağıtımla küçük bir ortam kurun.
- Küme sürüm yükseltme ve yedek planını kurulumdan önce yazın.
Sıkça sorulan sorular
Teknik olmayan bir yöneticiye kubernetes nedir diye sorulursa ne söylenir?
Bir liman işletmesi gibi düşünebilirsiniz. Konteynerler yüktür, sunucular gemidir, Kubernetes ise hangi konteynerin hangi gemiye yükleneceğine, bir gemi arızalanırsa yükün nereye aktarılacağına ve talep artınca kaç gemi daha gerekeceğine karar veren liman yönetimidir. Tek bir gemi için liman yönetimi kurulmaz.
Kubernetes ile Docker arasındaki fark ne?
Docker uygulamayı konteyner olarak paketler ve bir makinede çalıştırır. Kubernetes ise çok sayıda makinede çalışan konteynerlerin nerede, kaç kopya ve hangi sürümle çalışacağını yönetir. Biri paketleme ve çalıştırma aracı, diğeri orkestrasyon platformudur; genellikle birlikte kullanılırlar.
Kubernetes tek sunucuda çalışır mı?
Çalışır. Tek düğümlü hafif dağıtımlar öğrenme, test ve küçük ortamlar için kullanılır. Ancak tek sunucuda Kubernetes’in en önemli avantajı olan sunucu arızasına dayanıklılık ortadan kalkar. Bu durumda Docker Compose çoğunlukla daha sade ve daha az kaynak tüketen bir seçimdir.
Kubernetes için en az kaç sunucu gerekir?
Resmî kurulum aracı tek makinede bile çalışır, ama arızaya dayanıklı bir üretim kümesi için genellikle en az üç sunucu önerilir. Kontrol düzleminin yüksek erişilebilir olması isteniyorsa kontrol düzlemi de birden fazla makineye dağıtılır; iş yükü düğümleri bunun üzerine eklenir.
WordPress sitesi için Kubernetes mantıklı mı?
Tek bir WordPress sitesi, hatta birkaç site için mantıklı değildir. Önbellekli bir hosting paketi ya da tek bir sanal sunucu aynı işi çok daha az bakımla görür. Kubernetes ancak yüzlerce siteyi otomatik olarak açıp kapatan bir platform kuruyorsanız anlam kazanır.
Narhost’ta
Bulut sunucularımız NVMe disk, 50 Gbps port ve tarayıcı terminaliyle anında kurulur; Docker Compose ya da kendi Kubernetes kümeniz için Ubuntu ve Debian seçenekleri hazır, paket yükseltmesi müşteri panelinden yapılır.