Kubernetes
Eş anlamlılar: K8s
Kubernetes (K8s), container uygulamalarının dağıtımını, ölçeklemesini ve yönetimini otomatikleştiren açık kaynak orkestrasyon platformudur. Google tarafından başlatıldı, CNCF tarafından yönetilir. Bulut-native uygulamaların endüstri standardıdır.
Kubernetes Nedir?
Kubernetes (Yunanca "dümenci" anlamında, K8s olarak kısaltılır), 2014'te Google'ın Borg/Omega deneyiminden açık kaynak olarak çıkan container orkestrasyon platformudur. Cloud Native Computing Foundation (CNCF) tarafından yönetilir. Binlerce container'ı birden fazla sunucuda otomatik olarak dağıtır, ölçekler, yükü dengeler ve self-healing yapar.
Kubernetes Bileşenleri
Control Plane (Master)
- API Server: Tüm işlemlerin merkezi
- etcd: Cluster state'in dağıtık key-value store'u
- Scheduler: Pod'ları hangi node'a yerleştireceğini karar verir
- Controller Manager: Desired vs current state reconciliation
- Cloud Controller Manager: Cloud provider entegrasyonu
Worker Node
- kubelet: Node agent
- kube-proxy: Network proxy
- Container Runtime: containerd, CRI-O, Docker
Temel Kavramlar
- Pod: En küçük birim — 1+ container
- Deployment: Pod replicaları yönet
- Service: Pod'ları dışa sun
- Ingress: HTTP yönlendirme
- ConfigMap: Yapılandırma
- Secret: Gizli veri
- Namespace: Sanal cluster bölümü
- PersistentVolume: Kalıcı depolama
- StatefulSet: Durum tutan uygulamalar
- DaemonSet: Her node'da 1 pod
- Job/CronJob: Görev çalıştırma
YAML Manifest Örneği
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: web
image: myapp:v1
ports:
- containerPort: 80
kubectl Komutları
kubectl apply -f deployment.yamlkubectl get podskubectl describe pod pod-namekubectl logs pod-namekubectl exec -it pod-name -- shkubectl scale deployment myapp --replicas=5kubectl rollout status deployment/myapp
Özellikler
- Auto-scaling (HPA, VPA)
- Self-healing (crashlı pod'u yeniden başlatır)
- Rolling update ve rollback
- Load balancing
- Service discovery
- Storage orchestration
- Secret ve config yönetimi
- Batch execution
- Monitoring ve logging entegrasyonu
Kubernetes Dağıtımları
- Vanilla Kubernetes: kubeadm
- OpenShift: Red Hat enterprise K8s
- Rancher: Multi-cluster yönetim
- k3s: Hafif K8s (edge, IoT)
- Minikube: Local development
- Kind: K8s in Docker
Managed Kubernetes
- GKE: Google Kubernetes Engine
- EKS: AWS Elastic Kubernetes Service
- AKS: Azure Kubernetes Service
- DigitalOcean Kubernetes
- Linode Kubernetes Engine
Kubernetes Ekosistem
- Helm: Package manager
- Istio/Linkerd: Service mesh
- Prometheus + Grafana: Monitoring
- ArgoCD / Flux: GitOps
- Cert-Manager: SSL otomasyonu
- External DNS: DNS otomasyon
- NGINX Ingress / Traefik: Ingress controller
Kubernetes Zorluk Alanları
- Öğrenme eğrisi yüksek
- Network karmaşıklığı
- Stateful uygulamalar için zorlu
- Maliyet yönetimi
- Security posture
- Upgrade yönetimi
Ne Zaman Kubernetes?
- 10+ mikroservis varsa
- Auto-scaling ihtiyacı kritikse
- Multi-cloud/hybrid hedeflenirse
- DevOps olgunluğu yüksekse
- CI/CD pipeline gelişmişse
Küçük monolith için Kubernetes over-engineering'dir. Docker Compose veya VDS yeterli olabilir.
MeoHost ve Kubernetes
MeoHost enterprise müşterileri için managed Kubernetes cluster kurulumu ve yönetimi sunar. vCenter + Rancher entegrasyonu, kendi veri merkezinizde private K8s veya dedicated sunucular üzerinde kurulum yapılandırılabilir.