hpa 中 Pod 之间的负载分布

问题描述

我注意到同一 hpa 中 pod 的 cpu 利用率从 31m 到 1483m 不等。这是预期的和正常的吗? 8个相同hpa的pod的cpu利用率见下图。

NAME                   cpu(cores)


myapp-svc-pod1            31m
myapp-svc-pod2            87m
myapp-svc-pod3            1061m
myapp-svc-pod4            35m
myapp-svc-pod5            523m
myapp-svc-pod6            1483m
myapp-svc-pod7            122m
myapp-svc-pod8            562m

解决方法

HPA 的主要目标是生成更多 Pod,以将一组 Pod 的平均负载保持在指定级别。

HPA 不负责负载平衡和平均连接分配。

对于平等的连接分配,负责 k8s 服务,它在 iptables 模式下默认工作并且 - according to k8s docs - 它随机选择 pod。

您不均匀的 CPU 负载分布很可能是由它处理的数据造成的。为了确保这不是 k8s 服务的问题,我建议您导出一些指标,例如连接数和处理一个请求所需的时间。收集完这些数据后,查看一下,看看是否出现了模式。

现在回答您的问题:

这是正常的吗?

这取决于您认为正常情况,但如果您期望更平等的 cpu 负载分布,那么您可能需要重新考虑您的设计。很难说你能做些什么来使它更平等,因为我不知道 myapp-svc-pods 做什么,但正如我已经提到的,最好看看指标。