Yazılarımız

Veri Akademi

KUBERNETES NEDİR? POD, DEPLOYMENT, SERVİCE VE TEMEL KAVRAMLAR

Modern yazılım dünyasında uygulamalar artık tek bir sunucuda çalışan basit yapılar olmaktan çıktı. Mikroservis mimarileri, bulut altyapıları ve sürekli teslimat beklentileri, uygulamaların daha esnek ve ölçeklenebilir şekilde yönetilmesini zorunlu kılıyor. İşte bu noktada Kubernetes, konteyner tabanlı uygulamaların yönetimini kökten değiştiren bir platform olarak öne çıkıyor.

Kubernetes, yalnızca bir araç değil; uygulamaların nasıl dağıtıldığı, ölçeklendiği ve sürdürüldüğü konusunda yeni bir standarttır. Geliştiriciler için kodu çalıştırmak kadar, operasyon ekipleri için de sistemi kararlı tutmak kritik hale gelir. Kubernetes bu iki dünyanın kesiştiği noktada güçlü bir çözüm sunar.

Bu makalede Kubernetes nedir sorusunu derinlemesine ele alacak, Pod, Deployment ve Service gibi temel yapı taşlarını sade ama kapsamlı bir şekilde inceleyeceğiz. Amaç, kavramları ezberletmek değil; Kubernetes’in neden bu kadar yaygın kullanıldığını gerçekten anlamanızı sağlamak.

Dağıtık bir Kubernetes kümesinde düğümler ve kontrol bileşenleri arasındaki çalışma düzenini gösteren mimari yapı

Kubernetes Nedir ve Neden Ortaya Çıktı?

Kubernetes, konteynerleştirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir platformdur. Google’ın yıllar boyunca edindiği üretim tecrübesi üzerine inşa edilen bu sistem, günümüzde Cloud Native ekosisteminin merkezinde yer alır.

Konteyner teknolojileri, özellikle Docker ile birlikte yaygınlaştığında, tek başına çalışan konteynerlerin üretim ortamlarında yönetilmesinin zor olduğu fark edildi. Birden fazla servis, yüzlerce konteyner ve değişken yükler söz konusu olduğunda manuel süreçler yetersiz kalır. Kubernetes bu karmaşıklığı soyutlayarak yönetilebilir hale getirir.

Ölçeklenebilirlik, yüksek erişilebilirlik ve otomasyon, Kubernetes’in ortaya çıkışındaki temel motivasyonlardır. Sistem, uygulamanın ne istediğini tanımlamanıza izin verir; nasıl çalıştırılacağını ise kendisi organize eder.

Kubernetes Mimarisi: Control Plane ve Node Yapısı

Kubernetes mimarisi temelde iki ana bölümden oluşur: Control Plane ve Worker Node’lar. Control Plane, kümenin beynidir ve tüm yönetim kararlarını burada alır. Node’lar ise uygulama iş yüklerinin gerçekten çalıştığı makinelerdir.

Control Plane Bileşenleri

Control Plane, kümenin istenen durumunu takip eder ve bu duruma ulaşmak için gerekli aksiyonları alır. Bu katmanda çalışan bileşenler, sistemin tutarlılığını sağlar.

  • API Server: Kubernetes ile etkileşime girilen ana giriş noktası
  • etcd: Kümenin tüm durum bilgisini saklayan dağıtık veri deposu
  • Scheduler: Pod’ların hangi Node üzerinde çalışacağını belirleyen bileşen
  • Controller Manager: Sistem durumunu sürekli izleyip düzeltici aksiyonlar alan kontrol döngüleri

Worker Node Bileşenleri

Worker Node’lar, uygulama konteynerlerinin çalıştığı fiziksel veya sanal makinelerdir. Her Node üzerinde, iş yüklerinin sorunsuz çalışmasını sağlayan temel servisler bulunur.

Bir Kubernetes worker node üzerinde kubelet, container runtime ve ağ bileşenlerinin ilişkisini anlatan yapı

Kubelet, Node ile Control Plane arasındaki iletişimi sağlar. Container runtime ise Docker veya containerd gibi teknolojilerle konteynerleri gerçekten çalıştırır. Bu yapı sayesinde Kubernetes, altyapıdan bağımsız bir yönetim katmanı sunar.

Pod Nedir? Kubernetes’in En Küçük Dağıtım Birimi

Pod, Kubernetes dünyasındaki en küçük çalıştırılabilir birimdir. Bir veya birden fazla konteyneri, ortak ağ ve depolama kaynaklarıyla birlikte kapsar. Konteynerler Pod içinde sıkı bir şekilde ilişkilidir ve genellikle aynı yaşam döngüsünü paylaşır.

Pod Yapısının Mantığı

Pod’lar, tek başına ölçeklenmez veya uzun süreli varlıklar olarak düşünülmez. Bunun yerine, daha üst seviye nesneler tarafından yönetilirler. Bu yaklaşım, sistemin daha esnek ve dayanıklı olmasını sağlar.

apiVersion: v1
kind: Pod
metadata:
  name: ornek-pod
spec:
  containers:
    - name: app
      image: nginx:latest
      ports:
        - containerPort: 80

Bu örnekte basit bir Pod tanımı görülüyor. Ancak gerçek üretim ortamlarında Pod’lar genellikle doğrudan değil, Deployment gibi kontrol mekanizmaları aracılığıyla oluşturulur.

Deployment Nedir? Uygulama Yaşam Döngüsünün Yönetimi

Deployment, Pod’ların nasıl oluşturulacağını, güncelleneceğini ve ölçekleneceğini tanımlayan üst seviye bir Kubernetes nesnesidir. Uygulamanın istenen durumunu deklaratif olarak ifade etmenizi sağlar.

Deployment ile Sağlanan Avantajlar

Deployment kullanımı, manuel müdahaleleri büyük ölçüde azaltır. Sistem, tanımladığınız durumu sürekli olarak korumaya çalışır ve sapmalar olduğunda otomatik olarak düzeltir.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:1.25

Burada üç kopya halinde çalışan bir web uygulaması tanımlanmıştır. Bir Pod başarısız olduğunda, Kubernetes otomatik olarak yenisini oluşturur. Bu yaklaşım, yüksek erişilebilirlik için kritik öneme sahiptir.

Service Nedir? Pod’lara Erişimin Standart Yolu

Kubernetes’te Pod’lar geçicidir; IP adresleri değişebilir veya Pod tamamen yeniden oluşturulabilir. Service nesnesi, bu değişkenliği soyutlayarak uygulamalara ve kullanıcılara sabit bir erişim noktası sunar.

Service Türleri

Kullanım senaryosuna göre farklı Service tipleri bulunur. Her biri, trafiğin nasıl yönlendirileceğini belirler.

  • ClusterIP: Küme içi erişim için varsayılan servis tipi
  • NodePort: Node’lar üzerinden dış erişim sağlar
  • LoadBalancer: Bulut sağlayıcı yük dengeleyicileriyle entegre çalışır
Kubernetes Service yapısında gelen trafiğin Pod kopyalarına dağıtılmasını anlatan akış diyagramı

Service kavramı, mikroservis mimarilerinde servis keşfi ve yük dengeleme problemlerini büyük ölçüde çözer.

Kubernetes Temel Kavramları ve İleri Seviye Yaklaşımlar

Kubernetes ekosistemi Pod, Deployment ve Service ile sınırlı değildir. ConfigMap, Secret, Ingress gibi birçok nesne, sistemin daha güvenli ve esnek çalışmasını sağlar.

ConfigMap ve Secret Kullanımı

Uygulama konfigürasyonlarını imajdan ayırmak, farklı ortamlar arasında geçişi kolaylaştırır. ConfigMap ve Secret nesneleri bu ihtiyaca cevap verir.

Gizli bilgilerin kod deposuna eklenmemesi, güvenlik açısından kritik bir pratiktir. Kubernetes bu ayrımı doğal bir şekilde destekler.

Kubernetes Öğrenirken Dikkat Edilmesi Gerekenler

Kubernetes öğrenme süreci, kavramların birbiriyle ilişkisini anlamayı gerektirir. Sadece YAML dosyaları yazmak yeterli değildir; mimari bakış açısı kazanmak gerekir.

Daha sistematik ve uygulamalı bir öğrenme için Kubernetes eğitimi programları, gerçek senaryolar üzerinden ilerleyerek bu süreci hızlandırabilir.

Geliştirici ve operasyon ekiplerinin Kubernetes üzerinde birlikte çalışmasını temsil eden modern yazılım teslim süreci

Sonuç olarak Kubernetes, modern yazılım altyapılarının vazgeçilmez bir parçası haline gelmiştir. Doğru anlaşıldığında ve doğru şekilde uygulandığında, hem geliştirme hem de operasyon süreçlerinde ciddi verimlilik sağlar.

 VERİ AKADEMİ