有人可以解释如何在具有多个容器的pod中计算cpu使用情况,以便与Horizontal Pod Autoscaler一起使用? 它是平均值,这是如何计算的?
例如: 如果我们有2个容器:
如果我们单独计算并取平均值:(0%+ 200%)/ 2 = 100%使用?
如果我们取总数并取平均值:2 / 1.5 = 133%的使用量?
或者我的逻辑关闭了吗?
答案 0 :(得分:3)
从kubernetes 1.9开始,HPA计算pod cpu利用率,作为pod中所有容器的总cpu使用量除以总请求数。因此,在您的示例中,计算的使用率将为133%。我不认为在任何地方都在文档中指定,但相关代码在这里:https://github.com/kubernetes/kubernetes/blob/v1.9.0/pkg/controller/podautoscaler/metrics/utilization.go#L49
但是,我会认为这是一个实现细节。因此,它可以在将来的版本中轻松更改。
答案 1 :(得分:2)
在Horizontal Pod Autoscaling设计文档中,它清楚地写明了它采用了pod的算术平均值'要与目标值进行比较的CPU利用率。这是文字:
自动缩放器实现为控制循环。它定期 查询由Scale子资源的Status.PodSelector描述的pod,和 收集他们的CPU利用率。然后,它比较算术平均值 的豆荚'与目标中定义的目标的CPU利用率 Spec.CPUUtilization,并根据需要调整Scale的副本 匹配目标(保留条件:MinReplicas< = Replicas< = MaxReplicas)。
目标豆荚数由以下公式计算:
TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)