Skip to main content

> spot_sunucu_kesinti_yönetimi_ve_güvenli_düğüm_boşaltma_(node_draining)

Spot Sunucu Kesinti Yönetimi ve Güvenli Düğüm Boşaltma (Node Draining)

Kubernetes platformları AWS 2 dakikalık Spot sunucu kesinti bildirimlerini nasıl yakalayarak pod'ları güvenle tahliye eder ve HTTP 502/504 hatalarını önler?

Senior (L5)

ÖZET VE TEKNİK CEVAP

AWS Spot sunucuları, atıl sunucu kapasitesini kullanarak On-Demand fiyatlarına göre %70 ila %90 indirim sağlar; ancak AWS bu sunucuları 2 dakikalık otomatik bir kapanma uyarısıyla geri alabilir. Düğüm aniden kapatılırsa üzerinde çalışan pod'lar uyarısız öldürülür, devam eden HTTP bağlantıları kopar, veritabanı işlemleri yarıda kalır ve kullanıcılar HTTP 502/504 hataları alır. AWS Node Termination Handler (NTH) veya yerel Karpenter Spot kesinti dinleyicileri kurmak, 2 dakikalık EventBridge uyarısını yakalayarak düğümü anında kordon altına alır (`kubectl cordon`), yedek pod'ları diğer sunucularda başlatır ve sunucu silinmeden önce pod'ları güvenle tahliye eder (`SIGTERM` -> `preStop` kancası -> bağlantı boşaltma).

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

AWS Spot kapasitesini geri alırken, kapanmadan 120 saniye önce yerel Instance Metadata Servisi'ne (IMDS - `spot/instance-action`) ve Amazon EventBridge'e `Spot Interruption Warning` uyarısı gönderir. Karpenter veya AWS Node Termination Handler bu olayı yakalar. İş akışı: (1) Düğüm kordon altına alınır (`kubectl cordon`), yeni pod gelişi engellenir. (2) Mevcut pod'lar tahliye edilir (`kubectl drain`). (3) Konteynerlere `SIGTERM` sinyali gönderilir. (4) Pod `preStop` kancaları devam eden istekleri tamamlar ve pod'u yük dengeleyiciden çıkarır. (5) Konteyner 120 saniyelik donanım silinme süresi dolmadan temiz bir şekilde kapanır.

2. Doğru Kullanım Senaryosu

Durumsuz (stateless) web API servisleri, Kubernetes worker düğümleri, CI/CD derleme sunucuları, asenkron kuyruk tüketicileri, yapay zeka veri hazırlama ve dağıtık render motorları.

3. Prodüksiyon Arıza Modları

Kesinti dinleyicisi olmadan Spot sunucu kullanılması sonucu bir AZ'de kapasite çekildiğinde 20 sunucunun aynı anda yok olması ve canlı trafiğin %50'sinin çökmesi; konteynerlerde `preStop` kancası ve `terminationGracePeriodSeconds` tanımlanmaması nedeniyle süren ödeme işlemlerinin yarıda kesilmesi.

4. Teşhis ve Telemetri Sinyalleri

AWS EC2 konsolundaki `InstanceInterruption` olaylarıyla eşzamanlı olarak HTTP 502/504 ağ geçidi hatalarının fırlaması; Kubernetes pod'larının 137 (`SIGKILL`) çıkış koduyla yeniden başlaması; Karpenter loglarında `disruption: spot interruption` kayıtları.

5. Önleme ve Mimari Bariyerler

Spot Filosu isteklerini en az 10-15 farklı sunucu tipine ve birden fazla AZ'ye `price-capacity-optimized` stratejisiyle yayın; Karpenter yerel Spot kesinti yönetimini açın; tüm Kubernetes deployment tanımlarına `lifecycle.preStop.exec.command: ['/bin/sleep', '15']` ve `terminationGracePeriodSeconds: 60` ekleyin.

6. Mimari Ödünleşimler (Trade-offs)

Spot sunucular sunucu maliyetini %70-90 oranında düşürür; ancak durumsuz (stateless) uygulama mimarisi, güvenli kapanma kancaları ve farklı sunucu ailelerine yayılmış kapasite çeşitlendirmesi gerektirir.

Vaka İncelemesi (TinyCTO Örneği)

AWS EKS üzerinde 400 sunucu çalıştıran bir sosyal medya platformu On-Demand sunucular için ayda $36.000 ödüyordu. Kümenin %80'i Karpenter ve `price-capacity-optimized` stratejili Spot sunuculara geçirildiğinde ve SQS tabanlı otomatik kesinti tahliyesi kurulduğunda, aylık sunucu faturası $11.500'a indi (yılda $294.000 tasarruf) ve ayda gerçekleşen 1.200 Spot kesintisinde tek bir kullanıcı hatası dahi yaşanmadı.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

AWS bir EC2 Spot sunucusunu kapatmadan önce ne kadar süre önceden uyarı verir?

Instance Metadata Servisi (IMDS) ve EventBridge üzerinden 2 dakika (120 saniye).
Q2

Hangi AWS Spot tahsis stratejisi en düşük kesinti olasılığını sunar?

Atıl kapasite havuzlarını ve geçmiş kesinti oranlarını analiz eden `price-capacity-optimized` stratejisi.

Spot Sunucu Kesinti Yönetimi ve Güvenli Düğüm Boşaltma (Node Draining) — Sıkça Sorulan Sorular

Spot sunuculardaki pod'ları tahliye ederken neden `preStop` sleep kancası gereklidir?

Kısa bir bekleme (ör. 10-15 sn), konteyner `SIGTERM` almadan önce Kubernetes ve AWS ALB'nin pod'u yük dengeleyiciden çıkarmasına ve yeni trafik göndermeyi kesmesine zaman tanır.

AWS Spot sunucuları On-Demand fiyatına göre ne kadar indirim sağlar?

Sunucu ailesine, bölgeye ve anlık piyasa talebine bağlı olarak %70 ila %90'a varan indirim.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • AWS Spot instances offer 70-90% discounts with a 2-minute reclamation notice.
  • Node Termination Handler / Karpenter intercepts IMDS/EventBridge notices to drain pods.
  • `preStop` sleep hooks and connection draining prevent inflight 502/504 errors.
  • `price-capacity-optimized` allocation across 10+ instance types minimizes interruption rates.

Yaygın Yanılgılar

  • Yanılgı: Spot instances cannot be used for production web APIs (Gerçek: With termination handlers and multi-AZ diversification, Spot runs production at scale reliably).
  • Yanılgı: AWS guarantees a replacement Spot instance immediately (Gerçek: You must diversify across instance families so the autoscaler can pick other available pools).

Karar Kılavuzu & Önceliklendirme

Deploy Karpenter or AWS Node Termination Handler across all Spot-enabled clusters. Diversify Spot node pools across at least 10 instance types with `price-capacity-optimized`.

Doğrulanmış Kaynaklar & Referanslar