Kubernetes (kısaca K8s), container'larınızı otomatik olarak dağıtan, ölçeklendiren ve yöneten açık kaynaklı bir orkestrasyon platformudur. Google tarafından geliştirilip 2014'te açık kaynak olarak paylaşılan K8s, bugün dünya genelinde binlerce şirket tarafından üretim altyapısı olarak kullanılmaktadır.
Kubernetes Neden Gerekli?
Docker ile container oluşturmak kolaydır. Ama şu soruları düşünün:
- 50 container'ı nasıl yöneteceksiniz?
- Bir sunucu çökerse ne olacak?
- Trafik artınca otomatik olarak ölçeklendirmek mümkün mü?
- Güncelleme sırasında downtime olmadan deployment nasıl yapılır?
İşte Kubernetes bu soruların hepsini çözer.
Temel Kubernetes Kavramları
Pod
En küçük dağıtım birimidir. Bir veya birden fazla container içerir. Genellikle bir uygulama = bir pod.
Deployment
Pod'ların kaç replika çalışacağını ve nasıl güncelleneceğini tanımlar.
Service
Pod'lara sabit bir IP/DNS adresi sağlar. Pod'lar ölüp yeniden başlasa bile Service aynı kalır.
Ingress
Dış trafiği cluster'a alır, hangi trafiğin hangi servise gideceğini belirler (reverse proxy gibi).
Namespace
Cluster içinde mantıksal izolasyon sağlar. Prod/staging/dev ortamlarını aynı cluster'da ayırabilirsiniz.
Kubernetes Kurulumu
Geliştirme Ortamı: Minikube
# macOS
brew install minikube
minikube start
# Cluster durumu
kubectl get nodes
Üretim: kubeadm ile On-Premise
# Her node'a kurulum
apt-get install -y kubelet kubeadm kubectl
# Control plane başlatma
kubeadm init --pod-network-cidr=10.244.0.0/16
# Worker node ekleme
kubeadm join <control-plane-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Managed Kubernetes
Kendi altyapınızı yönetmek istemiyorsanız:
- AWS EKS
- Google GKE
- Azure AKS
- Hetzner K8s (maliyet odaklı)
Örnek Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: myapp:v1.2.0
ports:
- containerPort: 3000
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
Kubernetes'in Türkiye'deki Kullanım Senaryoları
Viva Yazılım olarak K8s'i özellikle şu senaryolarda uyguluyoruz:
- Yoğun dönem uygulamaları: VivaKurban gibi kurban döneminde ani trafik artışı yaşayan sistemler
- Mikro servis mimarisi: Birden fazla servisi ayrı ayrı ölçeklendirme ihtiyacı
- CI/CD pipeline: Her deployment'ı sıfır downtime ile yapma
- Multi-tenant SaaS: Birden fazla müşteriye izole ortamlar
Monitoring ve İzleme
K8s cluster'ınızı izlemek için standart stack:
- Prometheus: Metrik toplama
- Grafana: Dashboard ve görselleştirme
- Alertmanager: Alarm ve bildirimler
- Loki: Log toplama
Viva Yazılım DevOps Hizmetleri
Kubernetes kurulumu, CI/CD pipeline ve monitoring altyapısı için profesyonel destek alabilirsiniz. Ekibimiz K8s on-premise, EKS, GKE ve Hetzner üzerinde aktif deneyime sahiptir.