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

6 Boyutlu Mimari Analiz

⚙️1. Temel Çalışma Mekanizması

Mekanizma

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

Kapsam

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ı

Kritik Risk
  • ✓

    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

Metrikler
  • ✓

    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

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)

Ödünleşim

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 Saha Örneği)

GERÇEK DÜNYA TELEMETRİSİ

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