Kubernetes 内部重定向

问题描述 投票:0回答:1

我正在尝试实现一个基于无头服务的自定义负载均衡器。我发现(目前)有效的是以下设置:

  1. 工人
  2. 工人服务
  3. 负载均衡器
  4. 负载均衡器服务
  5. 无头服务

客户端调用负载均衡器,负载均衡器调用无头服务来检查可用的 Pod。负载均衡器选择一个 Pod 并调用它。

这很好,但这意味着 LB 也将成为代理,我想避免这种情况。我尝试过 redirect 但随后 ip:port 地址返回给客户端 - 并且 pod 显然无法从集群外部访问(我也尝试过简单的入口)。

你们有没有任何提示、技巧和窍门如何做这样的事情?

谢谢! 马特乌斯

kubernetes redirect load-balancing kubernetes-ingress
1个回答
0
投票

在使用 Kubernetes 一段时间后,我设法利用无头服务和自定义代理,但我自己没有完全实现:)

对于我们的自定义负载平衡/代理逻辑,我们决定并检查了 API 网关项目(Spring),它恰好为我们做代理和转发!我们唯一配置的是动态路由。示例:

@Bean
    public RouteLocator workerRoutingService(RouteLocatorBuilder builder) {
        var routes = builder.routes();

        routes.route(r -> r
                .path("/api/worker/{resourceId}")
                .filters(f -> f.changeRequestUri(exchange -> {
                    String resourceId = ServerWebExchangeUtils.getUriTemplateVariables(exchange).get("resourceId");
                    return workerService.getWorkerEndpointByResource(resourceId);
                }))
                .uri("http://fallback/")
        );


        return routes.build();
    }
© www.soinside.com 2019 - 2024. All rights reserved.