Межкластерное сервисное обнаружение на станках Bare Metal Kubernetes - PullRequest
0 голосов
/ 15 апреля 2020

Я изучаю варианты обнаружения услуг в моем новом проекте.

Итак, вот как это: У меня есть несколько чистых металлических машин Kubernetes (Linux) , с без облачных провайдеров . У меня есть несколько кластеров Kubernetes, для этого примера давайте назовем их Cluster-1 и Cluster-2 .

Теперь предположим, что у меня есть 10 микросервисов (весенняя загрузка), я хотел бы развернуть их в обоих кластерах. Итак, все 10 микросервисов в обоих кластерах.

Мне нужен механизм обнаружения служб:

Если микросервис мс-1 с Кластеру-1 необходимо вызвать другой микросервис мс-2 , тогда я хочу, чтобы предпочтение связи было в том же кластере, если мс-2 работает и работает в Кластере -1 . Однако, если ms-2 не включен / не запущен в Cluster-1 , то вызов с ms-1 (Cluster-1) должен go ms-2 (Cluster-2).

Очевидно, что это должно поддерживаться для работы в многокластерной географической сети.

I не может достичь этого с помощью механизмов обнаружения служб, которые предлагает нативный Kubernetes.

Я пытался использовать Istio, но обнаружил, что он использует только нативный механизм обнаружения служб Kubernetes. Итак, Istio отсутствует на картинке.

Я решил попробовать Consul и развернуть мои микросервисы с сервисами Kubernetes типа NodePort , надеясь, что Консул сможет разрешить host и nodePort целевой службы как внутри, так и внутри кластера. Скрещенные пальцы !!

Теперь у меня есть в основном 2 вопроса:

  1. Нужно ли использовать Spring-cloud-консул в каждом микросервисе для того, чтобы поговорить с Консулом и получить хост: порт целевой службы?

    Я вижу, что Linkerd предоставляет некоторую возможность, с помощью которой микросервисы могут общаться с Linkerd, а Linkerd общается с Consul и разрешает службу от имени spring-cloud. -консул клиента.

    Я даже видел этот пост -> https://discourse.linkerd.io/t/linkerd-with-springboot/638

    Я хочу узнать больше подробностей о том, как это можно сделать.

  2. Нужен ли вообще Консул? Linkerd предлагает решение для моего требования? Если да, то, пожалуйста, просветите меня, как?

Спасибо за чтение длинного вопроса. Я надеюсь, что получу быстрое и позитивное руководство для продолжения моего проекта.

1 Ответ

0 голосов
/ 29 апреля 2020

Похоже, вы пытаетесь использовать сервис me sh, чтобы решить эту проблему. Если это так, Консул может предоставить эту услугу непосредственно мне sh. Вам не нужно никакого дополнительного программного обеспечения.

Вам потребуется развернуть Консул в каждом кластере Kubernetes и объединить две среды, используя Федерация WAN . После объединения кластеров можно развернуть Me sh Шлюзы (см. учебное пособие ), чтобы обеспечить межсервисную связь между кластерами. Затем настройте политику отработки отказа в конфигурации L7 service-resolver, чтобы traffi c перенаправлялся в альтернативный кластер, когда локальные экземпляры недоступны.

Надеюсь, это поможет. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

...