我很困惑,我的spring-cloud-kubernetes项目在kuberbetes服务遇到mult时,使用kubernetes原生发现和discoveryclient的正确设置是什么?
我可以通过使用discoveryClient并仅按名称引用服务来使事情正常工作。到目前一切尚好。但是,我需要挑选一个服务实例(看起来像一个实际的pod ip+port),这显然不是我想要做的,因为我想要依赖于本地服务发现。在使用kubernetes服务发现时,我应该不使用discoveryClient吗?
我还可以使用http://{service-name}.{namespace}.svc.{cluster}.local:{service-port}通过restTemplate连接到rest服务。据我所知,restTemplate还将使用discoveryClient并选择一个serviceInstance (特别是在使用@LoadBalanced时)。但是,基于我上面描述的行为,这表明选择了一个服务实例,而不是命中实际的kubernetes服务。
我觉得在处理原生kubernetes发现时,我没有理解发现客户端的语义。我也不明白为什么我需要在我的服务中使用{service-name}.{namespace}.svc.{cluster}.local:{service-port}而不是{ restTemplate -name)来引用服务(假设在使用客户端负载平衡时这似乎已经很多了)?
谢谢你的澄清。
发布于 2021-05-07 19:47:16
我也遇到过和你一样的问题。根据我的理解,将负载均衡器更改为服务模式,正如@spencergibb所提到的,应该允许您通过pod IP地址与服务URL连接,但它似乎不起作用,或者我没有正确使用它。我在Spring Cloud的GitHub https://github.com/spring-cloud/spring-cloud-kubernetes/issues/783上创建了一个问题。
https://stackoverflow.com/questions/63696374
复制相似问题