Используя развертывание K8S, наш проект основан на springcloud. Я хочу знать, что в K8S, поскольку многоузловое развертывание передает имя хоста по умолчанию реестра, шлюз развертывается в A, а конфигурация развертывается в B. Раньше они не могли получить доступ друг к другу через эврика. Я перешел на eureka.instance.prefer-ip-address: true, но обнаружил, что они могут обращаться друг к другу только на одном и том же хосте. Он не использует cluster-ip K8S. Я хочу знать, как получить доступ друг к другу между службами в K8S.
Спасибо, я пытаюсь ограничить регистрацию службы IP-адресом eureka, чтобы другие службы в кластере могли получить к нему доступ.
Вы можете использовать имена сервисов для регистрации в eureka вместо IP-адресов. См. stackoverflow.com/questions/52066141/…. Пример этого есть в github.com/Activiti/activiti-cloud-examples/tree/7-201712-EA (хотя последняя версия этого проекта больше не использует netflix)
Вы имеете в виду, что имя, которое я зарегистрировал в своей эврике, является именем службы в k8s моей службы?
Я прочитал другой вопрос и должен установить eureka.instance.hostname = k8s_servername: service_port?
Да, я хочу зарегистрироваться с именем службы. Когда мы делали это на activiti, мы использовали только имя сервиса - github.com/Activiti/example-runtime-bundle/blob/7-201712-EA/ src /… использовалось в github.com/Activiti/activiti-cloud-examples/blob/7-201712-EA /…
@Calm Я вспомнил, почему нам не нужно делать ничего особенного с портом - это потому, что мы использовали один и тот же порт для Java-приложения и для обслуживания. Поставили ответ, чтобы прояснить это.
Я это уже видел, большое спасибо за ответ.

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