docs: KUBEVIP-EXTERNAL-TRAFFIC-POLICY — ingress replicas fix
Deploy drhider / validate (push) Waiting to run

This commit is contained in:
2026-07-13 10:33:30 +04:00
parent 75c7424963
commit b7075dd8bf
2 changed files with 60 additions and 92 deletions
+60
View File
@@ -0,0 +1,60 @@
# Kube-vip + externalTrafficPolicy: Local + ingress replicas
**Дата:** 2026-07-13
**Кластер:** iot-naeel
**Сервис:** `ingress/shturval-ingress-controller-controller`
---
## Проблема
`externalTrafficPolicy: Local` на ingress-сервисе + 2 ingress-пода на 4 нодах.
Kube-vip раздаёт VIP (`185.247.187.151`) на **все 4 ноды** через ARP.
С `Local` трафик, пришедший на ноду БЕЗ ingress-пода — **дропается**.
Результат: 50% запросов → `ERR_TIMED_OUT`.
## Почему не было раньше
Раньше стоял `externalTrafficPolicy: Cluster` — kube-vip форвардил трафик
на любую ноду с ingress через Geneve-туннель. F5 работал, но при передаче
**больших файлов** возникал TCP stall на 51 секунду (cross-node Geneve).
## Хронология
1. `Cluster` → всё работало, но большие файлы висли на 51с
2. `Cluster``Local` — файлы перестали виснуть, но F5 стал дропаться
3. `kubectl scale --replicas=4` — обе проблемы решены
## Текущее состояние (исправлено вручную)
```bash
kubectl scale deploy -n ingress shturval-ingress-controller-controller --replicas=4
```
| Под | Нода |
|-----|------|
| `j4z6z` | iot-naeel-control-plane-xb699 |
| `q8v8g` | iot-naeel-workers-vqphm-6f74n |
| `hs4wf` | iot-naeel-workers-vqphm-bhbvs |
| `dc5kv` | iot-naeel-workers-vqphm-v8zq4 |
## Результат
10 последовательных запросов: 10/10 HTTP 200, 130-250ms.
## Что нужно от девопса
1. Перевести ingress на **DaemonSet** — автоматически по поду на ноду
2. Или `replicas = max(2, количество нод)` — автоскейлинг при добавлении нод
3. При передеплое Штурвала `replicas` не должен сбрасываться на 2
## Ноды (4)
| Нода | Тип |
|------|-----|
| iot-naeel-control-plane-xb699 | control-plane |
| iot-naeel-workers-vqphm-6f74n | workers |
| iot-naeel-workers-vqphm-bhbvs | workers |
| iot-naeel-workers-vqphm-v8zq4 | workers |