我正在使用prometheus和适配器来缩放HPA(自定义指标memory_usage_bytes)。我不知道为什么在m后面附加targetValue,而且HPA在不使用内存时也不会按比例缩小Pod。
我想念什么吗?
HPA代码
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: pros
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: pros
maxReplicas: 3
metrics:
- type: Pods
pods:
metricName: memory_usage_bytes
targetAverageValue: 33000000
kubectl获得hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
pros Deployment/pros 26781013333m/33M 1 3 3 19m
custom.metrics.k8.io
{
"kind": "MetricValueList",
"apiVersion": "custom.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/%2A/memory_usage_bytes"
},
"items": [
{
"describedObject": {
"kind": "Pod",
"namespace": "default",
"name": "pros-6c9b9c5c59-57vmx",
"apiVersion": "/v1"
},
"metricName": "memory_usage_bytes",
"timestamp": "2019-07-13T12:03:10Z",
"value": "34947072",
"selector": null
},
{
"describedObject": {
"kind": "Pod",
"namespace": "default",
"name": "pros-6c9b9c5c59-957zv",
"apiVersion": "/v1"
},
"metricName": "memory_usage_bytes",
"timestamp": "2019-07-13T12:03:10Z",
"value": "19591168",
"selector": null
},
{
"describedObject": {
"kind": "Pod",
"namespace": "default",
"name": "pros-6c9b9c5c59-nczqq",
"apiVersion": "/v1"
},
"metricName": "memory_usage_bytes",
"timestamp": "2019-07-13T12:03:10Z",
"value": "19615744",
"selector": null
}
]
}
答案 0 :(得分:0)
至少有两个很好的理由来解释为什么它不起作用:
在documentation中可以看到:
当前稳定版本,仅包含对CPU的支持 自动缩放,可以在自动缩放/ v1 API版本中找到。测试版 版本,其中包括对内存扩展和自定义的支持 指标,可以在 autoscaling / v2beta2 中找到。
您正在使用:
apiVersion: autoscaling/v2beta1
在您的HorizontalPodAutoscaler
定义中。
custom.metrics.k8.io
示例中当前正在运行的所有3个Pod所使用的总内存,则当内存限制设置为33000000
时,工作负载仍然无法仅容纳2个Pod。
请注意,第一个Pod已达到其限制33M
,其他2个Pod(19591168
+ 19615744
)的内存消耗仍然过高,无法与{{ 1}}个限制。