Назад | Перейти на главную страницу

нежелательные узлы из разных пулов в конфигурации балансировщика нагрузки

В нашей облачной конфигурации Google (с поддержкой Kubernetes) для нескольких проектов, рабочих нагрузок и сервисов (балансировщиков нагрузки) мы специально настраиваем балансировщики нагрузки, но конфигурация, похоже, меняется.

Мы специально добавляем узлы в наши балансировщики нагрузки, через некоторое время все наши узлы (из разных пулов) в конечном итоге присоединяются к все наши балансировщики нагрузки. После того, как они были волшебным образом добавлены обратно в балансировщик нагрузки, мы удаляем их (снова), а затем, через некоторое время, все они возвращаются.

Я понимаю, что во многих случаях отсутствует информация о реализации, но я надеялся, что есть какие-то хорошо известные шаблоны, которым, по мнению некоторых, мы могли не следовать. Я постараюсь опубликовать детали конфигурации.

Когда вы используете вручную созданные балансировщики нагрузки в Google Cloud с Kubernetes Services и type: NodePort, это почти то же самое, что вы используете type: Load Balancer для ваших сервисов, но во втором случае LB создается и управляется Kubernetes, и вам не нужно об этом заботиться.

Так как Service с типом NodePort является адресом привязки на всех ваших узлах, они должны быть добавлены в LB как бэкэнд. Проверить документация, путь «Прокси-режим: iptables». Возможно, в вашей ситуации Kubernetes пытался управлять им и добавил все ваши узлы в LoadBalancers, потому что они обрабатывают запросы к его сервисам. На самом деле я не встречал установок, где LoadBalancers создавались вручную и указывали на Kubernetes.

В Google Cloud я настоятельно рекомендую вам использовать Ingress (на основе Google Load Balancer или Nginx) или Сервисов с type: Load Balancer, если вам не нужна специальная маршрутизация.

Вы можете реализовать это так (для Nginx Ingress):

  • Развернуть Nginx Ingress Controller с сервисом type: LoadBalancer. Он создаст для вас LoadBalancer в качестве точки входа для всего вашего трафика.
  • Разверните ваше приложение Service с участием type: ClusterIP.
  • Создать Ingress объект для вашего приложения Service и напишите туда все свои правила маршрутизации.