如果我有公共负载平衡器,直接的服务到服务通信如何实现负载平衡?

时间:2018-10-10 17:15:48

标签: kubernetes kubernetes-ingress

                                  |--> service1:8081 --> pod1-a, pod1-b, pod1-c
   UI -> load balancer -> ingress (mydomain.com)
                                  |--> service2:8082 --> pod2-a, pod2-b, pod2-c

因此从service1开始,我可以直接用service2调用http://service2:8082,但是由于这不是通过UI->负载均衡器完成的,如何实现负载均衡?我是否应该不直接调用service2,而是通过mydomain.com/service2调用它,所以它必须经过流程?

2 个答案:

答案 0 :(得分:1)

如果您绕过入口,即直接从http://service2:8082调用service1,Kubernetes将基于默认的Proxy-mode: iptables选择一个随机后端。

如果您使用的是ipvs之类的东西,则可以进行更多调整。例如,设置轮询。

如果您只想循环使用,也可以使用旧的Proxy-mode: userspace

所有这些选项都可以使用kube-proxy上的-proxy-mode ProxyMode标志进行配置。

答案 1 :(得分:1)

从另一个服务调用服务将在该节点上命中iptable路由,并选择服务端点以将流量路由至。这样会更快。

如果通过mydomain.com/service2调用它,则该流将通过其他L7入口,并且速度会相对较慢。