Kubernetes Nedir? Container Orkestrasyonu Başlangıç Rehberi
Docker ile container oluşturdunuz, harika. Ama 50 container'ınız olduğunda bunları kim yönetecek? Hangisi çöktü, hangisine ekstra kaynak lazım? İşte Kubernetes (K8s), bu kaosa düzen getiren orkestra şefidir.
Kubernetes Tanımı
Kubernetes, Google tarafından geliştirilmiş ve açık kaynak olarak sunulmuş bir container orkestrasyon platformudur. Containerize edilmiş uygulamaları otomatik olarak dağıtır, ölçekler ve yönetir.
Temel Kavramlar
Pod
Kubernetes'in en küçük dağıtım birimi. Bir veya daha fazla container'ı barındırır:
apiVersion: v1
kind: Pod
metadata:
name: bilgeone-api
spec:
containers:
- name: api
image: bilgeone/api:v1.2
ports:
- containerPort: 3000
Node
Pod'ların çalıştığı fiziksel veya sanal makine. İki türü var:
- Master Node — Cluster'ı yönetir (API Server, Scheduler, Controller)
- Worker Node — Pod'ları çalıştırır
Service
Pod'lara sabit bir ağ adresi sağlar. Pod'lar gelip gidebilir, Service her zaman aynı adreste:
apiVersion: v1
kind: Service
metadata:
name: bilgeone-api-service
spec:
selector:
app: bilgeone-api
ports:
- port: 80
targetPort: 3000
type: LoadBalancer
Deployment
Pod'ların istenilen durumunu tanımlar. Kubernetes, gerçek durumu bu tanıma eşitlemeye çalışır:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bilgeone-api
spec:
replicas: 3
selector:
matchLabels:
app: bilgeone-api
template:
metadata:
labels:
app: bilgeone-api
spec:
containers:
- name: api
image: bilgeone/api:v1.2
Bu tanım "her zaman 3 adet bilgeone-api Pod'u çalıştır" der. Biri çökerse, K8s otomatik yenisini başlatır.
Namespace
Cluster içinde mantıksal izolasyon:
production namespace: bilgeone-api, bilgeone-web
staging namespace: bilgeone-api-staging
development namespace: bilgeone-api-dev
Kubernetes Mimarisi
┌─────────────────────────────────┐
│ MASTER NODE │
│ ┌──────────┐ ┌──────────┐ │
│ │API Server│ │Scheduler │ │
│ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ │
│ │Controller│ │ etcd │ │
│ │Manager │ │(key-val) │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────┘
↕ ↕
┌──────────┐ ┌──────────┐
│Worker │ │Worker │
│Node 1 │ │Node 2 │
│┌──┐ ┌──┐│ │┌──┐ ┌──┐ │
││P1│ │P2││ ││P3│ │P4│ │
│└──┘ └──┘│ │└──┘ └──┘ │
└──────────┘ └──────────┘
Kubernetes Ne Zaman Kullanılmalı?
✅ Kullanın
- 10+ mikroservis
- Yüksek erişilebilirlik gereksinimi
- Otomatik ölçekleme ihtiyacı
- Multi-cloud veya hybrid cloud stratejisi
- DevOps olgunluğu yüksek ekipler
❌ Kullanmayın
- Küçük projeler (1-3 servis)
- Basit web siteleri
- DevOps deneyimi olmayan ekipler
- Maliyet kısıtı yüksek projeler
Kubernetes Alternatifleri
| Çözüm | Avantaj | Ne Zaman? | |-------|---------|-----------| | Docker Compose | Basit, yerel geliştirme | Tek sunucu | | Google Cloud Run | Serverless, yönetim yok | Basit containerlar | | AWS ECS | AWS entegrasyonu | AWS ekosistemi | | Nomad | Hafif, K8s'ten basit | Orta ölçek |
Sonuç
Kubernetes güçlü ama karmaşıktır. Gerçekten ihtiyacınız olup olmadığını değerlendirin. Çoğu startup ve KOBİ için Cloud Run veya ECS gibi managed çözümler yeterlidir. Kubernetes'e geçiş, ekibinizin olgunluğuyla paralel olmalıdır.
Container orkestrasyonu ve Kubernetes'i interaktif olarak öğrenmek için LabLudus platformundaki DevOps kariyer yolunu takip edin.