[英]value of external metrics is weird in kubernetes hpa
我正在學習 kubernetes 並測試一些示例。
我在將外部指標應用於 hpa 時遇到問題。
我用普羅米修斯適配器制作了一個外部指標。
所以我可以使用外部指標
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"]}]}
我可以使用
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/default/redis_keys
命令。
結果如下。
{"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轉換成11500m,但兩者是一樣的。 在HPA 指標的“數量”上查看此鏈接,了解更多。
接下來,您現在看到兩個副本,其 Metrics API 的值為 23。由於您已將度量設置為外部度量的 AverageValue,因此它將度量值除以當您查看 HPA 資源時,集群會導致 11.5 或 11500m。 這解釋了為什么您只看到 2 個副本,而指標的值“高於”您的閾值。 查看有關使用多個和自定義指標進行自動縮放的鏈接,特別是有關“對象”指標的部分。 並降低他們在有關外部指標的這一行中滑動的頁面,確認您為什么會看到上述內容。
外部指標同時支持 Value 和 AverageValue 目標類型,其功能與您使用 Object 類型時的功能完全相同。
希望這會有所幫助,並進行一些調整使其更符合您的期望。 祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.