【问题标题】:Why Kubernetes HPA convert custom metric?为什么 Kubernetes HPA 转换自定义指标?
【发布时间】:2019-08-16 16:52:37
【问题描述】:

Kubernetes Horisontal Pod Autoscaling (HPA) 修改了我的自定义指标:StackDriver 显示正确的指标,但 HPA 显示另一个数字。 例如,StackDrives 值为 118K,但 HPA 显示 1656144。 我知道 HPA 对浮点数使用了一些对话,但我的指标是整数:单位:数字种类:量规值类型:Int64。

在 GKE 1.11.7 中运行。

有什么想法吗?

【问题讨论】:

  • 嗨@Vitaly,你能分享你的HPA清单吗?默认 HPA 实现为 控制循环,由控制器管理器的 --horizo​​ntal-pod-autoscaler-sync-period 标志控制。这些指标可能取决于对 HPA 算法 有影响的某些字段,例如 targetAverageValue 或 targetAverageUtilization。这是一般信息kubernetes.io/docs/tasks/run-application/… 请上传您的 HPA 清单。
  • 当然:apiVersion:autoscaling/v2beta1 种类:Horizo​​ntalPodAutoscaler 元数据:名称:myhpa 命名空间:默认规范:scaleTargetRef:apiVersion:apps/v1beta1 种类:部署名称:mydeploy minReplicas:1 maxReplicas:10 指标:-类型:外部外部:metricName:custom.googleapis.com|rabbit_q_size targetValue:10000

标签: kubernetes


【解决方案1】:

如果您指定targetValue,它将是一个整数,因此不会缩小 pod。 如果您使用targetAverageValue,它将根据创建的 pod 数量进行计算。

【讨论】:

    【解决方案2】:

    在您的 HPA 清单中,您没有指定 --horizontal-pod-autoscaler-sync-period 标志的值。默认情况下,它设置为 15 秒。

    在您的情况下,这意味着 HPA 值在过去 15 秒内占整个部署队列的数量。更多信息可以在HPA Documentation 中找到。

    正如您在 StackDriver 中提到的,您使用 GAUGE 指标来衡量特定时间点的值 - Stackdriver

    简而言之,StackDriver 显示准确时间的当前值,HPA 值是最近 15 秒的量。

    【讨论】:

    • >HPA 值是最后 15 秒的量我不确定我是否理解你。
    • 您的 HPA 从整个部署中收集信息。由于 TargetValue 为 10000,当 RabbitMQ 队列达到此值时,HPA 将创建另一个 pod。 HPA 的值将是过去 15 秒内收到的所有 pod 的所有消息的总和。这就是为什么 StackDriver 在您检查值的那一刻有 118k 条消息,而 HPA 有 160 万条消息,因为它是过去 15 秒内所有部署消息的总和。
    • 我不这么认为。在我的例子中,我使用了来自独立 RabbitMQ 服务器的自定义指标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2020-10-15
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2020-07-03
    相关资源
    最近更新 更多