Как reload ingress-nginx уронил прод. История про pids.max, threads-max и виртуалку, которая подросла
Схема входящего траффика в кластер Kubernetes простая: web → Envoy Gateway → Ingress Nginx → backend . За Ingress Nginx, помимо обычного HTTP, живут долгоживущие WebSocket-соединения. Штатная нагрузка - около 100 RPS. Ничего экзотического. В один прекрасный день всё в кластере легло. Клиенты получают 503/500. В логах Envoy - флаг UF и upstream_reset_before_response_started{connection_timeout} . То есть ingress-nginx просто перестал отвечать. Дальше - два часа разбора и довольно красивая цепочка причин, которая началась с банального reload, а закончилась на том, как ядро считает лимит потоков при старте виртуалки.
https://habr.com/ru/articles/1050478/
#kubernetes #ingressnginx #postmortem #threadsmax #pidsmax #systemd #websocket #sre

Как reload ingress-nginx уронил прод. История про pids.max, threads-max и виртуалку, которая подросла
Предистория Схема входящего траффика в кластер Kubernetes простая: web → Envoy Gateway → Ingress Nginx → backend . За Ingress Nginx, помимо обычного HTTP, живут долгоживущие WebSocket-соединения....