From cbf7de27d867abc10f96adbbe2887a517a239bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 13 Jul 2026 21:06:19 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=8B=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=D0=BC=20=D0=BA=D0=BB=D0=B0=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=20+=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B4=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F=20productio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROBLEM-AND-SOLUTION.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) 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 на этапе развёртывания, до деплоя приложений.