使用 MetalLB 和 ClusterIP 服务时是否双重负载均衡?

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

我使用 MetalLB 和 Nginx-ingress 控制器为我的应用程序提供互联网访问。 我发现在大多数配置中,服务设置为 ClusterIP,因为入口将向那里发送流量。

我的问题是:这是否会导致双重负载平衡,即一个从 MetalLB 到我的入口,另一个从我的入口通过 ClusterIP 到 Pod?

如果是这样,这是应该的样子,还是有更好的方法?

kubernetes kubernetes-ingress metallb bare-metal-server
1个回答
4
投票

Metallb 不接收和转发任何流量,所以

从 MetalLB 到我的入口

确实没有意义。 Metallb 只是使用外部 IP 配置 kubernetes 服务,并告诉您周围的基础设施在哪里可以找到它。仍然按照您的设置,将会有双重负载平衡:

流量到达您的集群并在您的 nginx pod 之间实现负载平衡。 Nginx 处理请求并将其转发给应用程序,这将导致第二次负载均衡。

但这完全有道理,因为如果您使用入口控制器,您不希望所有传入流量都经过同一个 pod。

可以使用带有 Metallb 的入口控制器,并且可以在对应用程序执行更新时提高稳定性,但这不是必需的。

Metallb 是一种在没有云提供商为您执行此操作时实现

LoadBalancer
类型的 kubernetes 服务的解决方案。

因此,如果您不需要第 7 层负载平衡机制,您可以不使用带有入口控制器的

ClusterIP
类型的服务,而只需使用
LoadBalancer
类型的服务。 Metallb 将从您的池中为该服务提供一个外部 IP,并将其公布给其对等方。

在这种情况下,当流量到达集群时,只会进行一次负载均衡。

© www.soinside.com 2019 - 2024. All rights reserved.