Kubernetes 使用啥来计算 CPU 比率、请求或限制?

Posted

技术标签:

【中文标题】Kubernetes 使用啥来计算 CPU 比率、请求或限制?【英文标题】:What Kubernetes uses to calculate the CPU ratio, request or limit?Kubernetes 使用什么来计算 CPU 比率、请求或限制? 【发布时间】:2020-03-28 03:27:57 【问题描述】:

当您在 Kubernetes 中指定 Horizo​​ntal Pod Autoscaler 时,例如将 targetCPUUtilizationPercentage 设为 50,Kubernetes 使用什么来计算 CPU 比率、请求或容器的限制?

例如,对于request=250limit=500,您希望在达到其限制的一半时进行扩展:

如果它使用request,我会将目标至少设置为 100%,因为它可以提高到 200%。 如果它使用 limit,我会使用 target = 50%,因为 100% 表示已达到限制。

【问题讨论】:

我认为您将请求和限制与利用率混淆了。考虑 targetCPUUtilization 是 50 并且 cpu 请求是 100m 。现在,如果您的 pod 使用超过 50m cpu,那么它将被放大。请求和当前利用率是不同的东西。要使自动缩放器工作,您必须定义请求资源。 查看此链接kubernetes.io/docs/tasks/run-application/… @shubham_asati 我知道请求和限制之间的区别,我不知道targetCPUUtilization 是关于请求的CPU 而不是限制。但是您的评论回答了它,它与请求的值进行比较。 很高兴为您提供帮助。 【参考方案1】:

targetCPUUtilizationPercentage 为 50 表示如果所有 Pod 的平均 CPU 利用率上升到 50% 以上,那么 HPA 将扩大部署,如果所有 Pod 的平均 CPU 利用率低于 50%,那么 HPA 将缩小部署,如果数量的副本数超过 1

我刚查了代码,发现targetUtilization百分比计算使用资源请求。 参考下面的代码

currentUtilization = int32((metricsTotal * 100) / requestsTotal)

这是链接 https://github.com/kubernetes/kubernetes/blob/v1.9.0/pkg/controller/podautoscaler/metrics/utilization.go#L49

【讨论】:

好的,那么,对于问题的示例,您应该使用值 100% 作为目标,不是吗? 是的。如果所有 pod 都将具有相同的资源请求,则可以使用值 100。如果资源请求不同,建议您使用 80% 到 85%

以上是关于Kubernetes 使用啥来计算 CPU 比率、请求或限制?的主要内容,如果未能解决你的问题,请参考以下文章

CPU由哪些部件组成?表征CPU性能的特征是啥?CPU的运行速度由啥来决定?

GCP MQL:根据 3 个指标计算比率

prometheus作为监控,如何计算kubernetes中容器的cpu使用率?

Kubernetes pod cpu 使用率计算方法 HPA

IBM Mainframe Assembler 程序在添加 COBOL 调用后显示 CPU 时间和运行时间的极端跳跃。为啥?可以做些啥来加快速度?

Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?