Имахме висока достъпност за всяка услуга. Освен за единственото нещо, което насочва трафика към всички тях.

Конфигурацията:

  • 20 услуги с по 3+ реплики всяка
  • Multi-AZ внедряване
  • Pod disruption budgets
  • NGINX Ingress Controller: 1 реплика

Инцидентът:

  • Ingress controller pod OOMKilled
  • 30 секунди за пренасрочване
  • Целият външен трафик: 502 Bad Gateway
  • Всяка. Една. Услуга. Засегната.

Защо само 1 реплика?

  • "Това е просто инфраструктура, никога не се проваля"
  • Стойност по подразбиране на Helm chart: 1
  • Никой не я промени

Решението:

controller:
                                    replicaCount: 3
                                    affinity:
                                    podAntiAffinity:
                                    requiredDuringSchedulingIgnoredDuringExecution:
                                    - topologyKey: "kubernetes.io/hostname"

Също:

  • PodDisruptionBudget с minAvailable: 2
  • Правилни resource requests/limits
  • HPA за скокове на трафика

Урок: Вашият ingress контролер Е вашата достъпност. Третирайте го така.


← Назад към Научени Уроци