首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GKE上Kubernetes HorizontalPodAutoscaler的指标描述了什么?

GKE上Kubernetes HorizontalPodAutoscaler的指标描述了什么?
EN

Stack Overflow用户
提问于 2020-05-26 09:16:14
回答 1查看 286关注 0票数 1

我像这里描述的那样设置我的HorizontalPodAutoscaler来根据来自我的发布/订阅的未确认消息的数量来监听尺度。我的愿望是,如果有超过1条未确认的消息,则pods可以扩展。当我运行k describe hpa时,我得到:

代码语言:javascript
复制
Namespace:                                                                               default
Labels:                                                                                  <none>
Annotations:                                                                             kubectl.kubernetes.io/last-applied-configuration:
                                                                                           {"apiVersion":"autoscaling/v2beta1","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"foobar-gke-prod","namespace":"defau...
CreationTimestamp:                                                                       Mon, 25 May 2020 18:01:33 -0700
Reference:                                                                               Deployment/foobar-gke-prod
Metrics:                                                                                 ( current / target )
  "pubsub.googleapis.com|subscription|num_undelivered_messages" (target average value):  200m / 1
Min replicas:                                                                            3
Max replicas:                                                                            9
Deployment pods:                                                                         5 current / 5 desired

返回的指标数据让我感到困惑。当我运行该命令时,根据控制台指标,未确认知识消息的数量约为4条。所以我不明白200m是什么意思?为什么不是4呢?

这是我对HPA的配置

代码语言:javascript
复制
# Template from https://cloud.google.com/kubernetes-engine/docs/tutorials/external-metrics-autoscaling
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: foobar-gke-prod
spec:
  minReplicas: 3
  maxReplicas: 9
  metrics:
  - external:
      metricName: pubsub.googleapis.com|subscription|num_undelivered_messages
      metricSelector:
        matchLabels:
          resource.labels.subscription_id: prod_foobar_subscription
      targetAverageValue: "1"
    type: External
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: foobar-gke-prod
EN

回答 1

Stack Overflow用户

发布于 2020-05-26 18:23:20

参考示例:

代码语言:javascript
复制
Name:                                                                                    pubsub
...
Metrics:                                                                                 ( current / target )
"pubsub.googleapis.com|subscription|num_undelivered_messages" (target average value):  2250m / 2
Min replicas:                                                                            1
Max replicas:                                                                            4
Conditions:
Type            Status  Reason            Message
----            ------  ------            -------
AbleToScale     True    SucceededRescale  the HPA controller was able to update the target scale to 4
ScalingLimited  True    TooManyReplicas   the desired replica count is more than the maximum replica count
Events:
Type    Reason             Age   From                       Message
----    ------             ----  ----                       -------
Normal  SuccessfulRescale  7s    horizontal-pod-autoscaler  New size: 4; reason: external metric pubsub.googleapis.com|subscription|num_undelivered_messages(&LabelSelector{MatchLabels:map[string]string{resource.labels.subscription_id: echo-read,},MatchExpressions:[],}) above target

  • 指标部分提供了HPA观察到的指标的最后一个值。分数值以毫单位表示。例如,在上面的输出中有4个应用程序副本,而发布/订阅订阅中当前未确认的消息数为9。因此,每个副本的平均消息数为2.25,即2250m.

(

返回的指标数据让我感到困惑。当我运行该命令时,根据控制台指标,未确认知识消息的数量约为4条。所以我不明白200m是什么意思?为什么不是4呢?

  • 这意味着在您的情况下,200m/1意味着在测量HPA时,每个运行的副本的平均未送达邮件数为0.2(20%)。

Considerations:

  • 请确保您大致同时在指标控制台和HPA上进行读取,以避免在读取过程中因缩放运行而导致的差异。
  • 读取5个pods的4条消息将导致800m的负载,但此时hpa可能已经在运行另一个扩展事件。
  • 我建议您同时读取指标控制台和hpa并再次验证。

如果你仍然认为这里的结果与更新后的hpa不匹配,请描述一下,我们可以再看一看。

编辑:

有没有办法使指标不是跨pods的平均值?也就是说,如果有5条未确认的消息,指标数据将读取5000m?

来自Kubernetes API参考ExternalMetricSource v2beta1 Autoscaling

  • targetAverageValue是全局指标的每个pod的目标值(因为quantity).
  • targetValue是指标的目标值(以数量表示)。

请注意,targetAverageValuetargetValue是互斥的。

因此,如果你想要总数而不是平均值,只需在你的HPA上调换它们。

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

https://stackoverflow.com/questions/62013168

复制
相关文章

相似问题

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