使用 kubernetes 进行 google cloud http(s) 负载平衡

使用 kubernetes 进行 google cloud http(s) 负载平衡

文档在这里描述如何在 Google 云平台上使用 kubernetes 设置基于 http(s) 利用率的负载均衡器。

问题是它如何实现基于利用率的负载平衡。例如,使用以下配置:

  • 10 节点实例组
  • 3 个 pod 复制控制器部署到该实例组
  • 在实例组中的每个节点上公开端口 X 的 NodePort 服务。

假设 LB 将在 10 个节点中选择利用率最低的节点,并通过端口 X 路由到该节点,那么如何选择一个 Pod 来为请求提供服务?kubernetes 服务是否会根据其他平衡算法选择 Pod?

显然发生了一些有趣的事情,因为大多数实例都不会运行 pod(因此更有可能利用率最低)。

答案1

正如本文所述文章

GCE/AWS 负载均衡器不为其目标池提供权重。这对于旧的 LB kube-proxy 规则来说不是问题,该规则可以在所有端点之间正确平衡。

有了新功能,外部流量将不会在 pod 之间均匀分布,而是在节点级别均匀分布(因为 GCE/AWS 和其他外部 LB 实现无法指定每个节点的权重,它们会在所有目标节点之间均匀分布,而不管每个节点上的 pod 数量)。

然而,我们可以说,对于 NumServicePods « NumNodes 或 NumServicePods » NumNodes,即使没有权重,也会看到相当接近均匀的分布。

一旦外部负载均衡器提供权重,就可以将此功能添加到 LB 编程路径中。未来工作:1.4 版本不提供对权重的支持,但可能会在未来添加

内部 pod 到 pod 的流量应表现得类似于 ClusterIP 服务,并且在所有 pod 中具有相同的概率。

相关内容