【问题标题】:Kubernates autoscale memoryKubernetes 自动扩缩器内存
【发布时间】:2020-10-20 05:58:48
【问题描述】:

我有一个 Java 应用程序在 K8s 上运行,部署中有 min:2 和 max:6 pod。 堆最小值:256Mb,堆最大值:512Mb。请求和限制内存为 1Gi 这是 hpa 规范:

  spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 6
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 60
    - type: Resource
      resource:
        name: memory
        targetAverageUtilization: 60

在性能测试期间,我注意到部署正试图非常积极地扩展。

没有负载的时候,内存利用率在33%左右,根据这个链接https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ 大致了解所需 pod 的公式是 desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

从 K8s 监控中,我注意到它会在内存利用率增加到 40% 左右时尝试扩展。如果我正确理解上述公式的工作原理,desiredReplicas = ceil[2*(0.4/0.6)] = 2,那么它不应该扩大规模。

我理解正确吗?

【问题讨论】:

  • 您的工作流程是否正常进行?或者,如果在某些操作期间正在执行的事务有任何下降,请尝试检查应用程序日志,同时当您看到 HPA 的这种行为时。它也发生在我身上,场景就像在 API 调用之后生成一个庞大的报告,但是当 PDF 的大小达到阈值时,调用正在下降并且新的 POD 开始产生,我增加了内存和 cpu,然后它得到了排序
  • 这是我感受到的实际案例之一,在使用 Azure kubernetes 集群服务时,我一直无法正确理解扩容,很多时候扩容发生了,甚至在负载增加时减少了从那时起大约需要 10 分钟才能恢复到原始所需的副本状态。您也可以检查此观察结果

标签: spring-boot docker kubernetes hpa


【解决方案1】:

这看起来是正确的,但我猜了一会儿,因为你没有分享 kubectl top pods 的输出。可能是您的部署不是因为内存利用率而扩展的,而是首先因为 CPU 利用率。

如果您看到docs,第一个达到目标的指标将启动自动缩放过程:

Kubernetes 1.6 增加了对基于多个指标的扩展的支持。您可以使用 autoscaling/v2beta2 API 版本为 Horizo​​ntal Pod Autoscaler 指定多个指标以进行扩展。然后,Horizo​​ntal Pod Autoscaler 控制器将评估每个指标,并根据该指标提出一个新的比例。建议的尺度中最大的将用作新尺度

您还可以尝试为您的内存目标使用价值指标来进行故障排除:

  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 60
    - type: Resource
      resource:
        name: memory
        targetAverageValue: 700M

查看当前指标的一个好方法是在 HPA 上获取完整输出的状态:

$ kubectl get hpa <hpa-name> -o=yaml

【讨论】:

  • 感谢您的 cmets。我的应用程序占用的 CPU 非常少,我检查过 CPU 利用率保持在 2% 左右。我们的集群正在使用 v2Beta1,我不确定我是否能够使用 muti 指标,我可能会尝试设置该值以查看是否可以解决问题
猜你喜欢
  • 2017-05-29
  • 2016-09-05
  • 2019-11-16
  • 2016-08-24
  • 1970-01-01
  • 2015-04-29
  • 2020-03-12
  • 2021-01-20
  • 1970-01-01
相关资源
最近更新 更多