diff --git a/PROBLEM-AND-SOLUTION.md b/PROBLEM-AND-SOLUTION.md index 188cdf4..30c707b 100644 --- a/PROBLEM-AND-SOLUTION.md +++ b/PROBLEM-AND-SOLUTION.md @@ -133,3 +133,44 @@ Cilium **DSR + `kubeProxyReplacement`** убирает cross-node SNAT на об ### Итоговый вердикт Путь правильный (фикс корня, а не симптома). Конечное состояние `Cluster + корректный MTU + replicaCount: 2` — чистое и согласованное: убирает разом и ручной scale, и Local-костыль. + +--- + +## Результаты (тестовый кластер `iot-naeel`, 2026-07-13) + +Изменение применено на личном кластере где отсутствуют активные production-сервисы. + +**До:** `externalTrafficPolicy: Local`, 4 реплики ingress, `ERR_TIMED_OUT` при сбросе реплик, TCP-stall 51с. + +**После:** `externalTrafficPolicy: Cluster`, 2 реплики ingress, MTU 1450. + +| Метрика | До | После | +|---------|-----|-------| +| F5 (5 запросов) | 50% ERR_TIMED_OUT | 5/5 OK, <250ms | +| Upload 63 KB | пауза 51с | 0.2-0.3s | +| Upload 6×63 KB | нестабильно | все <0.25s | +| Process 6 файлов | ~90s (со stall) | 32.8s | +| Download ZIP | медленно | 0.23s | +| Download CSV | медленно | 0.12s | + +Все костыли (`Local`, ручной scale) убраны. Кластер работает на заводских настройках Штурвала + одна цифра в конфиге Cilium. + +--- + +## Рекомендации для production-кластеров + +На действующих кластерах с активными сервисами **НЕ рекомендуется** применять `kubectl edit configmap` + `rollout restart ds/cilium` вручную. Причины: + +- `rollout restart ds/cilium` перезапускает сетевой слой на **всех** нодах одновременно (rolling update, но всё же) +- eBPF-датаплейн переживает рестарт, но возможны кратковременные блипы +- Ошибка в значении MTU затронет **все** сервисы кластера +- На production требуется окно обслуживания и мониторинг + +**Рекомендуемый порядок для production:** + +1. Замерить underlay MTU между нодами через `ping -M do` +2. Передать значение провайдеру/девопсу для включения в конфигурацию кластера +3. Применить при плановом обслуживании или при создании новых кластеров +4. Для существующих кластеров — согласовать окно и порядок отката + +**Для новых кластеров:** включить `mtu: <измеренное значение>` в конфиг Cilium на этапе развёртывания, до деплоя приложений.