首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes HPA -扩大冷却时间

Kubernetes HPA -扩大冷却时间
EN

Stack Overflow用户
提问于 2020-10-25 12:57:48
回答 2查看 3.9K关注 0票数 1

我正在使用HPA运行Kubernetes集群v1.16(目前是GKE上的最新版本),它根据自定义的度量(特别是从google云监视中获取的rabbitmq消息计数)来扩展部署。

问题

当消息计数暂时较高时,部署会很快扩展到最大的pod计数。

信息

在GKE上,HPA -水平吊舱自动分配器同步周期设置为15秒,据我所知,不能更改。

我的自定义指标每30秒更新一次。

我相信导致这种行为的原因是,当队列中每15秒有一个高的消息计数时,HPA会触发一个扩展,在几个循环之后达到最大的荚容量。

在kubernetes api v1.18中,您可以控制扩展稳定时间,但在v1.16中找不到类似的特性。

我的问题

我怎样才能使自置居所津贴的规模逐步扩大?

编辑1

我的一项部署的HPA示例:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-25 13:51:53

首先,一个很好的信息要知道,库伯奈特有一个内置的冷却时间,用于自动定标器。在行动中引用Kubernetes的话:

目前,只有在最后三分钟内没有重新标度事件时,才会发生缩放。每隔五分钟就会举行一次规模缩小的活动,次数甚至更少。记住这一点,这样您就不会奇怪为什么自动分词器拒绝执行渐增操作,即使度量清楚地表明它应该执行。

可能这条语句已经过时了,但是除非它改变了,否则这是硬编码的,并且每一个向上/向下的事件都不应该扩展到超过100%的现有豆荚。

尽管如此,你也没有没有其他选择,以下是一些你可以采取的方法:

  1. 通过一个时间平均函数传递您的自定义度量--我上次这样做是使用prometheus,而promql可能与您使用的不同,但是如果您在问题中共享更多的配置,我相信我可以帮助找到语法。
  2. 您可以尝试使用 凯达 -它有一个cooldownPeriod对象,您可以将它放在它附带的ScaledObject自定义资源中。
票数 3
EN

Stack Overflow用户

发布于 2020-11-19 07:00:38

我们已经构建了一个开源的自定义HPA,它是高度可配置的。

特别是对于您的情况,您可以设置HPA之间的冷却缩小事件。

为了使用自定义的HPA,您所需要做的就是:

代码语言:javascript
复制
; 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设置为目标度量。

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

https://stackoverflow.com/questions/64523941

复制
相关文章

相似问题

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