Kubernetes Nedir, Ne İşe Yarar?

Yazar: Ahmet YılmazYayın: 11 Ağu 2026Güncelleme: 8 Eyl 202615 dk Okuma

Kubernetes, konteynerize edilmiş uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatize eden, açık kaynaklı bir konteyner orkestrasyon platformu ve standartıdır.

Kubernetes Nedir, Ne İşe Yarar? için öne çıkan görsel
Kubernetes Nedir, Ne İşe Yarar? için öne çıkan görsel

Kubernetes Nedir, Ne İşe Yarar? sorusu, modern yazılım mimarilerinde monolitik yapılardan mikroservislere geçiş sürecini yöneten teknik karar vericilerin en kritik araştırma konularından biridir. Cloud Native Computing Foundation (CNCF) standartlarına göre Kubernetes, konteynerize edilmiş uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatize eden açık kaynaklı bir konteyner orkestrasyon platformudur. Yazılım ekiplerinin altyapı bağımsızlığını kazanmasını sağlayan bu sistem, manuel sunucu yönetim süreçlerini ortadan kaldırarak operasyonel verimliliği artırır. Bu rehberde, Kubernetes bileşenlerini, Docker ile farklarını, kurumsal riskleri ve FinOps yaklaşımlarını analiz edeceğiz.

Kubernetes Tam Olarak Ne İşe Yarar? (Temel İşlevler)

Kubernetes'in otomatik ölçeklendirme ve yük dengeleme işlevlerini simgeleyen modern bir illüstrasyon
Konteyner yönetiminde otomasyon, yük dengeleme ve kesintisiz dağıtım süreçlerinin şematik olmayan sanatsal temsili.

Kubernetes, dağıtık sistem mimarilerinde manuel olarak yönetilmesi imkansız olan operasyonel süreçleri yazılım tabanlı kurallarla otomatize eder. Geleneksel sunucu yönetiminde, bir uygulamanın çökmesi durumunda sistem yöneticisinin sunucuya bağlanıp servisi yeniden başlatması gerekirken; Kubernetes bu süreci milisaniyeler seviyesinde kendi kendine iyileştirme (self-healing) yetenekleriyle gerçekleştirir. Kümedeki (cluster) düğümlerin (nodes) kaynak tüketimini sürekli izleyerek, konteynerlerin en uygun donanım kaynaklarına sahip sunucularda konumlandırılmasını sağlar.

Sistem, deklaratif (bildirimsel) bir çalışma prensibine sahiptir. Geliştiriciler, uygulamanın çalışması gereken ideal durumu (desired state) YAML dosyalarında tanımlar ve Kubernetes'e teslim eder. Kubernetes denetim döngüleri (control loops), mevcut durum ile tanımlanan ideal durum arasındaki farkları sürekli olarak tarar ve mevcut durumu ideal duruma eşitlemek için gerekli işlemleri arka planda yürütür. Bu yapı, insan hatasından kaynaklanan kesinti sürelerini minimize eder.

Otomatik Dağıtım ve Geri Alma (Deployment & Rollback)

Kubernetes üzerinde bir uygulamanın yeni bir sürümü dağıtılmak istendiğinde, "Rolling Update" (Kademeli Güncelleme) stratejisi kullanılarak kesintisiz geçiş sağlanır. Bu süreçte, eski sürümü barındıran konteynerler tek seferde kapatılmaz. Sistem, yeni sürümü içeren yeni konteynerleri ayağa kaldırır, bunların sağlıklı çalıştığını doğruladıktan (readiness probe) sonra trafiği kademeli olarak yeni konteynerlere yönlendirir ve eski konteynerleri sistemden uzaklaştırır.

Eğer yeni sürümde beklenmedik bir hata, veri tabanı bağlantı sorunu veya performans kaybı tespit edilirse, Kubernetes tek bir komutla (kubectl rollout undo) otomatik olarak bir önceki kararlı sürüme geri döner. Bu süreçte, hatalı dağıtılan konteynerler kapatılarak eski yapılandırmaya sahip ReplicaSet'ler anında aktif hale getirilir. Böylece son kullanıcılar kesintiye uğramadan kararlı sürümü kullanmaya devam eder.

Yatay ve Dikey Otomatik Ölçeklendirme (Autoscaling)

Platform, trafik dalgalanmalarına dinamik olarak yanıt verebilmek için üç farklı ölçeklendirme mekanizması sunar:

  • Horizontal Pod Autoscaler (HPA): CPU kullanımı, bellek tüketimi veya özel Prometheus metriklerine (örneğin, saniyedeki HTTP istek sayısı) bağlı olarak çalışan Pod sayısını dinamik olarak artırır veya azaltır.

  • Vertical Pod Autoscaler (VPA): Konteynerlerin ihtiyaç duyduğu CPU ve bellek limitlerini geçmiş tüketim verilerine bakarak otomatik olarak optimize eder.

  • Cluster Autoscaler: HPA'in talebi karşılayamadığı ve mevcut sunucu donanım kaynaklarının yetersiz kaldığı durumlarda, bulut sağlayıcısı (AWS, GCP, Azure) üzerinden otomatik olarak yeni sanal sunucular kiralayarak kümeye dahil eder. Trafik azaldığında ise bu sunucuları kapatarak maliyet tasarrufu sağlar.

Yük Dengeleme ve Servis Keşfi (Load Balancing & Service Discovery)

Kubernetes kümesi içerisindeki konteynerler sürekli olarak başlayıp durdukları için dinamik IP adreslerine sahip olurlar. Bu durum, servislerin birbiriyle kararlı bir şekilde iletişim kurmasını zorlaştırır. Kubernetes, "Service" adı verilen soyutlama katmanı ile bu sorunu kökten çözer. Her servise benzersiz bir dahili DNS adı ve sabit bir sanal IP adresi atanır.

Cluster içerisindeki servis keşfi süreçleri entegre CoreDNS servisi tarafından yönetilir. Trafik, servis arkasındaki sağlıklı durumdaki tüm konteynerlere "kube-proxy" bileşeni aracılığıyla eşit olarak dağıtılır (load balancing). Dış dünyadan gelen HTTP ve HTTPS istekleri ise "Ingress Controller" katmanı üzerinden karşılanarak, tanımlanan yol (path-based) veya host kurallarına göre doğru servislere yönlendirilir.

Depolama Yönetimi ve Veri Kalıcılığı

Konteynerlerin doğası gereği geçici (ephemeral) olan dosya sistemleri, konteyner kapandığında veya çöktüğünde tüm verilerin silinmesine neden olur. Kubernetes, Container Storage Interface (CSI) standardını kullanarak bu problemi çözer. Geliştiriciler, bulut depolama birimlerini (AWS EBS, Google Persistent Disk, Azure Disk) veya yerel veri depolama sistemlerini (Ceph, GlusterFS, NFS) uygulamaya kalıcı olarak bağlayabilir.

Persistent Volume (PV) ve Persistent Volume Claim (PVC) yapılandırmaları sayesinde, uygulamanın çalışacağı sunucu değişse bile depolama birimi ilgili yeni sunucuya dinamik olarak eklenir (dynamic provisioning). Bu sayede PostgreSQL, MySQL veya MongoDB gibi veri tabanı sistemleri veri kaybı yaşamadan Kubernetes üzerinde kararlı bir şekilde çalıştırılabilir.

Kubernetes Mimarisi Nasıl Çalışır? (Temel Bileşenler)

Kubernetes Control Plane ve Node yapısının koordinasyonunu simgeleyen modern tasarım
Yönetim düzlemi (Control Plane) ile işçi düğümleri (Worker Nodes) arasındaki uyumlu veri akışının sembolik tasarımı.

Kubernetes, Master Node'lar (Control Plane) ve Worker Node'lar (İşçi Düğümler) olmak üzere iki ana bölümden oluşan dağıtık bir küme yapısı (cluster) üzerinde çalışır. Control Plane, kümenin beyin işlevini görerek yönetimsel kararları alır ve tüm sistemi koordine eder. Worker Node'lar ise uygulamanın fiilen çalıştırıldığı, konteyner motorunu ve ağ kurallarını barındıran fiziksel veya sanal sunuculardır. Bu iki katman arasındaki kesintisiz iletişim, güvenli ağ protokolleri ve TLS sertifikaları aracılığıyla sağlanır.

Sistem, tüm bileşenlerin gevşek bağlı (loosely coupled) olduğu ve sadece API sunucusu üzerinden birbiriyle haberleştiği modüler bir mimariye sahiptir. Bu tasarım, herhangi bir bileşenin arızalanması durumunda tüm sistemin çökmesini engeller. Örneğin, Control Plane geçici olarak devre dışı kalsa bile, Worker Node'lar üzerindeki konteynerler mevcut yönlendirme kurallarıyla çalışmaya ve trafik almaya devam eder.

Control Plane (Yönetim Düzlemi) ve Bileşenleri

Control Plane, Kubernetes API'sini sunan ve kümenin durumunu saklayan çekirdek bileşenleri barındırır:

  • kube-apiserver: Kümenin giriş kapısıdır. Tüm iç ve dış bileşenler iletişim kurmak için REST API isteklerini bu sunucuya gönderir. Kimlik doğrulama (authentication), yetkilendirme (authorization) ve giriş kontrolleri (admission control) burada yapılır.

  • etcd: Kümenin tüm konfigürasyon, durum ve meta verilerini saklayan, yüksek düzeyde tutarlı ve dağıtık bir anahtar-değer (key-value) veri tabanıdır. Raft konsensüs algoritmasını kullanır ve kümenin tek doğruluk kaynağıdır.

  • kube-scheduler: Kümeye yeni eklenen ve henüz bir sunucuya atanmamış olan Pod'ları izler. Donanım gereksinimleri, veri yerelliği, politik kısıtlamalar ve taints/tolerations gibi kuralları değerlendirerek bu Pod'ların en uygun Worker Node üzerinde çalıştırılmasına karar verir.

  • kube-controller-manager: Arka planda çalışan denetleyici süreçlerini yönetir. Düğüm denetleyicisi (node controller), çoğaltma denetleyicisi (replication controller) ve endpoint denetleyicisi gibi yapılar bu bileşen çatısı altında sürekli çalışarak sistem durumunu hedeflenen seviyede tutar.

Worker Node (İşçi Düğüm) Yapısı

Worker Node, konteynerlerin güvenli ve yalıtılmış bir ortamda çalışması için gerekli olan alt bileşenleri barındırır:

  • kubelet: Her Worker Node üzerinde koşan ve API Server ile doğrudan iletişim kuran bir ajandır. Control Plane'den gelen Pod tanımlarını (PodSpec) alır ve yerel sunucudaki konteynerlerin bu tanımlara uygun olarak çalışmasını, sağlıklı kalmasını sağlar.

  • kube-proxy: Her düğümde çalışan basit bir ağ proxy'sidir. Kubernetes ağ servis kurallarını yönetir. TCP, UDP ve SCTP akışlarını yönlendirmek için işletim sisteminin paket filtreleme katmanlarını (IPVS veya iptables) kullanarak yük dengelemeyi gerçekleştirir.

  • Container Runtime: Konteynerlerin fiilen çalıştırılmasından sorumlu yazılımdır. Kubernetes, Container Runtime Interface (CRI) standardına uyan tüm motorları destekler. Sektör standardı olarak en çok containerd ve CRI-O motorları tercih edilmektedir.

Pod Kavramı: Kubernetes'in En Küçük Yapı Taşı

Kubernetes'te doğrudan tek bir konteyner dağıtılamaz. Bunun yerine "Pod" adı verilen mantıksal zarflar kullanılır. Pod, Kubernetes'in oluşturabileceği ve yönetebileceği en küçük dağıtılabilir birimdir. Bir Pod içerisinde tek bir konteyner bulunabileceği gibi, aynı yaşam döngüsünü paylaşan, birbiriyle çok sıkı entegre çalışan birden fazla yardımcı konteyner (Sidecar pattern) de yer alabilir.

Aynı Pod içindeki tüm konteynerler aynı ağ adresi alanını (IP address space), bağlantı noktalarını (ports) ve depolama birimlerini (volumes) paylaşır. Bu konteynerler birbirleriyle localhost protokolü üzerinden gecikmesiz olarak haberleşebilirler. Pod'lar ölümlü yapılardır; bir kez çöktüklerinde veya kapatıldıklarında aynı kimlikle tekrar canlandırılmazlar, yerlerine yeni bir IP adresiyle yeni bir Pod oluşturulur.

Service, Ingress ve Namespace Yapılandırması

Servisler, Pod'ların ölümlü doğasına karşın dış dünyayla veya küme içi servislerle kalıcı iletişim kurmayı sağlar. Bir Servis, etiket seçiciler (label selectors) aracılığıyla belirli bir grup Pod'u hedef alır ve gelen istekleri bu Pod'lara dağıtır. Kubernetes ağ yapısında üç temel servis tipi öne çıkar:

  • ClusterIP: Servisi sadece küme içinden erişilebilir hale getirir. Varsayılan servis tipidir.

  • NodePort: Servisi her Worker Node'un belirli bir statik portu (genellikle 30000-32767 aralığında) üzerinden dış dünyaya açar.

  • LoadBalancer: Bulut sağlayıcısının yerel yük dengeleyicisini (AWS ELB, GCP Cloud Load Balancing vb.) otomatik olarak oluşturur ve trafiği NodePort aracılığıyla Pod'lara aktarır.

Ingress ise HTTP ve HTTPS trafiğini yönlendirmek için kurallar tanımlayan ve TLS sonlandırma yeteneği sunan daha gelişmiş bir katmandır. Namespace (ad alanı) yapısı ise tek bir fiziksel Kubernetes kümesini mantıksal olarak birden çok sanal kümeye bölmeye yarar. Farklı ekiplerin veya projelerin (örneğin; development, staging, production ortamları) kaynak çakışması yaşamadan aynı küme üzerinde güvenle çalışmasını sağlar.

Docker ile Kubernetes Arasındaki Fark Nedir?

Docker konteyner yapısı ile Kubernetes orkestrasyon mekanizması arasındaki ilişkiyi gösteren tasarım
Bireysel konteyner birimleri ile bu birimleri yöneten ana koordinasyon merkezi arasındaki farkın soyut temsili.

Teknoloji dünyasında Docker ve Kubernetes sıklıkla birbiriyle rekabet eden alternatifler olarak algılansa da, bu iki teknoloji aslında birbirini tamamlayan farklı katmanları temsil eder. Docker, uygulamaları ve onların bağımlılıklarını yalıtılmış standart paketler (konteyner imajları) haline getirmek ve bu imajları tek bir sunucuda çalıştırmak için optimize edilmiştir. Kubernetes ise Docker (veya diğer CRI uyumlu motorlar) tarafından oluşturulmuş binlerce konteynerin, çok sayıda sunucudan oluşan büyük sistemlerde nasıl koordine edileceğini, nasıl ölçekleneceğini ve birbiriyle nasıl güvenli haberleşeceğini yöneten bir üst akıldır.

Docker tek başına kullanıldığında, sunucu donanımının çökmesi durumunda konteynerleri başka bir sunucuya otomatik olarak taşıyamaz veya gelen yükü birden fazla sunucuya dağıtamaz. Docker'ın bu eksikliğini gidermek amacıyla geliştirdiği "Docker Swarm" adında daha basit bir orkestrasyon aracı bulunsa da, karmaşık kurumsal ihtiyaçlar, esneklik ve devasa ekosistem desteği nedeniyle Kubernetes endüstri standardı haline gelmiştir.

Konteyner Oluşturma vs Konteyner Orkestrasyonu

Süreç bazlı bakıldığında Docker, yazılım geliştirme aşamasına odaklanarak "uygulamam her bilgisayarda aynı şekilde çalışsın" problemini çözer. Dockerfile ile tanımlanan konfigürasyon, her ortamda tutarlı çalışan imajlar üretir. Kubernetes ise operasyon aşamasına odaklanarak "bu imajları üretim ortamında sıfır kesintiyle nasıl barındırırım, nasıl yedeklerim ve ağ trafiğini nasıl yönetirim" sorularına yanıt verir.

ÖzellikDocker (Tekil Sunucu)Kubernetes (Cluster)
Ölçekleme SeviyesiTek bir işletim sistemi seviyesinde çalışırYüzlerce sunucudan oluşan kümeleri yönetir
Kendi Kendini İyileştirmeÇöken konteyneri aynı sunucuda yeniden başlatabilirÇöken sunucunun iş yükünü başka sunucuya taşır
Hizmet Keşfi & AğSınırlı, tekil köprü (bridge) ağları kullanırGelişmiş dahili DNS ve Ingress yönlendirmeleri sunar
Depolama EntegrasyonuYerel disk dizinlerini (volumes) bağlarBulut blok depolama sistemlerini dinamik yönetir

Ölçekleme Seviyesi

Docker (Tekil Sunucu)

Tek bir işletim sistemi seviyesinde çalışır

Kubernetes (Cluster)

Yüzlerce sunucudan oluşan kümeleri yönetir

Kendi Kendini İyileştirme

Docker (Tekil Sunucu)

Çöken konteyneri aynı sunucuda yeniden başlatabilir

Kubernetes (Cluster)

Çöken sunucunun iş yükünü başka sunucuya taşır

Hizmet Keşfi & Ağ

Docker (Tekil Sunucu)

Sınırlı, tekil köprü (bridge) ağları kullanır

Kubernetes (Cluster)

Gelişmiş dahili DNS ve Ingress yönlendirmeleri sunar

Depolama Entegrasyonu

Docker (Tekil Sunucu)

Yerel disk dizinlerini (volumes) bağlar

Kubernetes (Cluster)

Bulut blok depolama sistemlerini dinamik yönetir

Hangi Senaryoda Hangisi Tercih Edilmelidir?

Küçük ölçekli projeler, test ortamları veya tek bir sunucunun kapasitesinin yeterli olduğu monolitik mimarilerde sadece Docker ve Docker Compose kullanmak operasyonel karmaşıklığı azaltır. Kubernetes kurulumu ve bakımı ciddi bir mühendislik eforu ve bütçe gerektirdiğinden, küçük işler için bu platformu kullanmak aşırı mühendislik (over-engineering) tuzağına düşmeye neden olabilir.

Ancak, mikroservis mimarisine sahip, gün içinde değişken trafik alan, yüksek erişilebilirlik (high availability) gereksinimleri olan ve çok sayıda bağımsız ekibin eş zamanlı geliştirme yaptığı kurumsal projelerde Kubernetes kullanımı kaçınılmaz bir gerekliliktir. Sistem kesintilerinin doğrudan finansal kayba yol açtığı e-ticaret siteleri, finansal platformlar ve SaaS ürünleri için Kubernetes orkestrasyonu en güvenli limandır.

Kurumsal Kullanımda Dikkat Edilmesi Gereken Riskler ve Uyarılar

Kubernetes güvenlik ve karmaşıklık risklerini tasvir eden kavramsal görsel
Çok katmanlı mikroservis yapılarında güvenlik duvarlarının ve koruyucu kalkanların soyut bütünlüğü.

Kubernetes kurumsal süreçlere büyük bir esneklik ve hız kazandırsa da, beraberinde ciddi teknik ve operasyonel riskler getirir. Entegrasyon kararı almadan önce bu risklerin doğru analiz edilmesi ve risk azaltma (mitigation) planlarının hazırlanması gerekir. Aksi takdirde, verimsiz kaynak kullanımı nedeniyle bulut faturaları kontrolsüz şekilde artabilir veya yanlış yapılandırılmış ağ politikaları nedeniyle hassas müşteri verileri siber saldırılara açık hale gelebilir.

Platformun getirdiği en büyük kurumsal yanılgılardan biri, sistemin kurulduktan sonra kendi kendine sorunsuz çalışacağı düşüncesidir. Kubernetes dinamik bir organizmadır; düzenli olarak güncellenmesi (upgrade), güvenlik yamalarının yapılması, etcd veri tabanının yedeklenmesi ve küme içi trafiğin sürekli izlenmesi gerekir. Bu süreçlerin ihmal edilmesi, tüm üretim ortamının tamamen erişilemez hale gelmesine yol açabilir.

Yanlış Yapılandırma ve Güvenlik Açıkları

Siber güvenlik analizlerine göre, Kubernetes tabanlı sistemlerde yaşanan güvenlik ihlallerinin %90'ından fazlası platformun kendi açıklarından değil, kullanıcıların yaptığı yanlış yapılandırmalardan (misconfigurations) kaynaklanmaktadır. Varsayılan ayarlarla bırakılan bir Kubernetes kümesinde, tüm Pod'lar sınırlandırılmamış bir ağ üzerinde birbirleriyle iletişim kurabilir. Bu durum, ele geçirilen tek bir mikroservisin tüm veritabanına erişmesine zemin hazırlar.

Kurumsal güvenlik standartlarını (GDPR, KVKK, PCI-DSS) korumak için şu önlemlerin alınması zorunludur:

  • Role-Based Access Control (RBAC): Küme üzerinde işlem yapacak her kullanıcıya ve her servis hesabına (ServiceAccount) yalnızca ihtiyacı olan minimum yetkiler verilmelidir. "Cluster-admin" gibi sınırsız yetkiye sahip hesapların kullanımı sıkı denetlenmelidir.

  • Network Policies: Varsayılan "herkes herkese erişsin" kuralı kapatılmalı, yalnızca belirli servislerin birbiriyle konuşmasına izin veren deklaratif ağ kuralları yazılmalıdır.

  • Secrets Management: API anahtarları, veri tabanı şifreleri ve SSL sertifikaları gibi hassas veriler asla YAML dosyalarına düz metin (plain text) olarak yazılmamalı; HashiCorp Vault, AWS Secrets Manager gibi harici sistemlerle entegre edilmeli veya etcd katmanında KMS (Key Management Service) ile şifrelenmelidir (encryption at rest).

Karmaşıklık Maliyeti ve Ekip Eğitimi Gereksinimleri

Kubernetes'in getirdiği teknolojik katmanlar, yazılım geliştiricilerin ve sistem yöneticilerinin üzerinde ciddi bir öğrenme yükü oluşturur. YAML manifestolarının yönetimi, Helm şablonlarının tasarımı ve ağ sorunlarının (network debugging) çözümü derin uzmanlık gerektirir. Şirket bünyesinde yeterli teknik yetkinliğe sahip DevOps veya Platform Mühendisi bulunmadığında, en basit altyapı sorunları dahi günlerce süren kesintilere yol açabilir.

Bu karmaşıklıkla başa çıkabilmek için şirketlerin çalışan eğitim bütçelerini artırmaları, altyapıyı kod olarak yönetme (Infrastructure as Code - IaC) kültürünü benimsemeleri ve süreçleri standartlaştırmaları gerekir. Platform mühendisliği ekiplerinin kurulması, yazılım geliştiricilerin Kubernetes'in tüm detaylarıyla uğraşması yerine, onlara hazır şablonlar sunan dahili geliştirici portalları (Internal Developer Platforms - IDP) üzerinden çalışmasını sağlayarak insan kaynağı verimliliğini artırır.

Kaynak Yönetimi ve Maliyet Optimizasyonu Tuzakları

Kubernetes üzerinde çalışan uygulamalar için CPU ve Bellek (Memory) sınırlarının ("limits" ve "requests") doğru tanımlanmaması en sık karşılaşılan FinOps hatasıdır. İki uç senaryo da kurumsal süreçlere zarar verir:

  • Aşırı Rezervasyon (Over-provisioning): Geliştiriciler, uygulamalarının çökmesini engellemek için ihtiyaç duyulandan çok daha fazla kaynak talep ederler. Bu durum, sunucuların %10-15 kapasiteyle çalışmasına rağmen şirketin kullanılmayan donanım için yüksek bulut faturaları ödemesine yol açar.

  • Yetersiz Kaynak ve OOMKilled: Konteynerlerin bellek limitleri çok düşük tanımlandığında, anlık trafik artışlarında işletim sistemi konteynerleri "Out of Memory" (OOMKilled) hatasıyla kapatır. Bu durum, uygulamada sürekli kesintilere ve performans kayıplarına sebep olur.

Şirketler İçin Kubernetes Dağıtım Modelleri ve Sağlayıcı Seçenekleri

Bulut entegrasyonu ve kurum içi veri merkezi sunucu yönetimi arasındaki seçimi yansıtan görsel
Dış kaynaklı akıllı bulut bulut servisleri ile özelleştirilmiş donanım yapılandırmalarının dengeli entegrasyonu.

Kubernetes kümesi kurmaya karar veren bir işletmenin önündeki en stratejik yol ayrımı, dağıtım modelinin seçimidir. Bu karar; şirketin mevcut insan kaynağına, bütçesine, veri gizliliği yükümlülüklerine ve operasyonel esneklik ihtiyaçlarına göre şekillenir. Temel olarak iki ana yaklaşım mevcuttur: Bulut sağlayıcıları tarafından yönetilen "Managed Kubernetes" servisleri veya tüm sorumluluğun şirkette olduğu "Self-Managed" (Öz-Yönetimli) kurulumlar.

Veri gizliliği düzenlemeleri (KVKK/GDPR) gereği müşteri verilerini ülke sınırları dışına çıkaramayan veya özel donanım gereksinimleri olan şirketler (finans, telekomünikasyon, savunma sanayii), yerel veri merkezlerinde (on-premise) kendi Kubernetes kümelerini kurup yönetmek durumundadır. Diğer yandan, hızlı büyüyen girişimler ve küresel ölçekte hizmet sunan şirketler için bulut tabanlı hazır çözümler operasyonel hızı maksimuma çıkarır.

Managed Kubernetes (EKS, GKE, AKS) vs Self-Managed K8s

Yönetilen servisler (AWS EKS, Google GKE, Microsoft AKS), Control Plane'in (Yönetim Düzleminin) kurulumu, bakımı, yedeklenmesi, yüksek erişilebilirliği (Multi-AZ HA) ve güncellenmesi gibi en zorlu operasyonel iş yüklerini bulut sağlayıcısının üstlendiği modellerdir. Şirketler sadece Worker Node'ların ve uygulamaların yönetiminden sorumlu olurlar. Bu modelde, Control Plane için genellikle saatlik çok düşük bir ücret (örneğin AWS EKS için saatlik $0.10) ödenir ve SLA (Servis Seviyesi Anlaşması) garantisi alınır.

Self-Managed (Kendi Yönettiğin) modelde ise, sanal veya fiziksel sunucular üzerine kubeadm, kops veya Rancher gibi araçlar kullanılarak sıfırdan küme kurulur. Bu model, Kubernetes API'si ve işletim sistemi üzerinde %100 kontrol gücü sağlasa da, Control Plane bileşenlerinin (özellikle etcd veri tabanının yedekliliği ve senkronizasyonu) yönetimi tamamen şirketin kendi DevOps ekibinin omuzlarındadır. En küçük bir hata tüm kümenin kalıcı olarak çökmesine neden olabileceğinden, bu model yalnızca yüksek teknik olgunluğa sahip ekipler tarafından tercih edilmelidir.

Maliyet Optimizasyon Modelleri ve FinOps Yaklaşımı

Kubernetes altyapılarında maliyet kontrolü sağlamak için FinOps metodolojilerini benimsemek kritik önem taşır. Bulut ortamlarında gereksiz harcamaları önlemek için uygulanabilecek en etkili yöntemler şunlardır:

  • Spot / Preemptible Instance Kullanımı: Bulut sağlayıcılarının atıl durumdaki sunucularını %70-90 oranında indirimle sunduğu "Spot" sunucular, Kubernetes'in dinamik yapısına çok uygundur. Durumsuz (stateless) uygulamalar ve arka plan işleri (workers), bu sunucularda çalıştırılarak ciddi maliyet tasarrufu elde edilebilir.

  • Gelişmiş Autoscaler Seçimi: Geleneksel Cluster Autoscaler yerine, AWS ortamlarında milisaniyeler içinde en uygun maliyetli sunucu tipini analiz edip kümeye dahil eden açık kaynaklı Karpenter gibi yeni nesil araçların kullanımı tercih edilmelidir.

  • Kubecost ile Görünürlük: Küme içindeki hangi ekibin, hangi Namespace'in veya hangi uygulamanın ne kadarlık bir harcama yaptığını gerçek zamanlı raporlayan Kubecost benzeri araçlar entegre edilerek departman bazlı bütçelendirme yapılmalıdır.

Kubernetes CI/CD Süreçlerine Nasıl Entegre Edilir?

GitOps ve sürekli entegrasyon süreçlerinin otomasyon döngüsünü simgeleyen görsel
Kod güncellemelerinin üretim ortamına kesintisiz ve güvenli aktarım döngüsünün soyut ifadesi.

Kubernetes'in sunduğu deklaratif yapı, yazılım teslimat süreçlerini (CI/CD) tamamen otomatize etmek için ideal bir zemin hazırlar. Geliştiriciler kodu Git deposuna gönderdikten sonra, otomatik testler çalıştırılır, yeni bir konteyner imajı derlenir ve bu imaj Kubernetes kümesine otomatik olarak dağıtılır. Bu akış, manuel müdahaleleri ortadan kaldırarak hata payını sıfıra indirir ve günde onlarca kez canlı ortama güvenle sürüm çıkılabilmesini (continuous deployment) sağlar.

Geleneksel dağıtım yöntemlerinde, CI/CD araçları (Jenkins, GitLab CI, GitHub Actions) Kubernetes kümesine doğrudan erişim yetkisine (kubeconfig) sahip olur ve komutları dışarıdan içeriye doğru tetikler (push-based). Ancak bu yaklaşım, küme kimlik bilgilerinin dış sistemlerde saklanmasını gerektirdiği için ciddi bir güvenlik riski barındırır. Modern Kubernetes mimarilerinde bu risk, "GitOps" yaklaşımıyla çözülmüştür.

GitOps Yaklaşımı ve ArgoCD Entegrasyonu

GitOps, altyapı ve uygulama tanımlarının tamamının sürüm kontrol sistemi olan Git üzerinde tutulduğu ve Git'in "tek doğruluk kaynağı" (single source of truth) olarak kabul edildiği bir işletim modelidir. Kubernetes için geliştirilen en popüler GitOps aracı ArgoCD'dir. ArgoCD, Kubernetes kümesinin içine kurulur ve dışarıdaki Git deposunu sürekli izler (pull-based).

Geliştirici Git üzerinde uygulamanın imaj versiyonunu güncellediğinde, ArgoCD bu değişikliği tespit eder. Kümedeki mevcut durum ile Git'teki hedef durum arasındaki sapmayı (drift) analiz eder ve küme durumunu otomatik olarak Git'teki yeni tanıma eşitler (reconciliation loop). Bu sayede hem harici CI araçlarına küme yetkisi verilmemiş olur hem de küme üzerinde manuel yapılan yetkisiz değişiklikler (config drift) anında tespit edilerek eski haline getirilir.

Kalıcı Dağıtım (Continuous Deployment) Güvenlik Standartları

Dağıtım süreçlerinin tamamen otomatize edilmesi, kötü niyetli kodların veya güvenlik açığı barındıran paketlerin de hızla canlı ortama sızmasına neden olabilir. Bu riski engellemek için CI/CD süreçlerine "DevSecOps" güvenlik kapıları entegre edilmelidir:

  • İmaj Tarama (Vulnerability Scanning): Derlenen konteyner imajları, kayıt merkezine (container registry) gönderilmeden önce Trivy veya Clair gibi araçlarla taranmalı ve kritik düzeyde güvenlik açığı barındıran imajların dağıtımı otomatik olarak engellenmelidir.

  • İmaj İmzalama (Image Signing): Cosign gibi araçlar kullanılarak, yalnızca güvenilir CI hattından geçmiş imajlar kriptografik olarak imzalanmalıdır. Kubernetes kümesine kurulacak bir "Validating Admission Controller" (örneğin Kyverno), yalnızca bu geçerli imzaya sahip imajların çalıştırılmasına izin vermelidir.

Sıkça Sorulan Sorular

Kubernetes nedir?

Kubernetes (K8s), konteyner haline getirilmiş uygulamaların otomatik olarak dağıtılmasını, ölçeklendirilmesini, ağ iletişimini ve yönetimini sağlayan açık kaynaklı bir konteyner orkestrasyon platformudur. Cloud Native Computing Foundation (CNCF) standartları altında geliştirilmektedir.

Kubernetes ne işe yarar?

Kubernetes, mikroservis mimarisine sahip uygulamaların sunucular üzerinde kesintisiz çalışmasını, yüksek trafik anında otomatik olarak ölçeklenmesini ve çökme durumunda kendini otomatik olarak iyileştirmesini sağlar. Manuel altyapı yönetim iş yükünü azaltarak dağıtım süreçlerini standartlaştırır.

Docker ile Kubernetes arasındaki fark nedir?

Docker, uygulamaları ve bağımlılıklarını izole birer paket haline getiren (konteynerize eden) bir teknolojidir; Kubernetes ise bu konteynerlerin birden fazla sunucuya dağıtılmasını, yük dengelemesini ve yaşam döngüsünü yöneten orkestrasyon sistemidir. Docker tek bir makinede çalışırken, Kubernetes yüzlerce makineden oluşan bir kümeyi (cluster) yönetir.

Kubernetes öğrenmek zor mu?

Kubernetes, barındırdığı gelişmiş ağ kuralları, depolama soyutlamaları ve dağıtık sistem mimarisi nedeniyle dik bir öğrenme eğrisine sahiptir. Ancak temel Docker bilgisine ve linux sistem yönetimi prensiplerine sahip geliştiriciler ile DevOps mühendisleri için dokümantasyon takibi ile öğrenilebilir bir yapıdadır.

Pod nedir ve nasıl çalışır?

Pod, Kubernetes ekosistemindeki en küçük ve en temel dağıtım birimidir; içinde bir veya birbiriyle sıkı entegre çalışan birden fazla konteyner barındırır. Aynı pod içindeki konteynerler, aynı ağ adresi alanını (IP) ve depolama birimlerini (volumes) paylaşarak localhost üzerinden haberleşirler.

Kubernetes hangi bulut sağlayıcıları ile uyumludur?

Kubernetes bulut bağımsız (cloud-agnostic) bir standarttır; AWS (EKS), Google Cloud (GKE), Microsoft Azure (AKS) gibi global sağlayıcıların yanı sıra şirket içi (on-premise) fiziksel veya sanal sunucularda da tam uyumlu olarak çalışabilir. CNCF standartlarına uyan her altyapıda küme kurulumu gerçekleştirilebilir.

Her yazılım projesi için Kubernetes gerekli midir?

Hayır, küçük ölçekli, düşük trafikli veya tek bir sanal sunucu üzerinde çalışan monolitik uygulamalar için Kubernetes kullanımı gereksiz karmaşıklık ve ek işletme maliyeti yaratır. Dinamik ölçeklenme ihtiyacı olan, mikroservis mimarisine sahip ve yüksek erişilebilirlik gerektiren büyük ölçekli sistemler için tercih edilmelidir.

Kubernetes güvenliği nasıl sağlanır?

Kubernetes güvenliği; Rol Tabanlı Erişim Denetimi (RBAC) ile yetkilerin kısıtlanması, ağ politikaları (Network Policies) ile podlar arası trafiğin sınırlandırılması, hassas verilerin (Secrets) etcd üzerinde şifrelenerek saklanması ve konteyner imajlarının düzenli olarak güvenlik açıklarına karşı taranması ile sağlanır.

Son Adım

Dijital projenizi bugün planlayalım

Web, yazılım, e-ticaret, mobil uygulama, entegrasyon, SEO veya GEO ihtiyacınızı net bir kapsama dönüştürelim.

Kubernetes Nedir, Ne İşe Yarar? | Webizm