我在 Spring Boot 应用程序上遇到了 Kubernetes 服务发现问题。
无论我的 Spring Boot 应用程序是在 Kubernetes 集群内部还是外部运行,我都应该能够发现这些服务。我们的本地开发不会在 k8s 集群上。
我正在通过 DNS 使用服务发现。我尝试使用 spring-cloud-starter-kubernetes
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
根据文档,您应该能够 Autowiring DiscoveryClient 并且一切顺利
@Autowire
private DiscoveryClient discoveryClient;
DiscoveryClient 是 spring-cloud-commons 的一部分。 spring-cloud-starter-kuberenetes 没有。
有人使用相同的库或不同的库解决了类似的问题吗?请分享解决方案
谢谢!
最佳答案
我已经使用 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 作为回答更多问题的一部分,但如果有人正在寻找一种方法来实现 Kubernetes 服务发现来代替 Eureka 或 Consul,这应该就足够了。
https://github.com/foundery-rmb/kubernetes-service-discovery
关于Spring Boot Kubernetes 服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178056/