我有spring boot应用程序,我使用spring-cloud-kubernetes依赖项。它部署在K8s中。我已经实现了服务发现,我有@DiscoveryClient,它为我提供了服务I,k8s namespace.My的问题是,我想对这个发现的服务之一进行rest调用(它有多个pods在运行)。该怎么做呢?必须使用Ribbon Client吗?
我的代码是
@RestController
public class HelloController {
@Autowired
private DiscoveryClient discoveryClient;
@RequestMapping("/services")
public List<String> services() {
log.info("/services - Request Received " + new Date());
List<String> services = this.discoveryClient.getServices();
log.info("Found services " + services.toString());
for (String service : services) {
// TODO call to this service
List<ServiceInstance> instances = discoveryClient.getInstances(service);
for (ServiceInstance instance : instances) {
log.info("Service ID >> " + service + " : Instance >> " + getStringVal(instance));
}
}
return services;
}在服务实例中,我可以找到要调用的主机和端口,但我希望调用服务,以便一些负载平衡机制调用实际的pod实例。
发布于 2020-01-31 20:29:25
您需要使用Spring Cloud Kubernetes Ribbon调用主机和端口,这些主机和端口将转到kubernetes服务,您将获得Kubernetes服务和Kube代理提供的负载均衡。
https://stackoverflow.com/questions/60002582
复制相似问题