Kubernetes Nedir?

Kubernetes Nedir?

Yazılım geliştirme dünyası, son on yılda baş döndürücü bir dönüşüm yaşadı. Monolitik uygulamalardan mikroservislere , fiziksel sunuculardan konteynerlere, manuel dağıtımdan sürekli entegrasyon ve dağıtıma (CI/CD) geçildi. Bu dönüşümde konteyner teknolojisi kritik bir rol oynarken, bu konteynerlerin yönetimi için yeni bir çağın kapılarını açan sistem ise Kubernetes oldu.

Peki Kubernetes nedir? Sadece bir orkestrasyon sistemi mi? Yoksa yazılım dağıtımında devrim yaratan bir altyapı standardı mı? Bu yazıda Kubernetes’in temellerinden ileri seviye kullanım senaryolarına kadar her yönünü ele alacağız...

Kubernetes’in Doğuşu ve Gelişim Süreci

Kubernetes, Google’ın yıllarca kullandığı Borg adlı içsel sistemin halka açık, modernleştirilmiş bir versiyonudur. Borg, binlerce uygulamayı yüz binlerce sunucuda çalıştırabilen devasa bir platformdu. Google bu tecrübeyi açık kaynak dünyasına aktarmak istedi ve 2014 yılında Kubernetes’i duyurdu.

Kubernetes kısa sürede Cloud Native Computing Foundation (CNCF) çatısı altına alındı. CNCF, Kubernetes’in gelişimini destekleyen, topluluk tarafından yönlendirilen bir yapıdır. Bugün Kubernetes; AWS, Azure, Google Cloud gibi tüm büyük bulut sağlayıcıları tarafından desteklenen, dev bir ekosisteme sahip bir platformdur.

Kubernetes’in Felsefesi: Deklaratif Altyapı

Kubernetes’i özel kılan yönlerden biri, deklaratif bir yaklaşımı benimsemesidir. Geleneksel yöntemlerde sistem yöneticisi her adımı manuel olarak tanımlar (imperatif). Kubernetes’te ise geliştirici ya da DevOps mühendisi sistemin "nasıl olması gerektiğini" tanımlar; Kubernetes bunu gerçekleştirmek için gereken adımları kendi atar.

Bu, altyapının idempotent (tekrarlanabilir ve sonuçta aynı duruma gelen) olmasını sağlar. Yani sistemde bir problem oluştuğunda Kubernetes otomatik olarak tanımlanan duruma dönmeye çalışır.

Kubernetes Temel Mimarisi

Kubernetes’in bileşenlerini genel hatlarıyla daha önce tanımlamıştık. Şimdi biraz daha derine inelim.

Control Plane (Yönetim Uçbirimi)

Kubernetes’in sinir merkezi olan Control Plane şu servislerden oluşur:

· kube-apiserver: Tüm bileşenlerin iletişim kurduğu merkezi API uç noktasıdır.

· etcd: Dağıtık bir key-value veritabanıdır. Kubernetes’in durumu burada saklanır.

· kube-scheduler: Pod’ları uygun node’lara atar. CPU, bellek, node etiketi, affinity/anti-affinity kuralları gibi birçok kriteri dikkate alır.

· controller-manager: ReplicaSet, DaemonSet, NodeController gibi kontrol döngülerini yöneten bir orkestratördür.

Node (Çalışma Noktaları)

Node’lar, uygulamaların çalıştığı fiziksel ya da sanal makinelerden oluşur. Her node üzerinde şunlar bulunur:

· kubelet: Control Plane ile haberleşen ajan.

· container runtime: Docker, containerd gibi konteyner çalıştırıcısı.

· kube-proxy: Ağ trafiğini yönlendirir, servislerin IP eşleşmelerini sağlar.

Kubernetes Temel Kavramları

Pod

Pod, Kubernetes’in çalıştırabildiği en küçük birimdir. Aynı Pod içerisindeki konteynerler aynı IP’yi, depolama alanını ve yaşam döngüsünü paylaşır. Genellikle her Pod’da tek bir uygulama konteyneri bulunur.

ReplicaSet

Belirli sayıda Pod’un her zaman çalışmasını sağlar. Örneğin 3 replikalı bir web uygulaması varsa, sistem bunlardan biri çökse bile hemen yenisini yaratır.

Deployment

ReplicaSet’leri yönetir. Uygulamaların sürümlerini yönetmek, rolling update yapmak ve rollback sağlamak için kullanılır.

Service

Pod’lar dinamik olarak yaratılıp silindiğinden IP adresleri değişkendir. Service, bu değişkenliği soyutlar ve sabit bir DNS adresi ile uygulamalara ulaşmayı sağlar. Service türleri:

· ClusterIP: Sadece küme içinden erişim sağlar.

· NodePort: Dış dünyadan erişimi mümkün kılar.

· LoadBalancer: Bulut sağlayıcı destekli yük dengeleyici oluşturur.

Namespace

Kaynakları mantıksal olarak bölmek için kullanılır. “dev”, “test”, “prod” gibi farklı ortamlarda izole kaynak yönetimi sağlar.

İleri Seviye Bileşenler

StatefulSet

Veritabanı gibi durum bağımlılığı olan uygulamalar için tasarlanmıştır. Pod’lara kalıcı ve sabit kimlikler verir.

ConfigMap ve Secret

Uygulama yapılandırmaları ve gizli bilgileri (şifreler, API anahtarları) konteyner dışı olarak saklamak için kullanılır.

DaemonSet

Her node’da aynı pod’un çalıştırılmasını sağlar. Genellikle log toplayıcılar (fluentd), node monitörleri (node-exporter) için kullanılır.

CronJob

Zamanlanmış görevleri çalıştırır. Örneğin her gece saat 3’te yedek alma işlemi gibi.

Gerçek Dünya Kullanım Senaryoları

1. Mikroservis Mimarisi

Bir e-ticaret sitesinin her özelliği (katalog, ödeme, kullanıcı yönetimi) ayrı mikroservis olarak Kubernetes’te dağıtılabilir. Bu servisler izole, bağımsız ve ölçeklenebilir şekilde yönetilir.

2. CI/CD Otomasyonu

Git push yapıldığında otomatik olarak yeni bir imaj oluşturulur, test edilir ve Kubernetes’e dağıtılır. Bu süreç ArgoCD veya Jenkins-X gibi araçlarla entegre edilir.

3. Makine Öğrenmesi Dağıtımları

Model eğitimi için GPU destekli node’lar kullanılır. Eğitim sonrası model container olarak paketlenip Kubernetes üzerinde API şeklinde yayınlanabilir (MLOps).

4. Hibrit Bulut Senaryoları

Kubernetes ile aynı altyapı hem şirket içi veri merkezinde, hem de dilediğiniz bulut sağlayıcısı üzerinde çalışabilir. Böylece taşınabilirlik ve bağımsızlık sağlanır.

Güvenlik Perspektifi

Kubernetes güvenliği, çok katmanlı bir yaklaşımla ele alınmalıdır:

-RBAC (Role-Based Access Control) ile kullanıcı ve servis yetkilendirme.

-Pod Security Policies / Admission Controllers ile pod seviyesinde denetim.

-Network Policy ile pod’lar arası trafiğin sınırlandırılması.

-Image scanning ile kötü amaçlı imajların engellenmesi.

-Ayrıca Secret’lar genelde şifrelenmiş şekilde etcd içinde saklanır, fakat ek olarak HashiCorp Vault gibi sistemlerle de yönetilebilir.

İzleme ve Gözlemlenebilirlik

Kubernetes üzerinde çalışan sistemlerin izlenebilirliği için popüler kombinasyon:

· Prometheus: Metrik toplama.

· Grafana: Görsel dashboard’lar.

· Alertmanager: Alarm üretimi.

· Fluentd / Loki / ELK Stack: Log toplama ve analiz.

Ayrıca OpenTelemetry entegrasyonu ile dağıtık izleme (tracing) yapılabilir.

Kubernetes Ekosistemi

Kubernetes, kendi başına güçlü olsa da, onu tamamlayan büyük bir araç ekosistemi vardır:

Kategori Araçlar
Paketleme Helm, Kustomize
GitOps ArgoCD, Flux
İzleme Prometheus, Grafana, Loki
Service Mesh Istio, Linkerd, Consul
Test Otomasyonu Kube-bench, kube-hunter, Chaos Mesh
Geliştirici Araçları Skaffold, Tilt, Okteto

Kubernetes Öğrenme Yolculuğu

Başlangıç seviyesinden ileri düzeye doğru bir yol haritası:

· Kavramları öğren: Pod, Service, Deployment, Volume.,

· Minikube ile lokal cluster kur: Deneysel kurulumlar için.

· YAML yazma pratiği yap.

· Helm ve CI/CD entegrasyonu öğren.

· Monitoring, güvenlik, HPA gibi gelişmiş konulara geç.

· Gerçek bir projede kullan.

Sonuç

Kubernetes, modern uygulama geliştirme ve dağıtım dünyasında oyunun kurallarını değiştiren bir platformdur. Sağladığı otomasyon, taşınabilirlik, esneklik ve topluluk desteği sayesinde; Kubernetes sadece bir araç değil, aynı zamanda bir altyapı kültürü hâline gelmiştir.

Her geçen gün daha fazla kurum, uygulamalarını Kubernetes üzerine taşımakta. Bu yüzden Kubernetes bilgisi, yazılım geliştiriciler, sistem mühendisleri ve DevOps uzmanları için kariyer açısından stratejik bir yatırım niteliğindedir.

نبحث عن كتّاب وصحفيين!

نبحث عن كتّاب وصحفيين!

إذا كنت صحفياً، لديك رغبة في التعمق في المواضيع المتعلقة بالأعمال والقطاعات، نريد العمل معك!

Ece Kaya

متحمس لبلس كلاودز
Software Development

معلومات المنتج

#kubernetes #yazılım #mikroservis
قلم أوتوماتيكي
تكتب AutoQuill محتوى تسويقي تابع وتنشره لك.

أسهل مال ستحققه على الإطلاق

مع أداة AutoQuill التي بدأت PlusClouds بتقديمها لشركائها، سيتمكن منشئو المحتوى من البيع بنقرة واحدة فقط. دعنا نوضح لك كيف يمكنك الحصول على نصيبك من هذه الثورة.