Spring cloud 需要澄清使用本机kubernetes discovery的discovery客户端

Spring cloud 需要澄清使用本机kubernetes discovery的discovery客户端,spring-cloud,spring-cloud-kubernetes,Spring Cloud,Spring Cloud Kubernetes,我很困惑,我的spring cloud kubernetes项目使用kubernetes原生发现并在kuberbetes服务提供mult时使用discoveryclient的正确设置是什么 我可以通过使用discoveryClient并仅按名称引用服务来实现工作。到现在为止,一直都还不错。但是,我需要选择一个服务实例(看起来像一个实际的pod ip+端口),这显然是我不想做的,因为我想依靠本机服务发现。在使用kubernetes服务发现时,我是否应该使用discoveryClient 我还可以使

我很困惑,我的spring cloud kubernetes项目使用kubernetes原生发现并在kuberbetes服务提供mult时使用discoveryclient的正确设置是什么

我可以通过使用discoveryClient并仅按名称引用服务来实现工作。到现在为止,一直都还不错。但是,我需要选择一个服务实例(看起来像一个实际的pod ip+端口),这显然是我不想做的,因为我想依靠本机服务发现。在使用kubernetes服务发现时,我是否应该使用discoveryClient

我还可以使用http://{service name}.{namespace}.svc.{cluster}.local:{service port}使用restTemplate连接到rest服务。据我所知,restTemplate还将使用discoveryClient并选择一个serviceInstance(特别是在使用@LoadBalanced注释时)。但是,根据我上面描述的行为,这表明选择了一个服务实例,而不是实际的kubernetes服务

我觉得在处理原生kubernetes discovery时,我不理解discovery client的语义。我也不明白为什么我需要使用{service name}.{namespace}.svc.{cluster}.local:{service port}而不仅仅是{service name}来引用restTemplate中的服务(考虑到在使用客户端负载平衡时这似乎非常多)


感谢您的澄清。

我遇到了与您相同的问题。根据我的理解,将loadbalancer更改为服务模式(如@Spencergib所述),应该允许您通过pod IP地址连接服务URL,但它似乎不起作用,或者我使用不正确。我在Spring Cloud的GitHub上创建了一个问题

请参阅关于
spring.cloud.kubernetes.ribbon.mode={POD | SERVICE}
。如果不使用ribbon和spring cloud loadbalancer,请使用
spring.cloud.kubernetes.loadbalancer.mode=SERVICE
,这有助于澄清discoveryClient基本上是一个通用的发现客户端接口。在某些情况下,这意味着您需要所有服务实例(与客户端负载平衡中的情况一样)和其他情况(如使用kubernetes的自然发现),我们只对一个且唯一一个serviceInstance(discoveryClient.getServicesInstances().get(0))感兴趣这指向kubernetes服务。@Spencergib-Hoxton SR8和spring cloud starter kubernetes loadbalancer版本1.1.6.RELEASE不适用。我从调试开始,我根本看不到KubernetesLoadBalancer的自动配置,无论是正匹配还是负匹配。我希望在调试模式下的某个地方看到自动配置。我很清楚就我所知,这个项目的工厂看起来不错。。。。。