我正在使用HPA运行Kubernetes集群v1.16(目前是GKE上的最新版本),它根据自定义的度量(特别是从google云监视中获取的rabbitmq消息计数)来扩展部署。
问题
当消息计数暂时较高时,部署会很快扩展到最大的pod计数。
信息
在GKE上,HPA -水平吊舱自动分配器同步周期设置为15秒,据我所知,不能更改。
我的自定义指标每30秒更新一次。
我相信导致这种行为的原因是,当队列中每15秒有一个高的消息计数时,HPA会触发一个扩展,在几个循环之后达到最大的荚容量。
在kubernetes api v1.18中,您可以控制扩展稳定时间,但在v1.16中找不到类似的特性。
我的问题
我怎样才能使自置居所津贴的规模逐步扩大?
编辑1
我的一项部署的HPA示例:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: my-deployment-hpa
namespace: production
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 6
maxReplicas: 100
metrics:
- type: External
external:
metricName: "custom.googleapis.com|rabbit_mq|v1-compare|messages_count"
metricSelector:
matchLabels:
metric.labels.name: production
targetValue: 500发布于 2020-10-25 13:51:53
首先,一个很好的信息要知道,库伯奈特有一个内置的冷却时间,用于自动定标器。在行动中引用Kubernetes的话:
目前,只有在最后三分钟内没有重新标度事件时,才会发生缩放。每隔五分钟就会举行一次规模缩小的活动,次数甚至更少。记住这一点,这样您就不会奇怪为什么自动分词器拒绝执行渐增操作,即使度量清楚地表明它应该执行。
可能这条语句已经过时了,但是除非它改变了,否则这是硬编码的,并且每一个向上/向下的事件都不应该扩展到超过100%的现有豆荚。
尽管如此,你也没有没有其他选择,以下是一些你可以采取的方法:
cooldownPeriod对象,您可以将它放在它附带的ScaledObject自定义资源中。发布于 2020-11-19 07:00:38
我们已经构建了一个开源的自定义HPA,它是高度可配置的。
特别是对于您的情况,您可以设置HPA之间的冷却缩小事件。
为了使用自定义的HPA,您所需要做的就是:
; add nanit helm repo
$ helm repo add nanit https://nanit.github.io/helm-charts
; install the chart in the cluster
helm install nanit/custom-hpa \
--version 1.0.7 \
--set target.deployment=<deployment> \
--set target.namespace=<namespace> \
--set target.value=100 \
--set minReplicas=10 \
--set maxReplicas=50 \
--set behavior.scaleDownCooldown=120 \
--set prometheus.url=<prometheus-url> \
--set prometheus.port=<prometheus-port> \
--set prometheus.query=<prometheus-target-metric>您正在寻找的设置是behavior.scaleDownCooldown,它规定了HPA应该等待的时间(以秒为单位),然后再缩小。
目前,自定义HPA只支持prometheus作为度量提供程序,但您可以使用RabbitMQ出口商并将queue_messages_ready设置为目标度量。
https://stackoverflow.com/questions/64523941
复制相似问题