Kubernetes Temelleri: Pods ve Services Nedir?

Kubernetes, modern bulut tabanlı uygulamaların orkestrasyonu için vazgeçilmez bir platformdur.

Kubernetes, modern bulut tabanlı uygulamaların orkestrasyonu için vazgeçilmez bir platformdur. Bu makalede, Kubernetes’in temel yapı taşlarından olan Pods ve Services kavramlarını detaylı bir şekilde ele alacağız. Pods, uygulamalarınızın en küçük dağıtılabilir birimleridir ve genellikle bir veya birden fazla container’ı barındırır. Services ise bu Pods’lara ağ üzerinden stabil ve güvenilir erişim sağlayan soyutlamalardır. Bu iki kavramı anlamak, Kubernetes kümelerinizde etkili yönetim ve ölçeklendirme yapmanın anahtarıdır. Aşağıda, bu unsurları kurumsal bir yaklaşımla inceleyerek pratik örnekler ve adımlar sunacağız, böylece okuyucularımız kendi ortamlarında hemen uygulayabilir hale gelecektir.

Kubernetes Pods Kavramı

Pod, Kubernetes’te en temel ve atomik birimdir. Bir Pod, tek bir IP adresini paylaşan ve aynı node üzerinde çalışan bir veya daha fazla container’dan oluşur. Bu yapısı sayesinde, containers’lar arasında düşük gecikmeli iletişim sağlanır; örneğin, bir web sunucusu container’ı ve veritabanı proxy’si aynı Pod içinde koordine edilebilir. Pods, stateless veya stateful uygulamalar için uygundur ve Kubernetes scheduler’ı tarafından uygun node’lara yerleştirilir. Pod’lar geçicidir; başarısız olursa yeniden oluşturulur, bu da yüksek erişilebilirlik sağlar.

Pratikte bir Pod oluşturmak için YAML manifest dosyası kullanılır. Aşağıdaki örnekte, basit bir Nginx web sunucusu Pod’u tanımlayalım:

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

Bu YAML’i kubectl apply -f pod.yaml komutuyla uygulayarak Pod’u oluşturun. Ardından kubectl get pods ile durumunu kontrol edin. Pod yaşam döngüsü dört aşamada yönetilir: Pending (zamanlama bekleniyor), Running (tüm containers çalışıyor), Succeeded/Failed (tamamlandı veya hata). Bu döngüyü izlemek için kubectl describe pod ornek-pod komutunu kullanın. Pods’ları ölçeklendirmek için ReplicaSet veya Deployment kullanmanızı öneririz, çünkü tek Pod’lar üretimde yetersiz kalır.

Kubernetes Services Kavramı

Services, Pods’ların dinamik doğasından kaynaklanan IP değişimini soyutlar ve kümeye stabil bir endpoint sağlar. Bir Service, etiket seçicileri (label selectors) ile Pods’ları hedefler ve trafiği load balancer olarak dağıtır. Kubernetes’te dört ana Service türü vardır: ClusterIP (varsayılan, iç ağ erişimi), NodePort (node’lar üzerinden dış erişim), LoadBalancer (bulut sağlayıcı load balancer’ı) ve ExternalName (dış servislere yönlendirme). Bu sayede, Pods ölçeklendiğinde veya yeniden konumlandırıldığında uygulama erişimi kesintisiz kalır.

  1. ClusterIP Service oluşturun: Pods’lara iç erişim için idealdir. YAML örneği:
  2. apiVersion: v1
    kind: Service
    metadata:
      name: ornek-service
    spec:
      selector:
        app: nginx
      ports:
      - port: 80
        targetPort: 80
      type: ClusterIP
  3. Uygulayın ve test edin: kubectl apply -f service.yaml sonrası kubectl get svc ile ClusterIP’yi alın, ardından kubectl port-forward svc/ornek-service 8080:80 ile yerel test yapın.
  4. NodePort için type’ı NodePort olarak değiştirin; bu, her node’da 30000-32767 aralığında bir port açar.

Services’lar headless modda (clusterIP: None) stateful uygulamalar için kullanılır, örneğin veritabanı kümeleri gibi. Bu yapı, DNS tabanlı keşif sağlar ve etiketlerle Pods’ları doğrudan hedefler.

Pods ve Services Pratik Entegrasyonu

Pods ve Services’i entegre etmek, mikro servis mimarilerinde temel bir adımdır. Önce Pods’ınızı etiketleyin (örneğin, metadata.labels.app: web), sonra Service selector’unu buna göre ayarlayın. Bu sayede trafik otomatik olarak doğru Pods’lara yönlenir. Deployment kullanarak Pods’ları yönetin; Deployment YAML’inde replica: 3 belirterek ölçeklendirin ve Service trafiği bu replikalara dağıtsın.

Uygulama adımları şöyle olsun:

  • Deployment oluşturun: Pods’ları otomatik yönetir ve rolling update sağlar.
  • Service’i Deployment selector’una bağlayın: Trafik paylaşımlı hale gelir.
  • İzleme yapın: kubectl logs deployment/web ve kubectl top pods ile performans takip edin.

Örnek senaryo: Bir e-ticaret uygulamasında frontend Pods’ları Service A ile, backend Pods’ları Service B ile gruplayın. Service’lar arası iletişim için ClusterIP kullanın. Bu entegrasyon, sıfır kesinti deployment’lar ve auto-scaling için hazırlar. Sorun gidermede kubectl exec -it pod-adi -- /bin/sh ile Pod içine girip debug yapın.

Kubernetes Pods ve Services’i hakim olmak, kümelerinizi verimli yönetmenin temelidir. Bu kavramları YAML manifestlerle pratik yaparak pekiştirin; küçük bir test kümesiyle başlayın ve giderek karmaşık senaryolara geçin. Düzenli olarak kubectl komutlarını kullanmak, operasyonel ustalık kazandırır ve kurumsal düzeyde güvenilir uygulamalar üretir.

Yazar: Lorem
çerik: 583 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026