# Opus request: loadtest upload > 48KB fails — FULL ANALYSIS ## СУТЬ Flask-сервис loadtest на Shturval k8s v2.12.1. POST /upload с телом > 48KB — случайные обрывы. ## ДОКАЗАННЫЕ ТЕСТЫ | # | Тест | Результат | |---|------|-----------| | 1 | pod → pod:5000 (внутри кластера) | ✅ 100% (102400 байт, 4ms) | | 2 | pod → ingress HTTPS (внутри кластера) | ✅ 100% (102400 байт, 2ms) | | 3 | Снаружи → 185.247.187.151:443 (новый TCP каждый раз) | ❌ ~30-50% Timeout | | 4 | Снаружи (HTTP/1.1 keep-alive, одно соединение) | ✅ 80% (первые 2 таймаут, остальные OK) | | 5 | VM-хост → pod IP:5000 (GET /health) | ❌ 0% (connection timeout) | | 6 | VM-хост → k8s service IP:80 | ❌ 0% | | 7 | VM-хост → native nginx → k8s service | ❌ 0% | ## КЛЮЧЕВОЕ ОТКРЫТИЕ **VM-хост вообще не может общаться с pod-сетью напрямую** (тест #5-7). Трафик снаружи идёт через **hostPort** (443 на ноде), который использует iptables DNAT для проброса в ingress-под. Это kernel-level проксирование, а не обычная маршрутизация. ## ИНФРАСТРУКТУРА ``` Edge LB (NUBES LLC, 185.247.187.151) → VM (5.172.178.213/10.10.102.21, ens192 MTU 1500) → hostPort:443 → iptables DNAT → ingress pod (172.16.x.x) → nginx (Shturval, ModSecurity DetectionOnly, http2 on) → k8s service (10.106.36.241:80) → app pod (172.16.x.x:5000, Flask dev-server) ``` - CNI: Cilium (подтверждено namespace cilium-secrets) - Pod MTU: 1500, Host MTU: 1500 - ModSecurity: SecRuleEngine DetectionOnly, SecRequestBodyNoFilesLimit 131072 ## ЧТО УЖЕ СДЕЛАНО - proxy-request-buffering: off (ingress annotation) — улучшило с 3/10 до 5/10 - keep-alive 10→75 — УХУДШИЛО (0/10), откачено - Ретраи на клиенте — КОСТЫЛЬ, не принимается - Dockerfile Gunicorn limits — бесполезно (Shturval запускает python app.py) ## ГИПОТЕЗА iptables DNAT (hostPort) + conntrack + большое тело = часть TCP-сегментов теряется при трансляции. После установки соединения (keep-alive) — стабильно. Новые соединения дропаются случайно. ## ВОПРОС Как добиться 100% надёжности загрузки без ретраев? Варианты: WebSocket? gRPC? Убрать hostPort, использовать NodePort/LoadBalancer? Тюнинг conntrack?