Приложение загрузки Netflix OSS Eureka Spring 2.0 на K8s, возвращающее имя вместо IP-адреса - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь развернуть сервер обнаружения весенней загрузки netflix OSS в kubernetes. Сервер развертывается нормально, и мои приложения регистрируются на сервере, и я даже получаю URL-адрес экземпляра при запросе с помощью клиента Eureka.

@Autowired
private EurekaClient discoveryClient;

@GetMapping("/get_instance/")
public String serviceUrl() {

    return getUrlFromEureka();
}

private String getUrlFromEureka() {
    InstanceInfo instance = discoveryClient.getNextServerFromEureka("DEMO-SERVER", false);
    return instance.getHomePageUrl();
}

Возвращает URL-адрес, подобный этому http://demo-server-86c7cd568-xzzgt:8080/

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

@GetMapping("/get-from-demo-server")
public String getFromDemoServer(){
    RestTemplate restTemplate = new RestTemplate();
    return restTemplate.getForObject(getUrlFromEureka(), String.class);

}

Я развернул сервер обнаружения и приложения с весенней загрузкой в ​​той же среде k8.

Вот мой bootstrap.yml для сервера eureka.

Вот снимок экрана сервера eureka, работающего в k8. Скриншот

Это все работает в моей локальной среде мини-кубов. Спасибо за любую помощь, которую я получаю.

Вот зависимости для моего клиента

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>5.0</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Вот зависимости для сервера Eureka

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

1 Ответ

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

По умолчанию клиент предпочитает имя хоста, а не ip. Вы можете переопределить это с помощью свойства spring. eureka.instance.prefer-ip-address= true. Это отлично сработало для моего варианта использования.

...