Bulut Çözümleri

Yeni Başlayanlar İçin Kubernetes: Ölçeklenebilir Uygulamalar İçin Konteyner Orkestrasyonu

Mudimedia Ekibi · 31 Temmuz 2026 · 9 dk okuma

Yeni Başlayanlar İçin Kubernetes: Ölçeklenebilir Uygulamalar İçin Konteyner Orkestrasyonu

Kubernetes Nedir ve Neden Önemlidir?

Günümüzün hızlı gelişen yazılım geliştirme ortamında, uygulamalarınızı güvenilir, ölçeklenebilir ve yönetilebilir bir şekilde dağıtmak kritik bir ihtiyaçtır. Kubernetes, bu zorlukları çözmek için tasarlanmış açık kaynak bir konteyner orkestrasyonu platformudur. Google tarafından geliştirilen ve şimdi Cloud Native Computing Foundation tarafından yönetilen Kubernetes, dünyanın en güçlü ve yaygın olarak kullanılan orkestrasyonu platformu haline gelmiştir.

Konteyner teknolojisinin (özellikle Docker) yaygınlaşmasıyla birlikte, yazılım geliştirme ekipleri yüzlerce hatta binlerce konteyneri yönetme ihtiyacı ile karşı karşıya kalmıştır. İşte burada Kubernetes devreye giriyor. Kubernetes, konteynerlerinizi otomatik olarak dağıtmak, ölçeklendirmek ve yönetmek için gerekli araçları sağlar.

"Kubernetes, modern yazılım geliştirmenin omurgasıdır ve 2025'te bulut-native uygulamalar geliştirmek isteyen her şirketin bilmesi gereken bir teknolojidir."

Konteyner Orkestrasyonu Nedir?

Konteyner orkestrasyonu, birden fazla konteynerin otomatik olarak dağıtılması, yönetilmesi ve ölçeklendirilmesi işlemidir. Geleneksel sunucu ortamlarında uygulamaları manuel olarak dağıtmak ve yönetmek zaman alıcı, hata yapılabilir ve ölçeklenebilirlik açısından sınırlıdır.

Konteyner Orkestrasyonunun Ana Görevleri

  • Otomatik Dağıtım: Konteynerleriniz otomatik olarak uygun sunuculara yerleştirilir
  • Kaynak Optimizasyonu: CPU ve bellek kullanımı en verimli şekilde dağıtılır
  • Yüksek Erişilebilirlik: Başarısız konteynerler otomatik olarak yeniden başlatılır
  • Ağ Yönetimi: Konteynerler arasındaki haberleşme otomatik olarak yapılandırılır
  • Depolama Yönetimi: Kalıcı veriler güvenli bir şekilde yönetilir
  • Ölçeklendirme: Talep arttıkça uygulamalar otomatik olarak ölçeklendirilir

Kubernetes'in Temel Mimarisi

Kubernetes, master-worker (veya control plane-node) mimarisine dayanır. Sistemi anlamak için temel bileşenleri bilmek önemlidir.

Control Plane (Kontrol Düzlemi)

Control plane, Kubernetes kümesinin beynini oluşturur. Tüm kararları alır, durumu yönetir ve komutları uygular. Ana bileşenleri şunlardır:

  • API Server: Kubernetes'in merkezi iletişim noktası
  • etcd: Kümenin tüm durumunu saklayan anahtar-değer veritabanı
  • Scheduler: Podları uygun worker düğümlerine yerleştirir
  • Controller Manager: Çeşitli kontrolörleri çalıştırır ve sistemi istenen durumda tutmaya çalışır

Worker Düğümleri

Worker düğümleri, konteynerlerin gerçekten çalıştığı makinelerdir. Her worker düğümü şu bileşenleri içerir:

  • Kubelet: Düğüm aracısı, kontrol düzleminin komutlarını yerine getirir
  • Container Runtime: Docker, containerd veya diğer konteyner çalıştırma ortamları
  • kube-proxy: Ağ iletişimini yönetir

Pod Kavramı

Pod, Kubernetes'in en küçük dağıtılabilir birimidir. Bir veya daha fazla konteyneri içerebilir (genellikle bir tane). Podlar kısa ömürlüdür ve Kubernetes tarafından gerektiğinde oluşturulup silinirler.

Kubernetes'in Ana Özellikleri ve Faydaları

Otomatik Ölçeklendirme

Kubernetes, uygulamanızın kaynak kullanımını izler ve otomatik olarak pod sayısını artırıp azaltır. Örneğin, web sitenize trafiğin aniden artması durumunda, Kubernetes otomatik olarak daha fazla pod başlatır. Talep azaldığında da gereksiz podları kapatır. Bu, maliyetleri düşürür ve performansı yüksek tutar.

Kendini İyileştirme ve Yüksek Erişilebilirlik

Bir pod çökerse, Kubernetes otomatik olarak yenisini başlatır. Bir worker düğümü başarısız olursa, o düğümdeki podlar başka düğümlerde yeniden başlatılır. Bu, uygulamanızın kesintisiz hizmet sunmasını sağlar.

Deklaratif Yapılandırma

Kubernetes ile uygulamanızın ne olması gerektiğini belirtirsiniz, Kubernetes ise nasıl sağlanacağını otomatik olarak halleder. YAML dosyaları kullanarak konfigürasyonları tanımlayabilirsiniz.

Güncelleme Stratejileri

Uygulamanız sürümünü güncellemek istediğinizde, Kubernetes bunu sıfır kapalı kalma süresiyle (zero-downtime) gerçekleştirir. Rolling update stratejisi, podları kademeli olarak yeni sürüme günceller.

Portabilite

Kubernetes kullanarak yazılan uygulamalar, herhangi bir bulut sağlayıcısında (AWS, Google Cloud, Azure) veya kendi veri merkezinizde aynı şekilde çalışır. Bu vendor lock-in sorununu ortadan kaldırır.

Kubernetes ile Başlamak: Pratik Adımlar

Adım 1: Ortamı Hazırlamak

Kubernetes'e başlamadan önce, local ortamınızda test etmek için seçenekleriniz vardır:

  • Docker Desktop: Windows ve Mac'te Kubernetes desteği içerir
  • Minikube: Tek makinede minimal Kubernetes kümesi çalıştırır
  • Kind: Docker'ı kullanarak Kubernetes testleri gerçekleştirir
  • Managed Services: AWS EKS, Google GKE, Azure AKS gibi yönetilen hizmetler

Başlangıçta, Minikube veya Docker Desktop ile çalışmaya başlamanızı öneririz. Bunlar kurulması kolay ve öğrenme amaçlı yeterlidir.

Adım 2: Kubectl Kurulması

Kubectl, Kubernetes ile iletişim kurmak için kullanılan komut satırı aracıdır. Kubectl yükledikten sonra, kümenizdeki kaynakları yönetebilirsiniz:

  1. Kubectl'ı resmi web sitesinden indirin ve kurun
  2. Kurulumun başarılı olduğundan emin olmak için `kubectl version` çalıştırın
  3. Kümenizdeki düğümleri listelemek için `kubectl get nodes` komutunu kullanın

Adım 3: İlk Aplikasyonunuzu Dağıtın

En basit yöntemle, komut satırı aracılığıyla bir pod oluşturun:

kubectl run my-app --image=nginx:latest --port=80

Bu komut, nginx konteyneri çalıştıran bir pod oluşturur. Kontrol etmek için `kubectl get pods` yazın.

Adım 4: YAML Manifest Dosyalarıyla Çalışmak

Üretim ortamlarında, uygulamaları YAML dosyaları aracılığıyla tanımlamanız gerekir. Örnek bir Deployment manifest dosyası:

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0
ports:
- containerPort: 8080

Bu manifest dosyası, "my-app" imajından 3 kopya (replica) pod çalıştıran bir Deployment oluşturur. Dosyayı uygulamak için `kubectl apply -f deployment.yaml` komutunu kullanın.

Kubernetes'te Önemli Kaynaklar

Deployment

Deployment, en yaygın kullanılan Kubernetes kaynağıdır. Stateless uygulamalar için ideal olandır. Pod sayısını istenen düzeyde tutmayı, güncellemeleri yönetmeyi ve geri alma işlemini otomatikleştirir.

Service

Podlar kısa ömürlü olduğundan ve IP adresleri değişebileceğinden, Service kaynağı kullanılarak sabit bir erişim noktası sağlanır. Service türleri:

  • ClusterIP: Sadece küme içinde erişilebilir (varsayılan)
  • NodePort: Dış ağdan erişim sağlar
  • LoadBalancer: Bulut sağlayıcısının load balancer'ını kullanır
  • ExternalName: Harici bir hizmeti eşleştirir

ConfigMap ve Secret

ConfigMap, konfigürasyon verilerini saklayan kaynaktır. Secret ise hassas veriler (parolalar, API anahtarları) için kullanılır. Bu kaynakları kullanarak, uygulamanızı çevre değişkenlerine göre uyarlanabilir hale getirirsiniz.

Persistent Volume

Bazı uygulamalar kalıcı depolama gerektirir. Persistent Volume (PV) ve Persistent Volume Claim (PVC) kaynakları, depolama yönetimini basitleştirir.

Kubernetes'te En İyi Uygulamalar

Resource Requests ve Limits Belirleyin

Her konteynere CPU ve bellek talebi (request) ve limitleri belirleyin. Bu, Kubernetes'in pod'ları doğru şekilde yerleştirmesine ve kaynak yönetimini iyileştirmesine yardımcı olur:

resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"

Health Check'leri Yapılandırın

Liveness ve readiness probe'larını tanımlayın. Liveness probe, pod'un hayatta olup olmadığını kontrol eder. Readiness probe ise pod'un trafiği almaya hazır olup olmadığını belirler.

Namespace'leri Kullanın

Büyük Kubernetes kümelerinde, namespace'leri kullanarak kaynakları izole edin. Farklı projeler veya ekipler için ayrı namespace'ler oluşturun.

Image Versiyonlarını Belirtin

Konteyner imajları için her zaman belirli bir sürüm belirtin. "latest" tag'ı kullanmaktan kaçının, çünkü bu öngörülemez davranışlara neden olabilir.

RBAC (Role-Based Access Control) Uygulayın

Kubernetes kümesine erişim kontrolü sağlamak için RBAC kullanın. Her servis hesabına (service account) yalnızca gerekli izinleri verin.

Kubernetes'teki Yaygın Zorluklar ve Çözümleri

Ağ Sorunları

Kubernetes'teki ağ yapılandırması karmaşık olabilir. Podlar arasında haberleşme sorunları yaşanıyorsa, network policy'leri kontrol edin ve DNS çözümlemesini doğrulayın.

Harika Bir Şey İnşa Etmeye Hazır mısınız?

Projenizi nasıl hayata geçirebileceğimizi konuşalım.

Projenizi Başlatın