Как модули в наборе реплик kubernetes могут обнаруживать и общаться друг с другом без API kubernetes?
У меня есть приложение, которое использует плот для выбора лидера из нескольких экземпляров. Эти экземпляры используют протокол сплетен, поэтому ему просто нужно знать другой экземпляр, чтобы обнаружить остальные.
Я планирую запускать каждый экземпляр как модуль kubernetes, с репликацией, управляемой контроллером репликации. Я также поставлю сервис перед этими узлами, чтобы другие приложения в кластере могли общаться с ним.
Моя проблема: Как я могу получить модули в наборе реплик для обнаружения друг друга без API kubernetes? Это возможно через DNS, или kubernetes предоставляет некоторые переменные среды?
1 ответ
Решение состоит в том, чтобы использовать безголовый сервис. Например, мы можем развернуть автономную службу под названием myservice-discovery
, Поскольку служба работает без заголовка, она не выполняет балансировку нагрузки и не получает IP-адрес кластера. Чтобы получить IP-адреса модулей, вы затем запрашиваете DNS-сервер для myservice-discovery.mycluster
чтобы получить список записей.
Вы также можете настроить вторую обычную (не головную) службу, если модули также должны быть доступны для других служб и модулей.