30 lines
1.7 KiB
Markdown
30 lines
1.7 KiB
Markdown
# 2026-07-10 — Ответ Соннета: kube-vip ARP split-brain
|
||
|
||
## Диагноз подтверждён
|
||
ARP split-brain: все 4 ноды анонсят VIP, 2 без ingress → ~50% трафика в никуда.
|
||
|
||
## Почему `svc_election: true` не помогает
|
||
Lease есть, holder = v8zq4. Но `svc_election` управляет только k8s-объектами (кто обновляет Service/Endpoints), а НЕ тем, кто добавляет IP на интерфейс и шлёт ARP. Все 4 пода всё равно делают `ip addr add 185.247.187.151/32`.
|
||
|
||
## Почему `vip_leaderelection: true` не применился
|
||
Это флаг для control-plane VIP (api-server HA), а не для LoadBalancer-сервисов. Бесполезен для нашей задачи.
|
||
|
||
## Решения
|
||
|
||
| # | Вариант | Сложность | Риск |
|
||
|---|---------|-----------|------|
|
||
| 1 | Taint на ноды без ingress | Низкая | Низкий |
|
||
| 2 | nodeSelector через Shturval customvalues | Средняя | Синтаксис |
|
||
| 3 | nodeAffinity через customvalues | Средняя | Синтаксис |
|
||
| 4 | BGP вместо ARP | Высокая | Роутер |
|
||
|
||
## Рекомендация Соннета
|
||
**Taint на ноды без ingress** — убрать kube-vip с control-plane и worker-6f74n:
|
||
```bash
|
||
kubectl taint node control-plane no-ingress=true:NoExecute
|
||
kubectl taint node worker-6f74n no-ingress=true:NoExecute
|
||
```
|
||
Kube-vip DaemonSet не имеет toleration → поды выселятся с этих нод.
|
||
ARP будут слать только 2 ноды с ingress → 100% трафика в цель.
|
||
Откат: `kubectl taint node X no-ingress-`
|