文档说:
对于每荚资源指标(如CPU),控制器从HorizontalPodAutoscaler所针对的每个Pod的资源度量API中获取这些指标。然后,如果设置了目标利用率值,则控制器计算利用率值作为每个Pod中容器上等效资源请求的百分比。如果设置了目标原始值,则直接使用原始度量值。然后,控制器获取所有目标Pods的利用率或原始值的平均值(取决于指定的目标类型),并生成用于缩放所需副本数量的比率。
假设我有一只带:
resources:
limits:
cpu: "0.3"
memory: 500M
requests:
cpu: "0.01"
memory: 40M现在我有了一个自动标度的定义为:
type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60根据医生的说法:
使用此指标,HPA控制器将保持在标度目标中豆荚的平均利用率为60%。利用率是当前资源利用率与荚的请求的资源之间的比率。
所以,我对此不太了解。如果request是运行该应用程序所需的最低资源,那么如何根据这个值进行扩展呢? 0.01的60%是没有意义的,而且服务将不断扩展。
发布于 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
https://stackoverflow.com/questions/69721405
复制相似问题