春季启动Kubernetes服务发现 [英] Spring boot Kubernetes Service Discovery
问题描述
我在Spring Boot应用程序上遇到Kubernetes Service Discovery的问题.
I am running into issues with Kubernetes Service Discovery on Spring Boot applications.
无论我的Spring Boot应用程序是在Kubernetes集群内运行还是在Kubernetes集群外运行,我都应该能够发现服务.我们的本地开发不会在k8s集群上进行.
I should be able to discover the services whether my spring boot application is running within or out of Kubernetes cluster. Our local development won't be on k8s cluster.
我正在通过DNS使用服务发现.我尝试使用 spring-cloud-starter-kubernetes
I am using Service Discovery via DNS. I tried using spring-cloud-starter-kubernetes
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
根据文档,您应该能够自动连接DiscoveryClient,并且很方便
As per documentation you should be able to autowire DiscoveryClient and good to go
@Autowire
private DiscoveryClient discoveryClient;
DiscoveryClient是spring-cloud-commons的一部分. spring-cloud-starter-kuberenetes没有.
DiscoveryClient is part of spring-cloud-commons. spring-cloud-starter-kuberenetes doesn't have it.
有人使用相同或不同的库解决了类似的问题吗?请分享解决方案
Anyone solved similar problem using the same library or a different one? Please share the solution
谢谢!
推荐答案
我已经使用Spring Cloud Kubernetes依赖关系解决了这个问题
I have solved this issue using the Spring Cloud Kubernetes Dependencies
<spring.cloud.kubernetes>0.2.0.RELEASE</spring.cloud.kubernetes>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-ribbon</artifactId>
<version>${spring.cloud.kubernetes}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-config</artifactId>
<version>${spring.cloud.kubernetes}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-core</artifactId>
<version>${spring.cloud.kubernetes}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-discovery</artifactId>
<version>${spring.cloud.kubernetes}</version>
</dependency>
对我来说非常重要的是功能区依赖关系,因为它利用负载平衡的rest模板来替换服务名称,以替换您在kubernetes集群中找到的正确Pod IP.
What was very important for me was the ribbon dependency as it makes use of a load balanced rest template in order to substitute service names for the correct pod IP's that are found in your kubernetes cluster.
我创建了一个git repo作为回答更多问题的一部分,但是如果有人正在寻找一种方法来代替Eureka或Consul来实现Kubernetes服务发现,那应该绰绰有余.
I have created a git repo as part of answering a larger set of questions but it should be more than sufficient if someone is looking a way to implement Kubernetes service discovery in place of Eureka or Consul.
https://github.com/foundery-rmb/kubernetes-service-discovery
这篇关于春季启动Kubernetes服务发现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!