Сервис Kubernetes с port-forward не балансирует нагрузку - PullRequest
0 голосов
/ 08 марта 2020

я бездельничаю с K8s для моей магистерской диссертации на данный момент. Для этого я раскручиваю кластер K8s с помощью KinD. Я также разработал небольшой flask REST API, который будет повторять ENV var. Сейчас я запускаю 3 Сервиса, которые содержат несколько пакетов приложения flask и они звонят друг другу. Для лучшего понимания у меня есть привет sv c, служба мира и world2 sv c. Все идет нормально. Я успешно развернул их и теперь хочу перенести порт hello sv c.

kubectl --namespace test port-forward svc/hello 30000

Это работает нормально, но как только я запускаю мое приложение JMeter для тестирования функций балансировки нагрузки, происходит что-то странное. Как вы можете видеть на информационной панели grafana, другие сервисы успешно распределяют нагрузку по трафику c, но sv c, который перенаправляется через порт, отправляет все свои трафики c в один приветственный модуль.

Это мое развертывание: deploy.yml

Я что-то упустил? Или я развернул свое приложение неправильно?

Заранее спасибо!

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Для всех тех, кто заинтересован, я нашел обходной путь, который также ближе к производству.

Прежде всего я установил MetalLB https://mauilion.dev/posts/kind-metallb /

С этим LoadBalancer я объявил диапазон IP, который совпадает с одним из моих узлов. Также служба, которую я выставляю, получила type: LoadBalancer с этим графаном, теперь показывает равное распределение запросов.

0 голосов
/ 08 марта 2020

Port-forward позволяет использовать услуги только для удобства. За кулисами подключается к одному модулю напрямую. Соединение будет разорвано, если этот модуль d ie. Балансировка нагрузки в переадресации портов отсутствует. Выбран один модуль, выбранный службой, и все трафики c пересылаются туда в течение всего времени существования команды переадресации портов. Я бы предложил использовать службу типа NodePort , если вам нужно проверить балансировку нагрузки через JMeter вне кластера kubernetes.

...