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.yaml
  • kubectl get pods
  • kubectl describe pod pod-name
  • kubectl logs pod-name
  • kubectl exec -it pod-name -- sh
  • kubectl scale deployment myapp --replicas=5
  • kubectl 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.

İlgili Terimler