【问题标题】:How to communicate between two services in k8s using spring cloud如何使用spring cloud在k8s中两个服务之间进行通信
【发布时间】:2020-05-17 01:06:16
【问题描述】:

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

我的代码是

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

【问题讨论】:

    标签: spring spring-boot kubernetes spring-cloud-kubernetes


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2020-05-14
      • 2022-01-13
      • 2019-10-12
      • 2020-05-28
      • 2021-07-17
      • 2011-02-20
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多