我在Spring Boot应用程序上遇到了Kubernetes Service Discovery的问题。
我应该能够发现我的Spring启动应用程序是在Kubernetes集群内部还是外部运行的服务。我们的本地开发不会在k8s集群上。
我正在通过DNS使用服务发现。我尝试使用spring-cloud-starter-kubernetes
@Autowire
private DiscoveryClient discoveryClient;
根据文档,您应该能够自动装配DiscoveryClient,并且很高兴
user_id
DiscoveryClient是spring-cloud-commons的一部分。 spring-cloud-starter-kuberenetes没有它。
任何人使用相同的库或不同的库解决了类似的问题?请分享解决方案
谢谢!
答案 0 :(得分:0)
我使用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>
对我来说非常重要的是功能区依赖,因为它使用负载平衡的休息模板,以便将服务名称替换为kubernetes集群中正确的pod IP。
我已经创建了一个git repo,作为回答更多问题的一部分,但如果有人正在寻找一种方法来代替Eureka或Consul实现Kubernetes服务发现,那么它应该已经足够了。
https://github.com/foundery-rmb/kubernetes-service-discovery