Может ли узел в кластере, управляемом Kubernetes, обнаружить свои исправные узлы?

#.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 #, которая поможет мне сделать это. Я обновлю свой вопрос, чтобы отразить это.