0

我很困惑我的 spring-cloud-kubernetes 项目的正确设置是什么,以使用 kubernetes 本机发现并在 kuberbetes 服务前沿 mult 时使用 discoveryclient

我可以通过使用 discoveryClient 并仅按名称引用服务来使事情正常进行。到目前为止,一切都很好。但是,然后我需要选择一个服务实例(它看起来像一个实际的 pod ip+port),我显然不想这样做,因为我想依赖本机服务发现。使用 kubernetes 服务发现时我不应该使用 discoveryClient 吗?

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

在处理原生 kubernetes 发现时,我觉得我不了解发现客户端的语义。我也不明白为什么我需要在我的 restTemplate 中使用 {service-name}.{namespace}.svc.{cluster}.local:{service-port} 而不仅仅是 {service-name) 来引用服务(鉴于在使用客户端负载平衡时似乎很多)?

感谢您的澄清。

4

1 回答 1

0

我遇到了和你一样的问题。根据我的理解,正如@spencergibb 提到的,将负载均衡器更改为服务模式应该允许您通过 pod IP 地址连接到服务 URL,但它似乎不起作用或者我使用不正确。我在 Spring Cloud 的 GitHub https://github.com/spring-cloud/spring-cloud-kubernetes/issues/783上创建了一个问题。

于 2021-05-07T11:47:15.910 回答