Yusuf
KubernetesCloudReliabilityZeroDowntime

Kubernetes Pod Lifecycle ve Zero-Downtime Graceful Shutdown Stratejileri

Sıfır kesinti (Zero-Downtime) ile sürüm dağıtımı yaparken podların SIGTERM sinyalini nasıl ele alması gerektiğini adım adım inceliyoruz.

Yusuf
Yusuf
••1 dk okuma•303 okuma
Kubernetes Pod Lifecycle ve Zero-Downtime Graceful Shutdown Stratejileri

Zero-Downtime Dağıtımların Kritik Parçası: Graceful Shutdown

Kubernetes'te yeni bir deployment aldığınızda eski podlar anında öldürülmez; belirli bir yaşam döngüsü protokolü işletilir. Eğer uygulamanız bu sinyalleri dinlemiyorsa, işlemekte olduğu kullanıcı istekleri yarıda kesilir ve 502 Bad Gateway hataları üretilir.

Pod Sonlanma Aşamaları:

  1. Pod durumu Terminating olarak güncellenir.
  2. Kube-proxy ve Service Endpoint listesinden pod IP'si kaldırılır.
  3. preStop hook tetiklenir (varsa).
  4. Konteynere SIGTERM sinyali gönderilir.
  5. terminationGracePeriodSeconds süresi boyunca uygulamanın mevcut istekleri bitirmesi beklenir.
  6. Süre bittiğinde hala kapanmadıysa SIGKILL gönderilir.
yaml
spec:
  containers:
  - name: web-app
    image: app:v2.1.0
    lifecycle:
      preStop:
        exec:
          command: ["/bin/sh", "-c", "sleep 5"]

preStop içindeki bekleme, ingress ve load balancer yönlendirme tablolarının güncellenmesi sırasında gelebilecek gecikmeli isteklerin karşılanmasını garanti altına alır.

Bu yazıyı faydalı bulduysanız beğenebilir veya sosyal medyada paylaşabilirsiniz.
Yusuf Aytaş

Yusuf Aytaş

Yazılım Mühendisi — Cloud & DevOps

Bulut mimarileri, Kubernetes, Docker, Terraform ve CI/CD otomasyonları üzerine çalışıyorum. Teknik deneyimlerimi ve projelerimi burada paylaşıyorum.