#.net #kubernetes #microservices #load-balancing #peer
#.net #kubernetes #микросервисы #балансировка нагрузки #узел
Вопрос:
(Я новичок в kubernetes, и моя компания использует kubernetes для управления нашей микросервисной архитектурой. Мы используем ASP.NET и C #)
У меня есть кластер идентичных экземпляров службы, которые имеют некоторое состояние и выполняют длительную работу. Каждый экземпляр всегда доступен для получения запроса в кластер, но я бы хотел, чтобы работа по запросу обрабатывалась любым узлом в кластере, который является наименее загруженным. (т. Е. Я хочу, чтобы принимающий узел перенаправил запрос на самый свободный узел.)
Мои службы предоставляют API для запроса их текущей загрузки. «Загрузка» в моем сценарии не измеряется простым использованием процессора / памяти, поэтому типичный балансировщик нагрузки здесь не поможет. Однако, поскольку экземпляры службы могут случайно стать неработоспособными, и я могу увеличивать или уменьшать масштаб кластера, набор «в настоящее время исправных узлов» является динамическим и не может быть введен через config во время развертывания.
Предоставляет ли Kubernetes API, который моя служба могла бы запросить, чтобы вернуть набор исправных / доступных экземпляров?Если это так, я мог бы легко обнаружить свои исправные узлы, а затем проверить их загрузку, чтобы решить, кому пересылать.
Редактировать: меня особенно интересует, существует ли существующая библиотека C #, которую я мог бы использовать для этого.
Комментарии:
1. Работает ли в вашем кластере сервер метрик ? Если это так,
kubectl top nodes
(и по определению базовый вызов API, который он выполняет) может привести вас туда, куда вы хотите
Ответ №1:
Зачем проверять работоспособность узлов, когда службы не работают? Но поскольку вы ищете работоспособность узла, Kubectl предоставляет детектор проблем с узлами, который должен помочь с вашей проблемой. Дополнительную информацию об этом можно найти здесь :-
https://kubernetes.io/docs/tasks/debug-application-cluster/monitor-node-health/
Комментарии:
1. Я только пытаюсь обнаружить исправные узлы
2. @PeterBeissinger Помогла ли приведенная выше ссылка? Предлагается создать набор демонов, который будет выполнять проверку работоспособности на основе предоставленной конфигурации и записывать ее в файл, общий для некоторого тома. Тогда нам станет ясно, как мы интерпретируем журнал и создаем из него метрики.
3. Ссылка, вероятно, помогла бы, если бы я захотел сделать это с помощью необработанного kubectl. Я действительно надеялся, что есть библиотека C #, которая поможет мне сделать это. Я обновлю свой вопрос, чтобы отразить это.