интерфейса. На одном внешний ip. На втором внутренний.
- В k3s при установке выключен и serviceLb и traefik.
- Установлен cilium.
- Так же установлен metallb с 2мя пулами /32 и привязкой их к интерфейсам хоста через L2Advertisement. Metallb ставил по причине того, что цилиумовский lb не умеет в /32 сеть.
- В качестве ингреса стоит istio. В нем должно быть 2 gateway (для внешних сервисов и внутренних). Соответственно для каждого gateway через конфиг IstioOperator сделал по 1 ingressGateways с указанием через аннотацию Metallb из какого пула брать ip.
Проблема:
1й ingressGateways c внешним ip спокойно его получает и работает.
А 2й постоянно моргает статусом pending и растет счетчик назначений.
В логах metallb speaker летят записи:
{"caller":"main.go:418","event":"serviceWithdrawn","ip":["192.168.0.116"],"level":"info","msg":"withdrawing service announcement","reason":"noIPAllocated","ts":"2023-10-14T13:50:20Z"}
{"caller":"service_controller.go:103","controller":"ServiceReconciler","end reconcile":"istio-system/istio-ingressgateway-internal","level":"info","ts":"2023-10-14T13:50:20Z"}
{"caller":"service_controller.go:60","controller":"ServiceReconciler","level":"info","start reconcile":"istio-system/istio-ingressgateway-internal","ts":"2023-10-14T13:50:20Z"}
{"caller":"main.go:374","event":"serviceAnnounced","ips":["192.168.0.116"],"level":"info","msg":"service has IP, announcing","pool":"internal-pool","protocol":"layer2","ts":"2023-10-14T13:50:20Z"}
В логах metallb controller:
{"caller":"main.go:107","event":"serviceUpdated","level":"info","msg":"updated service object","ts":"2023-10-14T13:56:20Z"}
{"caller":"service_controller.go:103","controller":"ServiceReconciler","end reconcile":"istio-system/istio-ingressgateway-internal","level":"info","ts":"2023-10-14T13:56:20Z"}
{"caller":"service_controller.go:60","controller":"ServiceReconciler","level":"info","start reconcile":"istio-system/istio-ingressgateway-internal","ts":"2023-10-14T13:56:20Z"}
{"caller":"service_controller.go:103","controller":"ServiceReconciler","end reconcile":"istio-system/istio-ingressgateway-internal","level":"info","ts":"2023-10-14T13:56:20Z"}
{"caller":"service_controller.go:60","controller":"ServiceReconciler","level":"info","start reconcile":"istio-system/istio-ingressgateway-internal","ts":"2023-10-14T13:56:20Z"}
{"caller":"service.go:142","event":"ipAllocated","ip":["192.168.0.116"],"level":"info","msg":"IP address assigned by controller","ts":"2023-10-14T13:56:20Z"}
Вопрос:
подскажите пожалуйста в какую сторону копать?
К3с не фурыкен, поставь кубеадм
Брал k3s ради экономии ресурсов. Машина одна и важно было, чтобы worker и plane были на одной машине.
Кубеадм ставь, такая же потребность в ресурсах будет, зато гибче. К3с хорош другим
а он умеет размещать все на 1й ноде?
А k0s можно ещё сэкономить :)
м.б. проще запустить два истио гейтвея в режиме хост нетворк с указанием ип внешнего и внутреннего?
Для потомков: Вам не нужен metallb. Да cilium'овский lb не поддерживает /32 напрямую. Но можно написать туда всю подсеть, а на сервисы заставить запрашивать только тот ip, который реально есть у ноды, с помощью аннотаций. https://docs.cilium.io/en/stable/network/lb-ipam/#requesting-ips P.S. Я догадываюсь, что делаю глобально полный мусор. Но я всего лишь глупый разработчик, который вынужден этим заниматься в очень сжатые сроки. Заранее прошу прощения у Георгия и других коллег, чьи профессиональные чувства задеты. Спасибо большое за помощь! Отплачу, как устроюсь не на копеечную зп.
Обсуждают сегодня