0

我有使用spring-cloud-kubernetes依赖项的 spring boot 应用程序。这部署在 K8s 中。我已经实现了服务发现,并且@DiscoveryClient它为我提供了服务 ids k8s 命名空间。我的问题是我想对其中一个找到的服务(运行多个 pod)进行休息调用。这个怎么做 ?我必须使用功能区客户端吗?

我的代码是

@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 实例。

4

1 回答 1

2

您需要使用 Spring Cloud Kubernetes Ribbon 调用将访问 kubernetes 服务的主机和端口,并获得 Kubernetes 服务和 Kube Proxy 提供的负载均衡。

于 2020-01-31T12:29:24.767 回答