İçeriğe geç
Kubernetes

Kubernetes (K8s); konteyner uygulamalarının dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren, Cloud Native Computing Foundation (CNCF) çatısı altında geliştirilen açık-kaynak platformdur. 2014’te Google’ın Borg deneyiminden doğmuş ve bugün hem hyperscale bulut sağlayıcılarının hem de finans, telekom, kamu sektörünün üretim ortamlarında fiili standart hâline gelmiştir.

Bir Kubernetes kümesi; kontrol düzlemi (API server, scheduler, controller-manager, etcd) ve veri düzlemi (kubelet, kube-proxy, container runtime) bileşenlerinden oluşur. Tüm kaynaklar declarative YAML/JSON manifest’lerle tanımlanır ve API server üzerinden yönetilir. Bu mimari sayesinde GitOps, kendi-kendine iyileşen sistemler ve çok sağlayıcılı portabilite mümkündür.

Mono’nun yaklaşımı

Bin mertebesinde production node’u yöneten ekibimiz, Kubernetes’i bir “araç” değil platform mühendisliği disiplini olarak ele alır. Aşağıdaki kararlar, projenin ilk haftasında verilir:

  • Dağıtım modeli: Yönetilen (EKS/GKE/AKS) vs. self-managed (RKE2, Talos, kubeadm). KVKK ve veri ikametgâhı gerektiren kurumlar için Mono Cloud üzerinde RKE2 tabanlı küme.
  • Ağ: CNI seçimi (Cilium/Calico), NetworkPolicy varsayılanı (deny-all), service-mesh kararı (Linkerd ile başla).
  • Depolama: CSI sürücüsü, snapshot/clone politikaları, ReadWriteMany gereksinimi varsa CephFS/Longhorn.
  • Güvenlik: PodSecurity admission, OPA/Gatekeeper veya Kyverno politikaları, image-signing (Sigstore/Cosign), SBOM üretimi.
  • Gözlemlenebilirlik: Prometheus + Grafana + Loki + Tempo (Mono’nun Grafana Stack önerimiz). OpenTelemetry SDK ile uygulama traces.

Tipik üretim mimarisi

Tipik bir Mono Kubernetes mimarisi şu katmanlardan oluşur: dış yük dengeleyici (Cloudflare/HAProxy/MetalLB) → ingress controller (Traefik veya Nginx) → service-mesh sidecar → uygulama Pod’ları → dış servisler (RDS-eşdeğeri, Kafka, S3 uyumlu depolama). GitOps tarafı için ArgoCD; CI tarafı için GitHub Actions veya GitLab CI.

Çok bölgeli kurulumlarda bölge başına bağımsız küme + federasyon yerine cluster-API + multi-cluster service-mesh tercih ederiz. Bu, “tek küme, çok bölge” yaklaşımına göre daha düşük blast-radius ve daha sade RTO/RPO sunar.

Yaygın sorunlar ve çözümler

  • CrashLoopBackOff: %80’i yanlış environment variable, eksik secret veya readiness probe gecikmesi. kubectl describe pod + kubectl logs --previous ilk durağınız olmalı.
  • OOMKilled: Memory request/limit’leri yanlış kalibre edilmiş. VPA önerilerini 2-4 hafta toplayıp uygulayın.
  • DNS gecikmesi: CoreDNS replica sayısı + ndots:5 problemi. NodeLocalDNS önbellek katmanı ekleyin.
  • etcd büyümesi: Event retention’ı düşürün, defragmentation cron’u kurun, etcd disk’ini ayrı NVMe’ye taşıyın.
  • Yavaş scale-up: Karpenter ile node hazırlama süresini saniyelere indirin; image pre-pull stratejileri kullanın.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Kubernetes her ekip için doğru çözüm mü?
Hayır. 1-2 servisli, düşük trafikli uygulamalar için Kubernetes operasyonel maliyeti, sağladığı esnekliği aşar. 5’ten fazla servis, otomatik ölçeklenme ihtiyacı veya çok bölgeli dağıtım gerekiyorsa ROI hızla pozitife döner.
Yönetilen (EKS/GKE/AKS) mi self-managed (RKE2/Talos) mi?
Yönetilen küme operasyonel yükü %60-70 azaltır; kontrol-düzlemi SLA’sı sağlayıcıya devredilir. Self-managed ise tam kontrol ve maliyet avantajı sunar. KVKK/veri ikametgâhı gereksinimi varsa Mono Cloud üzerindeki RKE2 tabanlı kümeler tercih edilebilir.
Hangi servis-mesh seçilmeli?
Sadelik için Linkerd (mTLS + observability’yi out-of-box sağlar); eBPF tabanlı yüksek performans için Cilium; geniş özellik seti için Istio. Çoğu kurum için Linkerd başlangıç noktası olarak yeterlidir.
Üretimde maliyet nasıl kontrol altında tutulur?
Resource request/limit’leri VPA önerilerine göre kalibre edin, Karpenter/cluster-autoscaler ile spot-friendly ölçeklendirme yapın, node selectors ile workload’ları doğru sınıflara yerleştirin ve kube-cost ile namespace başına chargeback raporu çıkarın.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.