[英]Kubernetes HPA gets wrong current value for a custom metric
在实际度量标准值低于100/500
(根据Prometheus)的情况下,HPA状态显示132500m / 500
。
$ kubectl get hpa -n frontend --context testing
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
frontend Deployment/streaming 50237440 / 629145600, 132500m / 500 2 5 2 4d
HPA清单是:
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: frontend
namespace: streaming
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: streaming
minReplicas: 2
maxReplicas: 5
metrics:
- type: Pods
pods:
metricName: redis_memory_used_rss_bytes
targetAverageValue: 629145600
- type: Pods
pods:
metricName: redis_db_keys
targetAverageValue: 500
它应该打印正常结果,例如:
$ kubectl get hpa -n streaming --context streaming-eu
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
frontend Deployment/streaming 50237440 / 629145600, 87 / 500 2 5 2 4d
问题在于该132500m
值是错误的(Prometheus查询报告一个正常值)。 我想,由于HPA
并未扩大该指标,因此它认为它的价值有些不同。
使用Oliver006 / redis_exporter及其指标作为HPA的自定义Pod
指标来重现此问题。
Kubernetes版本 :
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.6", GitCommit:"6260bb08c46c31eea6cb538b34a9ceb3e406689c", GitTreeState:"clean", BuildDate:"2017-12-21T06:34:11Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}`
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.4-gke.1", GitCommit:"10e47a740d0036a4964280bd663c8500da58e3aa", GitTreeState:"clean", BuildDate:"2018-03-13T18:00:36Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}
云提供商 :
GKE 1.9.4
我认为这是一个指标转换问题。
这是有关此问题的贡献者的一个很好的评论 ,但这是关于http_requests
指标的:
如果您查看Prometheus适配器的文档,将会看到所有累积(计数器)指标都转换为费率指标,因为HPA的算法与直接缩放累积指标根本不兼容(直接缩放累积指标不兼容)总的来说有意义)。
在您的情况下,您的http_requests_total已转换为http_requests,因此在使用Prometheus适配器时,它始终会显示为来自度量标准API的毫请求。
因此,在您的情况下,它将返回类似于132500毫记录的内容。 只需将值除以1000,您将获得正确的平均值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.