为什么kubernetes HPA没有按比例缩小豆荚?

时间:2019-07-13 12:18:27

标签: kubernetes autoscaling pod

我正在使用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
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

至少有两个很好的理由来解释为什么它不起作用:

  1. documentation中可以看到:

      

    当前稳定版本,仅包含对CPU的支持   自动缩放,可以在自动缩放/ v1 API版本中找到。测试版   版本,其中包括对内存扩展和自定义的支持   指标,可以在 autoscaling / v2beta2 中找到。

    您正在使用:

    apiVersion: autoscaling/v2beta1在您的HorizontalPodAutoscaler定义中。

  2. 如果您总结custom.metrics.k8.io示例中当前正在运行的所有3个Pod所使用的总内存,则当内存限制设置为33000000时,工作负载仍然无法仅容纳2个Pod。 请注意,第一个Pod已达到其限制33M,其他2个Pod(19591168 + 19615744)的内存消耗仍然过高,无法与{{ 1}}个限制。