kubernetes中的两个负载平衡

时间:2019-04-06 13:28:44

标签: kubernetes

如下图所示,我在kubernetes中发现有两个 loadbalancer 。其中之一是节点之间的负载平衡,而其中之一是吊舱之间的负载平衡。

如果我同时使用它们,则我有两个 loadbalancer

想象一下某个用户想要连接到10.32.0.5,kubernetes将其请求发送到node1(10.0.0.1),然后将请求发送到(10.32.0.5)中的pod nod3(10.0.0.3),但这是没有用的,因为最好的途径是直接发送请求nod3(10.0.0.3)

为什么NodePort不足以实现负载平衡?

为什么NodePort不是LoadBalancer?(它在不同节点中的Pod之间具有LoadBalance,但为什么我们需要另一个负载均衡器?)

注意:我知道如果我使用NodePort且该节点出现故障,则会造成问题,但是我可以说可以为此使用keepalived。问题是

为什么我们需要在节点之间进行负载平衡? keepalived将所有请求吸引到一个IP。 为什么我们有两个负载均衡器?enter image description here

1 个答案:

答案 0 :(得分:1)

是否有两个负载均衡器取决于您的设置。

在您的示例中,您具有3个Nginx容器和1个Nginx服务来访问容器。该服务构建了一个抽象层,因此您不必知道有多少个Pod以及它们具有什么IP地址。您只需要与服务联系,它就会负载平衡到其中一个Pod(docs)。

现在取决于您的设置如何访问服务:

  • 您可能想通过NodePort发布服务。然后,您可以直接在节点上访问服务。
  • 您也可以通过LoadBalancer发布它。这为您提供了另一种抽象级别,并且调用者无需了解集群的实际设置。

有关详细信息,请参见docs