在kubernetes hpa中,外部指标的值很奇怪
我正在研究库伯内特并测试一些例子 我在将外部指标应用于hpa时遇到问题 我用普罗米修斯适配器做了一个外部度量 因此,我可以使用在kubernetes hpa中,外部指标的值很奇怪,kubernetes,Kubernetes,我正在研究库伯内特并测试一些例子 我在将外部指标应用于hpa时遇到问题 我用普罗米修斯适配器做了一个外部度量 因此,我可以使用 kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/ 指挥部 结果如下 {"kind":"APIResourceList","apiVersion":"v1","groupVersion":"exte
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/
指挥部
结果如下
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"external.metrics.k8s.io/v1beta1","resources":[{"name":"redis_keys","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]}]}
{"kind":"ExternalMetricValueList","apiVersion":"external.metrics.k8s.io/v1beta1","metadata":{"selfLink":"/apis/external.metrics.k8s.io/v1beta1/namespaces/default/redis_keys"},"items":[{"metricName":"redis_keys","metricLabels":{},"timestamp":"2020-10-28T08:39:09Z","value":"23"}]}
我可以使用
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/default/redis_keys
指挥部
结果如下
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"external.metrics.k8s.io/v1beta1","resources":[{"name":"redis_keys","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]}]}
{"kind":"ExternalMetricValueList","apiVersion":"external.metrics.k8s.io/v1beta1","metadata":{"selfLink":"/apis/external.metrics.k8s.io/v1beta1/namespaces/default/redis_keys"},"items":[{"metricName":"redis_keys","metricLabels":{},"timestamp":"2020-10-28T08:39:09Z","value":"23"}]}
我将这个指标应用于hpa
以下是hpa配置
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: taskqueue-autoscaler
spec:
scaleTargetRef:
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
name: taskqueue-consumer
minReplicas: 1
maxReplicas: 10
metrics:
- type: External
external:
metricName: redis_keys
targetAverageValue: 20
在制定hpa之后
我测试了这个命令
kubectl get hpa
结果很奇怪
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
taskqueue-autoscaler Deployment/taskqueue-consumer 11500m/20 (avg) 1 10 2 63m
我认为它的值(11500m)是错误的,因为查询值的结果是23
在这种情况下,我应该在哪里看到呢?事实上这是对的,但它也很复杂,因为它涉及到HPA资源的一些不同的事情,而这些事情并不是很明显。所以我会一次一件地解释这件事 首先是计量单位。Metrics API将尽可能返回整个单位,但也会返回毫单位,这可能导致上述情况。实际上,你看到的是11.5米转换成11.5米,但两者是一样的。请查看网站上的此链接,其中包含更多内容 接下来,您将看到两个副本,其中Metrics API的值为23。由于您已将该度量设置为外部度量的平均值,因此在查看HPA资源时,该度量的值除以群集中的副本数将得到11.5或11500m。这解释了为什么您只看到2个副本,而度量值“高于”您的阈值。请在上查看此链接。并将这一行中关于外部指标的内容放低,确认您看到上述内容的原因 外部指标支持Value和AverageValue目标类型, 该函数与使用对象类型时的函数完全相同
希望这会有所帮助,一些调整会使它更好地符合您的期望。祝你好运 事实上,这是对的,但它也很复杂,因为它涉及到HPA资源的一些不同的事情,而这些事情并不是很明显。所以我会一次一件地解释这件事 首先是计量单位。Metrics API将尽可能返回整个单位,但也会返回毫单位,这可能导致上述情况。实际上,你看到的是11.5米转换成11.5米,但两者是一样的。请查看网站上的此链接,其中包含更多内容 接下来,您将看到两个副本,其中Metrics API的值为23。由于您已将该度量设置为外部度量的平均值,因此在查看HPA资源时,该度量的值除以群集中的副本数将得到11.5或11500m。这解释了为什么您只看到2个副本,而度量值“高于”您的阈值。请在上查看此链接。并将这一行中关于外部指标的内容放低,确认您看到上述内容的原因 外部指标支持Value和AverageValue目标类型, 该函数与使用对象类型时的函数完全相同 希望这会有所帮助,一些调整会使它更好地符合您的期望。祝你好运