TR/EN
Blog

Kubernetes Nedir? Ne İşe Yarar ve Nasıl Çalışır?

Yayın tarihi: · 9 dk okuma

Kubernetes nedir? En kısa haliyle: container'larınızı (konteynerlarınızı) birden fazla sunucu üzerinde otomatik olarak çalıştıran, ölçeklendiren ve ayakta tutan açık kaynak bir platform. Kısaca K8s diye de yazılıyor; K ile s arasında 8 harf olduğu için. Bu yazıda Kubernetes'in ne işe yaradığını, temel kavramlarını ve gerçekten ihtiyacınız olup olmadığını teknik jargona boğmadan anlatmaya çalıştık.

Kubernetes Ne İşe Yarar?

Diyelim ki uygulamanızı Docker ile container haline getirdiniz. Tek sunucuda bir iki container çalıştırmak kolay. Ama iş büyüyünce sorular başlıyor: Container çökerse kim yeniden başlatacak? Trafik artınca kopya sayısını kim artıracak? Yeni sürümü kesinti olmadan nasıl yayına alacağız? Sunuculardan biri giderse içindeki container'lar ne olacak?

Kubernetes tam olarak bu işleri üstleniyor. Siz ona "bu uygulamadan her zaman 3 kopya çalışsın" diyorsunuz, o da bunu sağlamak için sürekli çalışıyor. Bir kopya çökerse yenisini başlatıyor, bir sunucu giderse container'ları diğer sunuculara taşıyor. Herşey sizin tarif ettiğiniz "olması gereken duruma" göre otomatik yönetiliyor.

Biraz tarihçe: Kubernetes, Google'ın kendi içinde yıllarca kullandığı Borg sisteminden edindiği tecrübeyle geliştirildi, 2014'te açık kaynak olarak yayınlandı ve bugün Cloud Native Computing Foundation (CNCF) çatısı altında geliştiriliyor. İsmi Yunanca'da "dümenci" anlamına geliyor, logosundaki gemi dümeni de buradan.

Kubernetes'in Temel Kavramları

Kubernetes ilk bakışta çok fazla yeni kelimeyle geliyor. En sık karşılaşacaklarınızı bir tabloda topladık:

KavramNe demek?
ClusterKubernetes'in yönettiği sunucuların tamamı.
NodeCluster'daki tek bir sunucu (fiziksel veya sanal).
Control PlaneCluster'ın beyni; neyin nerede çalışacağına karar verir, durumu takip eder.
PodKubernetes'teki en küçük birim; bir veya birkaç container'ı birlikte çalıştırır.
DeploymentBir uygulamanın kaç kopya çalışacağını ve nasıl güncelleneceğini tanımlar.
ServicePod'lara sabit bir adres verir, trafiği aralarında dağıtır.
IngressDışarıdan gelen HTTP/HTTPS trafiğini alan adına göre doğru servise yönlendirir.
NamespaceCluster'ı mantıksal bölümlere ayırır (ör. test ve prod).
ConfigMap / SecretAyarları ve şifre gibi gizli bilgileri uygulamadan ayrı tutar.
PersistentVolumePod silinse bile kaybolmayan kalıcı disk alanı (veritabanları için).

Kubernetes Nasıl Çalışır?

Kubernetes'in mantığı "istenen durum" (desired state) üzerine kurulu. Siz YAML dosyalarıyla ne istediğinizi yazıyorsunuz, örneğin şöyle bir deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:1.27
          ports:
            - containerPort: 80

Bu dosyayı kubectl apply -f web.yaml ile cluster'a verdiğinizde Control Plane işe koyuluyor: uygun node'ları seçiyor, 3 pod başlatıyor ve sonra sürekli kontrol ediyor. Gerçek durum istenen durumdan saparsa (bir pod çöktü, bir node kapandı) farkı kendisi kapatıyor. Sizin "şunu başlat, bunu yeniden başlat" diye uğraşmanıza gerek kalmıyor.

Docker ile Kubernetes Arasındaki Fark

En çok karıştırılan konulardan biri bu. Aslında ikisi rakip değil, birlikte çalışıyorlar:

DockerKubernetes
Ne yapar?Container oluşturur ve çalıştırırÇok sayıda container'ı birden fazla sunucuda yönetir
ÖlçekGenelde tek sunucuBirden fazla sunucu (cluster)
Çöken containerRestart politikasıyla sınırlıOtomatik yeniden başlatır, gerekirse başka node'a taşır
ÖlçeklendirmeManuelOtomatik (HPA ile yüke göre)
GüncellemeManuelKesintisiz kademeli güncelleme (rolling update), geri alma
Öğrenme eğrisiKolayDaha dik

Yani Docker ile container imajlarınızı hazırlıyorsunuz, Kubernetes ile o imajları üretimde yönetiyorsunuz.

Kubernetes, Docker Compose ve Docker Swarm Karşılaştırması

Docker ComposeDocker SwarmKubernetes
Kullanım alanıTek sunucu, geliştirme ve küçük projelerKüçük–orta cluster'larKüçükten çok büyüğe her ölçek
Kurulum zorluğuÇok kolayKolayOrta–zor (hazır kurulumla kolay)
Otomatik ölçeklendirmeYokSınırlıVar
Kendi kendini iyileştirmeSınırlıVarVar, gelişmiş
EkosistemKüçükKüçük, durağanÇok geniş (Helm, ArgoCD, Prometheus...)
Kimler içinGeliştirici, tek sunuculu uygulamaBasit dağıtık yapı isteyenlerMikroservis, büyüyen ekipler, üretim ortamları

Kubernetes'in Avantajları ve Dezavantajları

Avantajları

  • Kendi kendini iyileştirme: Çöken pod'lar otomatik yeniden başlatılır.
  • Otomatik ölçeklendirme: Yük artınca kopya sayısı artar, azalınca düşer.
  • Kesintisiz güncelleme: Yeni sürüm kademeli yayına alınır, sorun olursa tek komutla geri alınır.
  • Taşınabilirlik: Aynı YAML dosyaları kendi sunucunuzda da, farklı bir sağlayıcıda da çalışır.
  • Dev ekosistem: Helm, ArgoCD, Prometheus, cert-manager gibi araçlarla hemen herşeyin hazır bir çözümü var.

Dezavantajları

  • Öğrenme eğrisi: Kavram sayısı fazla, ilk haftalar yorucu olabilir.
  • Kurulum ve bakım: Sıfırdan cluster kurmak, sertifikaları ve sürüm yükseltmelerini yönetmek emek ister.
  • Küçük projeler için fazla gelebilir: Tek bir web sitesi için Kubernetes kurmak, sinek avlamak için top kullanmak gibi olabilir.

Kubernetes'e Ne Zaman Geçmeli?

Kubernetes muhtemelen size göre, eğer:

  • Birden fazla servisten oluşan (mikroservis) bir uygulamanız varsa,
  • Trafiğiniz dalgalı ve otomatik ölçeklendirmeye ihtiyaç duyuyorsanız,
  • Sık sık yeni sürüm çıkıyor ve kesintisiz dağıtım istiyorsanız,
  • CI/CD ve GitOps ile süreçlerinizi otomatikleştirmek istiyorsanız.

Tek bir WordPress sitesi yada küçük bir API için ise genelde Docker Compose ile çalışan bir Docker hazır sanal sunucu fazlasıyla yeterli olur.

Kubernetes'i Nerede Çalıştırabilirsiniz?

Kendin kur (self-managed)Büyük bulutlarda yönetilen KubernetesSingle node Kubernetes server
KurulumSizde (kubeadm, k3s, RKE2...)SağlayıcıdaHazır teslim
MaliyetSunucu maliyeti + emekControl plane + worker + trafik ücretleriSabit aylık ücret
Yüksek erişilebilirlikKurguya bağlıVarYok (tek sunucu)
Kimler içinDeneyimli ekiplerBüyük ve kritik iş yükleriÖğrenme, test, staging, küçük–orta prod

Kubernetes'i öğrenmek ya da test/staging ortamı kurmak istiyorsanız en hızlı yol hazır bir cluster ile başlamak. VECDC Kubernetes Server paketleri Kubernetes ön kurulu geliyor, aylık $6'dan başlıyor ve otomatik kurulum sayesinde yaklaşık 5 dakikada kubeconfig dosyanız elinizde oluyor. Çok node'lu, üretime hazır bir cluster lazımsa Kubernetes danışmanlık ekibimizle birlikte kurgulayabiliriz.

İlk Adımlar: Birkaç Temel kubectl Komutu

Cluster'a bağlandıktan sonra en çok kullanacağınız komutlar şunlar:

kubectl get nodes                 # cluster'daki node'ları listeler
kubectl get pods -A               # tüm namespace'lerdeki pod'lar
kubectl apply -f web.yaml         # YAML dosyasındaki kaynakları oluşturur/günceller
kubectl logs deploy/web           # uygulamanın loglarını gösterir
kubectl scale deploy/web --replicas=5   # kopya sayısını 5'e çıkarır
kubectl rollout undo deploy/web   # son güncellemeyi geri alır

Sık Sorulan Sorular

Kubernetes ücretsiz mi?

Evet, Kubernetes açık kaynak ve ücretsizdir. Ödediğiniz para, Kubernetes'i çalıştıracağınız sunuculara ve varsa yönetilen hizmet ücretlerine gider.

Kubernetes öğrenmek için Docker bilmek gerekir mi?

Şart değil ama çok yardımcı olur. Container mantığını ve Dockerfile yazmayı bilmek, Kubernetes kavramlarını çok daha hızlı oturtmanızı sağlar.

Kubernetes tek bir sunucuda çalışır mı?

Evet. Single node kurulumda control plane ve worker aynı sunucuda çalışır. Öğrenme, test, staging ve küçük–orta ölçekli iş yükleri için ekonomik bir seçenektir; ancak tek sunucu olduğu için donanım seviyesinde yüksek erişilebilirlik sağlamaz.

K8s ne demek?

K8s, Kubernetes kelimesinin kısaltmasıdır: K ile s arasındaki 8 harf yerine 8 rakamı yazılır.

Kısacası

Kubernetes, container'larınızı birden fazla sunucuda otomatik çalıştıran, ölçeklendiren ve ayakta tutan bir platform. Öğrenmesi biraz zaman alıyor ama büyüyen projelerde operasyon yükünü ciddi şekilde azaltıyor. İşin güzel yanı, başlamak için büyük bir altyapıya ihtiyacınız yok; tek bir sunucuda bile öğrenmeye başlayabilirsiniz. Aklınıza takılan birşey olursa bize yazın.

Sanal Sunucunuz 5 Dakikada Hazır

Adanmış kaynaklı NVMe sanal sunucu paketleri aylık $6'dan başlıyor.

Paketleri İncele →