首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetflixOSSEurekaSpringBoot2.0应用程序在K8s上返回名称而不是ip地址

NetflixOSSEurekaSpringBoot2.0应用程序在K8s上返回名称而不是ip地址
EN

Stack Overflow用户
提问于 2018-04-28 23:58:16
回答 1查看 236关注 0票数 0

我正试图在kubernetes上部署一个spring引导netflix OSS发现服务器。服务器部署良好,我的应用程序向服务器注册,甚至在查询使用Eureka客户端时,我还会得到一个实例url。

代码语言:javascript
复制
@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();
}

这将返回类似于此http://demo-server-86c7cd568-xzzgt:8080/的url。

这将返回荚的名称及其上的端口,因此我尝试查询它以从服务器获得响应,但超时。这是我使用的方法

代码语言:javascript
复制
@GetMapping("/get-from-demo-server")
public String getFromDemoServer(){
    RestTemplate restTemplate = new RestTemplate();
    return restTemplate.getForObject(getUrlFromEureka(), String.class);

}

我将发现服务器和spring引导应用程序部署到相同的K8环境中。

这是我的尤里卡服务器的bootstrap.yml。

下面是运行在k8. 屏幕截图中的eureka服务器的屏幕截图。

这都是在我当地的迷你车环境中运行的。谢谢你的帮助。

下面是我的客户端的依赖项

代码语言:javascript
复制
<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服务器的依赖项

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-29 01:27:47

问题是,默认情况下,客户端更喜欢主机名,而不是ip。您可以使用spring属性覆盖它。eureka.instance.prefer-ip-address= true。这非常适合我的用例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50082120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档