这文档在这里描述如何在 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 中具有相同的概率。