Spring boot K8s上的Netflix OSS Eureka Spring boot 2.0应用程序返回名称而不是ip地址
我正在尝试在kubernetes上部署spring boot netflix OSS发现服务器。服务器部署得很好,我的应用程序在服务器上注册,我甚至在使用Eureka客户端查询时获得了一个实例urlSpring boot K8s上的Netflix OSS Eureka Spring boot 2.0应用程序返回名称而不是ip地址,spring-boot,kubernetes,netflix-eureka,Spring Boot,Kubernetes,Netflix Eureka,我正在尝试在kubernetes上部署spring boot netflix OSS发现服务器。服务器部署得很好,我的应用程序在服务器上注册,我甚至在使用Eureka客户端查询时获得了一个实例url @Autowired private EurekaClient discoveryClient; @GetMapping("/get_instance/") public String serviceUrl() { return getUrlFromEureka(); } privat
@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();
}
这将返回如下所示的urlhttp://demo-server-86c7cd568-xzzgt:8080/
这将返回pod的名称和它所在的端口,因此我尝试查询它以从服务器获得响应,但它超时了。
这就是我使用的方法
@GetMapping("/get-from-demo-server")
public String getFromDemoServer(){
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject(getUrlFromEureka(), String.class);
}
我将discovery server和spring boot应用程序部署到相同的k8环境中
下面是运行在k8中的eureka服务器的屏幕截图。
这一切都在我的本地minikube环境中运行。
谢谢你对我的帮助
这是我的客户机的依赖项
<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>
org.springframework.boot
弹簧靴起动器执行器
org.springframework.boot
SpringBootStarterWeb
org.springframework.cloud
spring cloud starter netflix eureka客户端
org.springframework.cloud
SpringCloudStarterConcur配置
org.springframework.cloud
spring cloud starter netflix ribbon
org.springframework.cloud
春季云启动程序
net.logstash.logback
logstash logback编码器
5
org.springframework.cloud
斯普林云侦探
org.springframework.boot
弹簧靴开发工具
运行时
org.projectlombok
龙目
真的
org.springframework.boot
弹簧起动试验
测试
以下是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>
org.springframework.cloud
spring cloud starter netflix eureka服务器
org.springframework.boot
弹簧靴起动器执行器
org.springframework.boot
弹簧起动试验
测试
默认情况下,问题在于客户端更喜欢主机名而不是ip。可以使用spring属性覆盖该属性。
eureka.instance.preference ip address=true
。
这非常适合我的用例