Ingress Controller: Tek Hata Noktası
Her servis için HA'mız vardı. Trafiği hepsine yönlendiren tek şey hariç.
Kurulum:
- Her biri 3+ replikalı 20 servis
- Çoklu AZ dağıtımı
- Pod disruption budget'lar
- NGINX Ingress Controller: 1 replika
Olay:
- Ingress controller pod'u OOMKilled oldu
- Yeniden zamanlanması 30 saniye sürdü
- Çalışan NGINX pod'u olmayınca bulut load balancer'ının sağlıklı hedefi kalmadı — istemciler LB'den bağlantı hataları ve 503 aldı, temiz bir 502 bile değil
- Arkasındaki her servis aynı anda erişilemez oldu
Neden yalnızca 1 replika?
- “Bu sadece altyapı, hiç çökmez”
- Varsayılan Helm chart değeri: 1
- Kimse değiştirmedi
Çözüm:
controller:
replicaCount: 3
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
topologyKey: kubernetes.io/hostname
Ayrıca:
- minAvailable: 2 ile PodDisruptionBudget
- Doğru dürüst resource request/limit'leri
- Trafik sıçramaları için HPA
Bu, hepsi tek bir availability zone'a düşen replikalarla aynı kör nokta: doğrulamadığınız yedeklilik, yedeklilik değildir.
Ders: Ingress controller'ınız erişilebilirliğinizin TA KENDİSİDİR. Ona öyle davranın.
Bu tür olaylar önlenebilir. AWS Yönetilen Hizmetler ekibimiz müşteri ortamlarını yapay zekâ destekli izleme ve nöbetteki kıdemli mühendislerle 7/24 gözetir — böylece bu tür hikâyeler arşivde kalır.