Как получить доступ друг к другу между k8s и микросервисами

Используя развертывание K8S, наш проект основан на springcloud. Я хочу знать, что в K8S, поскольку многоузловое развертывание передает имя хоста по умолчанию реестра, шлюз развертывается в A, а конфигурация развертывается в B. Раньше они не могли получить доступ друг к другу через эврика. Я перешел на eureka.instance.prefer-ip-address: true, но обнаружил, что они могут обращаться друг к другу только на одном и том же хосте. Он не использует cluster-ip K8S. Я хочу знать, как получить доступ друг к другу между службами в K8S.

Проверить, какие IP-адреса рекламируются в Eureka? Это должен быть публичный IP-адрес модуля. Тем не менее, Eureka не распространена в K8s, поскольку обычно вы используете систему служб и кластерный DNS для управления обнаружением служб :)

coderanger 03.01.2019 10:09

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

Calm 03.01.2019 10:25

Вы можете использовать имена сервисов для регистрации в eureka вместо IP-адресов. См. stackoverflow.com/questions/52066141/…. Пример этого есть в github.com/Activiti/activiti-cloud-examples/tree/7-201712-EA (хотя последняя версия этого проекта больше не использует netflix)

Ryan Dawson 03.01.2019 10:47

Вы имеете в виду, что имя, которое я зарегистрировал в своей эврике, является именем службы в k8s моей службы?

Calm 03.01.2019 11:06

Я прочитал другой вопрос и должен установить eureka.instance.hostname = k8s_servername: service_port?

Calm 03.01.2019 11:17

Да, я хочу зарегистрироваться с именем службы. Когда мы делали это на activiti, мы использовали только имя сервиса - github.com/Activiti/example-runtime-bundle/blob/7-201712-EA/‌ src /… использовалось в github.com/Activiti/activiti-cloud-examples/blob/7-201712-EA‌ /…

Ryan Dawson 03.01.2019 11:50

@Calm Я вспомнил, почему нам не нужно делать ничего особенного с портом - это потому, что мы использовали один и тот же порт для Java-приложения и для обслуживания. Поставили ответ, чтобы прояснить это.

Ryan Dawson 05.01.2019 12:09

Я это уже видел, большое спасибо за ответ.

Calm 06.01.2019 13:14
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
2
8
271
2

Ответы 2

В версии 7-201712-EA Activiti Cloud мы предоставили пример использования сервисов, запускающих библиотеки netflix в кубернетах - для ссылки доступны стабильные образы теги github и docker. Мы подошли к этому, создав Kubernetes Services для каждого компонента и доставив компонент в зарегистрируйтесь в eureka, используя имя службы k8s.

Чтобы убедиться, что компонент объявил правильное имя службы для eureka, мы используем установите eureka.instance.hostname в компоненте, который может быть установлен в yaml развертывания, указав переменную среды или с помощью переменной среды по умолчанию EUREKA_INSTANCE_HOSTNAME. Мы также упростили задачу, используя один и тот же порт для Java-приложения в модуле и для службы. Опять же, это можно настроить для соответствия, установив порт в спецификации Pod и передав переменную среды SERVER_PORT в приложение загрузки Spring.

Проверьте проект spring-cloud-kubernetes

Другие вопросы по теме

Недавно созданный стартовый проект загрузки Spring выдает исключение ClassNotFoundException при запуске
RabbitMQ + Spring Cloud Stream: использование групп
ApplicationContextInitializer дважды загружается контекстом Spring Cloud Bootstrap и Spring Boot
Действительно, невозможно провести модульное тестирование Spring Data JPA @Query?
Балансировщик нагрузки ленты с веб-клиентом отличается от остального шаблона (неправильно сбалансирован)
Есть ли способ предоставить Slueth имя приложения Spring, кроме указания этого в bootstrap.properties загрузочного приложения Spring?
Может вызывать функцию напрямую, но не может свернуть открытую конечную точку HTTP POST
Как избежать подключения к региону AWS при настроенном @SQSListener
Ошибка при создании bean-компонента с именем 'eurekaInstanceConfigBean': создание одиночного bean-компонента не разрешено, пока синглтоны этой фабрики разрушаются
Программная проблема при работе с клиентами Eureka - DiscoveryClient завершен