【问题标题】: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=250 和limit=500,您希望在达到其限制的一半时进行扩展:

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

【问题讨论】:

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

标签: kubernetes autoscaling kubernetes-pod


【解决方案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%
猜你喜欢
  • 2020-10-19
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2018-12-24
  • 2023-03-03
  • 2018-06-18
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多