首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解averageUtilization在Kubernetes自动标度中的意义

理解averageUtilization在Kubernetes自动标度中的意义
EN

Stack Overflow用户
提问于 2021-10-26 10:26:07
回答 1查看 2.6K关注 0票数 1

文档说:

对于每荚资源指标(如CPU),控制器从HorizontalPodAutoscaler所针对的每个Pod的资源度量API中获取这些指标。然后,如果设置了目标利用率值,则控制器计算利用率值作为每个Pod中容器上等效资源请求的百分比。如果设置了目标原始值,则直接使用原始度量值。然后,控制器获取所有目标Pods的利用率或原始值的平均值(取决于指定的目标类型),并生成用于缩放所需副本数量的比率。

假设我有一只带:

代码语言:javascript
复制
        resources:
          limits:
            cpu: "0.3"
            memory: 500M
          requests:
            cpu: "0.01"
            memory: 40M

现在我有了一个自动标度的定义为:

代码语言:javascript
复制
type: Resource
resource:
  name: cpu
  target:
    type: Utilization
    averageUtilization: 60

根据医生的说法:

使用此指标,HPA控制器将保持在标度目标中豆荚的平均利用率为60%。利用率是当前资源利用率与荚的请求的资源之间的比率。

所以,我对此不太了解。如果request是运行该应用程序所需的最低资源,那么如何根据这个值进行扩展呢? 0.01的60%是没有意义的,而且服务将不断扩展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-26 10:47:13

你的误解可能是,request的价值不一定是应用程序运行所需的最小值。

这是您(开发人员、管理人员、DevOps)从Kubernetes集群请求运行应用程序中的一个pod所需要的,它帮助调度程序为您的工作负载选择合适的节点(例如,具有足够可用资源的in )。所以,不要选择这个值太小或太高。

除此之外,自动标度的工作方式与您所描述的一样。在这种情况下,集群计算您所请求的CPU的使用量,当超过60%的CPU正在使用时,集群就会扩展。请记住,库伯内特斯并不是看每一个豆荚,而是看那一组中所有豆荚的平均数。

例如,如果两个荚运行,一个荚可以运行100%的请求,另一个以(几乎) 0%的速度运行。平均将是50%左右,所以没有自动标度发生在水平Pod自动分频器的情况下。

在生产中,我个人尝试猜测正确的值,然后查看度量,并根据实际工作负载调整值。Prometheus是您的朋友,至少是度量服务器:

https://github.com/prometheus-operator/kube-prometheus https://github.com/kubernetes-sigs/metrics-server

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69721405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档