У меня есть служба, настроенная как LoadBalancer, работающая в кластере с пятью узлами, работающем 1.9.11. LoadBalancer находится перед тремя модулями, на которых запущено веб-приложение ASP.NET Core (которое, в свою очередь, обращается к очереди сообщений NATS, из которой слушатель получает сообщения и сохраняет их в базе данных SQL Azure). Для всех модулей установлены запросы ресурсов и ограничения, и все находится в выделенном пространстве имен.
Я использую сценарий PowerShell, чтобы веб-приложение генерировало сообщение для очереди NATS каждые 50 миллисекунд. Из нескольких способов видно, что Loadbalancer отправляет трафик только на один модуль: во-первых, графики ЦП на панели мониторинга k8s не показывают активности для двух модулей, а во-вторых, я отслеживаю среду. MachineName из веб-приложения проходит прямо к полю в базе данных, и я вижу, что это только одно имя MachineName. Если я удаляю модуль, который получает трафик, новый модуль немедленно помечается получающим трафик, но это все равно только один модуль из трех.
Насколько я понимаю, это не то, как LoadBalancer предназначен для работы, то есть LoadBalancer должен отправлять трафик на все модули. Это правильно, и если да, то есть ли какие-то подсказки относительно того, что я делаю неправильно? Мой сервисный файл выглядит следующим образом:
apiVersion: v1
kind: Service
metadata:
name: megastore-web-service
spec:
selector:
app: megastore-web
ports:
- port: 80
type: LoadBalancer