В этом случае вам необходим балансировщик нагрузки уровня 7 (L7), поскольку он работает на прикладном уровне и может проверять трафик для принятия решений о маршрутизации.Самое главное, они могут поддерживать протокол HTTP / 2 (который использует gRPC).
Nginx и HAProxy являются одним из вариантов балансировщиков нагрузки L7, но слишком тяжелым для микросервисной архитектуры.Вы можете подумать о Envoy и Linkerd , оба имеют поддержку gRPC.
Бобы могут быть реплицированы для обеспечения масштабирования и заключены в абстракции, известные как сервисы, которые предоставляютстабильный IP-адрес для доступа к базовым модулям.Начиная с Kubernetes 1.2, поведение по умолчанию при достижении IP-адреса службы заключается в том, что будет возвращен случайный внутренний модуль.Однако вы можете переконфигурировать ваши службы так, чтобы они были безголовыми, чтобы вместо этого IP-адрес службы возвращал весь список доступных IP-адресов, что позволит вам выполнить собственное обнаружение службы.
Вы можете легко начать с Linkerd с помощью этого официальный учебник .