Spring boot Kubernetes服务发现

时间:2017-11-08 11:04:17

标签: spring spring-boot kubernetes microservices

我在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没有它。

任何人使用相同的库或不同的库解决了类似的问题?请分享解决方案

谢谢!

1 个答案:

答案 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