Как общаться между двумя сервисами в k8s с помощью Spring Cloud - PullRequest
0 голосов
/ 31 января 2020

У меня есть приложение весенней загрузки, в котором я использую spring-cloud-kubernetes зависимости. Это развернуто в K8s. Я реализовал обнаружение служб, и у меня есть @DiscoveryClient, который дает мне идентификаторы пространства имен k8s. Моя проблема заключается в том, что я хочу сделать вызов покоя одной из найденных служб (в которой запущено несколько модулей). Как это сделать? Нужно ли использовать 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;
}

В экземплярах службы я могу найти хост и порт для вызова, но я хочу вызвать службу, чтобы обеспечить некоторую балансировку нагрузки Механизм обращается к фактическому экземпляру модуля.

1 Ответ

2 голосов
/ 31 января 2020

Вам необходимо использовать Spring Cloud Kubernetes Ribbon для вызова хоста и порта, которые будут go, для службы kubernetes, и вы получите балансировку нагрузки, предоставляемую службой Kubernetes и Kube Proxy.

...