使用 Prometheus Adapter 的 Horizo​​ntal Pod Autoscaler (HPA) 自定义指标(如何定义单位?)

Horizontal Pod Autoscaler (HPA) custom metrics with Prometheus Adapter (How are units defined?)

我正在使用来自应用程序的自定义指标测试 HPA,并使用 Prometheus-adapter 暴露给 K8s。

我的应用程序公开了一个“jobs_executing”自定义指标,它是 golang 中的数值量表(prometheus-client),公开了应用程序(pod)执行的作业数量。

现在为了在 hpa 中解决这个问题,这是我的 HPA 配置的样子:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metric:
        name: jobs_executing
      target:
        type: AverageValue
        averageValue: 5

我希望自动缩放器在平均 no 时缩放我的 pod。总体 pods 执行的作业数等于“5”。这可行,但有时 HPA 配置会显示如下值:

NAME             REFERENCE                           TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
my-autoscaler    Deployment/my-scaling-sample-app    7700m/5     1         10        10       38m

这里的目标显示为“7700m/5”,即使平均数没有。总体执行的工作数量为 7.7。这使得 HPA 只是积极地横向扩展。我不明白为什么它在当前目标值中输入“7700m”?

我的问题是,如果有一种方法可以在 HPA 中定义浮点数,并且不会将普通整数与 7700m(CPU 单位?)

混淆

或者我错过了什么?谢谢

来自文档:

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#appendix-quantities

All metrics in the HorizontalPodAutoscaler and metrics APIs are specified using a special whole-number notation known in Kubernetes as a quantity. For example, the quantity 10500m would be written as 10.5 in decimal notation. The metrics APIs will return whole numbers without a suffix when possible, and will generally return quantities in milli-units otherwise. This means you might see your metric value fluctuate between 1 and 1500m, or 1 and 1.5 when written in decimal notation.

所以您似乎无法调整 HPA 使用的测量单位,即通用数量。