我使用MetalLB和Nginx-ingress控制器为我的应用程序提供互联网访问。我发现在大多数配置中,服务被设置为ClusterIP,因为入口将向那里发送流量。
我的问题是:这是否以双重负载平衡结束,也就是说,一个从MetalLB到我的入口,另一个从我的入口通过ClusterIP到Pod?
如果是这样的话,这是应该的,还是有更好的办法?
我使用MetalLB和Nginx-ingress控制器为我的应用程序提供互联网访问。我发现在大多数配置中,服务被设置为ClusterIP,因为入口将向那里发送流量。
我的问题是:这是否以双重负载平衡结束,也就是说,一个从MetalLB到我的入口,另一个从我的入口通过ClusterIP到Pod?
如果是这样的话,这是应该的,还是有更好的办法?
1条答案
按热度按时间v8wbuo2f1#
Metallb不接收和转发任何流量,所以
从MetalLB到我的入口
Metallb只是用一个外部ip配置kubernetes服务,并告诉你周围的基础设施在哪里可以找到它。你的设置仍然会有双重负载平衡:
流量到达集群并在nginx pod之间进行负载平衡,Nginx处理请求并将其转发给应用程序,这将导致第二次负载平衡。
但这是完全有意义的,因为如果您使用的是入口控制器,您不希望所有传入流量都经过同一个pod。
在metallb中使用ingress-controller是可行的,可以在更新应用程序时提高稳定性,但这不是必需的。
Metallb是一个在没有云提供商的情况下实现
LoadBalancing
类型的kubernetes服务的解决方案。所以如果你不需要第7层的负载均衡机制,你可以不使用
ClusterIP
类型的服务和入口控制器,而使用LoadBalancing
类型的服务,Metallb会从你的池中给予那个服务一个外部ip,并把它通告给它的对等体。在这种情况下,当流量到达群集时,它将只进行一次负载平衡。