Kubernetes Nedir? Nasıl Çalışır, Avantajları ve Kullanım Alanları

Kubernetes, Docker gibi konteyner sistemleriyle oluşturulan uygulamaları otomatik olarak dağıtan, ölçeklendiren ve yöneten bir platformdur. Uygulamaların yüksek performanslı çalışmasını, hataların otomatik olarak düzeltilmesini ve kaynakların verimli kullanılmasını sağlar. Açık kaynak olması nedeniyle tüm yazılım geliştiricilerin kullanabileceği bir tekniktir.

5 dk okuma
Kubernetes

Kubernetes, Google tarafından geliştirilmiş ve 2014 yılında açık kaynak olarak yayınlanan bir konteyner orkestrasyonu platformudur. Kısaca K8s olarak da adlandırılan Kubernetes, Docker ve benzeri konteyner teknolojileriyle oluşturulan uygulamaları otomatik olarak dağıtan, ölçeklendiren, güncelleyen ve yöneten bir sistem olarak tanımlanır. Günümüzde Fortune 500 şirketlerinden startup'lara kadar binlerce kuruluş tarafından kullanılmaktadır.

Kubernetes Nasıl Çalışır?

Kubernetes, Master-Worker (Kontrol Düzlemi-İşçi Düğümü) mimarisine dayanır. Sistem üzerinde çalışan tüm konteynerler, Pod adında küçük birimlere paketlenir. Her Pod bir veya daha fazla konteyneri barındırabilir.

Kontrol Düzlemi (Master), Kubernetes kümesinin beyni gibi çalışır. Burada şu bileşenler yer alır:

  • API Server: Tüm istekleri karşılayan merkezi kapı
  • Scheduler: Pod'ları uygun işçi düğümlerine atayan karar vericisi
  • Controller Manager: Sistem durumunu istenilen hale getiren kontrol mekanizması
  • etcd: Kümenin yapılandırmasını saklayan veritabanı

İşçi Düğümleri (Worker Nodes), asıl uygulamaların çalıştığı makinelerdir. Her düğümde Kubelet ve kube-proxy bileşenleri bulunur. Kubelet, Kontrol Düzleminin talimatlarını alır ve Pod'ları düğümde çalıştırır.

Kubernetes, belirli bir sayıda Pod çalışıp çalışmadığını sürekli izler. Eğer bir Pod çökerseKubernetes otomatik olarak yeni bir Pod oluşturur. Bu sayede uygulamalar hiç kesintiye uğramadan çalışmaya devam eder.

Kubernetes'in Avantajları

  • Otomatik ölçeklendirme: Talep arttığında otomatik olarak daha fazla Pod oluşturur, azaldığında kapatır
  • Otomatik hata düzeltme: Çöken uygulamaları hemen yeniden başlatır
  • Kaynakların verimli kullanımı: CPU ve bellek gibi kaynakları en iyi şekilde dağıtır
  • Zero-downtime güncellemeleri: Uygulamayı durdurmadan yeni sürüme geçiş yapabilir
  • Çok bulut desteği: AWS, Google Cloud, Microsoft Azure gibi herhangi bir bulut platformunda çalışır
  • Açık kaynak ve ücretsiz: Hiçbir lisans ücreti yoktur
  • Geniş ekosistem: Helm, Prometheus, Istio gibi birçok ek araç ve hizmet vardır

Kubernetes'in Dezavantajları

  • Öğrenme eğrisi: Başlangıçta karmaşık ve öğrenmesi zaman alıcıdır
  • İlk kurulum karmaşıklığı: Doğru şekilde yapılandırmak deneyim gerektirir
  • Küçük projeler için overkill: Basit uygulamalar için çok fazla karmaşıklık yaratabilir
  • İnternet bağlantısı kritiktir: Kubernetes merkezi kontrol yapısı nedeniyle ağ sorunları büyük etkiye sahiptir
  • Kaynak tüketimi: Master düğümler kendileri önemli kaynaklar tüketir

Kubernetes Nerede Kullanılır?

Mikroservis Mimarisi: Büyük uygulamalar küçük, bağımsız servisler halinde yazılıyorsa Kubernetes bu servisleri yönetmek için ideal bir çözümdür. Örneğin, bir e-ticaret sitesinde ödeme servisi, kullanıcı servisi, ürün servisi birbirinden bağımsız olarak Kubernetes üzerinde çalışabilir.

Yüksek Trafikli Uygulamalar: Sosyal medya platformları, video akış hizmetleri gibi ani trafik artışlarına maruz kalan uygulamalar Kubernetes'in otomatik ölçeklendirme özelliğinden faydalanır. Black Friday'de milyonlar kişi aynı anda sayfayı ziyaret etse bile sistem otomatik olarak kapasiteyi artırır.

DevOps ve Sürekli Dağıtım: Yazılım geliştirme ekipleri Kubernetes kullanarak kodlarını otomatik olarak test edip production ortamına dağıtabilir. Yeni bir sürüm çıktığında kullanıcılar bunu fark etmeden güncellenmiş uygulamayı kullanmaya başlarlar.

Çok Bulut Stratejileri: Şirketler vendor lock-in (belirli bir sağlayıcıya bağlı kalmaktan) kaçınmak için Kubernetes kullanır. Aynı uygulama AWS'de, Google Cloud'da veya Azure'da çalışabilir.

Kubernetes'in Temel Bileşenleri

Bileşen Görevi Bulunduğu Yer
API Server Kubernetes kümesiyle iletişim sağlayan arabirim Master
Scheduler Pod'ları uygun düğüne atama Master
Controller Manager Sistem durumunu kontrol etme Master
etcd Yapılandırma ve durumu saklama Master
Kubelet Düğümde Pod'ları çalıştırma Worker Node
kube-proxy Ağ iletişimini sağlama Worker Node
Container Runtime Konteynerları çalıştırma (Docker, containerd) Worker Node

Kubernetes Dağıtım Türleri

  • Kendinden Barındırılan (Self-Hosted): Kendi sunucularınızda Kubernetes kuruyorsunuz. Tam kontrol ama tamamen sizin sorumluluğunuzda
  • Yönetilen Hizmet (Managed Service): AWS EKS, Google GKE, Azure AKS gibi bulut sağlayıcılarının yönettiği Kubernetes hizmetleri
  • Lokal Geliştirme: Minikube, Kind gibi araçlarla bilgisayarınızda test amaçlı Kubernetes kurup deneme yapabilirsiniz

Kubernetes'in Tarihçesi

Kubernetes, Google'ın kendi veri merkezlerinde milyonlarca konteyneri yönetmek için kullandığı Borg ve Omega sistemlerinden esinlenerek geliştirilmiştir. 2014 yılında açık kaynak olarak yayınlandıktan sonra hızla popüler hale geldi. Linux Foundation tarafından kurulan Cloud Native Computing Foundation (CNCF) tarafından yönetilmeye başlandı. Bugün Kubernetes, bulut bilişim dünyasının en önemli ve en yaygın kullanılan orkestrasyonu platformu konumundadır.

"Kubernetes, konteynerlerle ilgili gerçekten önemli bir kırılma noktasıdır. Uygulamaların nasıl dağıtılacağını ve yönetileceğini tamamen değiştirmiştir."

Kubernetes'i Kimin Kullanması Gerekir?

Kubernetes önerilir: Orta ve büyük ölçekli yazılım şirketleri, hızla büyüyen startup'lar, yüksek trafikli uygulamalar geliştirenleri, DevOps kültürüne geçmek isteyen kuruluşlar.

Kubernetes önermez: Çok basit, bir sunucuda çalıştırılabilen uygulamalar, Docker Compose yeterli olan projeler, yazılım geliştirme konusunda yeni ekipler.

Sık Sorulan Sorular
Kubernetes ile Docker arasındaki fark nedir?+
Docker, uygulamaları konteynerize etmek için kullanılan bir araçtır. Kubernetes ise bu konteynerları üretim ortamında dağıtan, ölçeklendiren ve yöneten bir platformdur. Docker konteynerlar oluşturursa, Kubernetes bu konteynerların sağlıklı ve verimli çalışmasını sağlar.
Kubernetes öğrenmek ne kadar zor?+
Kubernetes başlangıçta karmaşık görülebilir çünkü birçok bileşeni ve kavramı vardır. Ancak Docker ve Linux temelleri olan birisi 2-3 ay yoğun çalışmayla temel Kubernetes bilgisine sahip olabilir. Minikube gibi lokal araçlarla pratik yaparak öğrenme süreci hızlandırılabilir.
Küçük bir proje için Kubernetes kullanmalı mıyım?+
Hayır. Eğer uygulamanız tek bir sunucuda çalışabiliyorsa, Docker Compose kullanmak yeterlidir. Kubernetes en az birden fazla sunucuda çalışan, ölçeklenmesi gereken uygulamalar için tasarlanmıştır. Kubernetes'i küçük projeler için kullanmak gereksiz karmaşıklık yaratır.

K harfindeki diğer terimler