Сеть и Gateway API
Сеть кластера на практике: Cilium и Calico, Gateway API и Envoy, балансировщики, ARP, DHCP и маршруты, которые пропадают.
9 статей
- Calico в Ready и без ошибок, а каждый новый под полминуты недоступенПосле апгрейда Calico свежие поды 15–42 секунды сидели в чёрной дыре. Felix крутился в цикле XDP-resync, который видно только тестом «новый под ↔ новый под между нодами».
- Минуту работало, потом таймауты: MetalLB L2 с kube-proxy ipvs без strictARPПеревод хостов на новый LoadBalancer IP работал недолго, потом внешний балансировщик увидел таймауты на L4. На ARP за один и тот же IP отвечали все ноды.
- Kubernetes 1.33 → 1.36 и Calico → Cilium за один деньРепетиция на домашней лаборатории: три хопа Kubernetes, замена CNI на Cilium без kube-proxy и отказ от ретированного ingress-nginx в пользу Gateway API — почему контролируемый big-bang оказался безопаснее живой миграции и какие грабли стоит знать заранее.
- Боевой сертификат истёк, и никто не заметил: внешний прокси прикрыл аварию собойВсе публичные хосты отдавали 200, пока кластер отдавал просроченный wildcard. Прокси со своей TLS-терминацией спрятал аварию; настоящая находка — отсутствие алерта на истечение.
- Liveness-проба, привязанная к чужой сети: 330 рестартов, которые ничего не чинилиДве одинаковые реплики cloudflared — 330 и 13 рестартов. Liveness проверяла туннель до edge, поэтому каждая икота аплинка превращалась в SIGKILL.
- Basic auth пропал на 80-м порту после переезда с Ingress на Gateway APIВсе статусы зелёные, мой curl возвращал 401. А вход в WordPress был открыт всем: Gateway API привязывает политику к одному listener'у, а аннотации Ingress покрывали все порты.
- С ingress-nginx на Envoy Gateway без простоя: 27 Ingress, 39 HTTPRouteingress-nginx ретирован и блокирует апгрейды Kubernetes. Как мы перевели 16 публичных хостов на Envoy Gateway: подняли новый вход рядом со старым и в самом конце поменяли только адрес.
- Замена MetalLB на Cilium LB IPAM без единого потерянного запросаВ кластере был ровно один LoadBalancer IP, и от него зависели все маршруты. Как я передал его от MetalLB к Cilium без единой ошибки — дав обоим контроллерам поработать одновременно.
- Одна забытая DHCP-опция положила весь Kubernetes-кластерПосле ребута хоста около пятидесяти подов ушли в крашлуп, хотя все ноды были Ready. Причина — забытая DHCP-опция classless routes, которая молча убрала шлюз по умолчанию.