如何根据 EKS 中的平均内存使用量自动扩展 Kubernetes Pod?

Posted

技术标签:

【中文标题】如何根据 EKS 中的平均内存使用量自动扩展 Kubernetes Pod?【英文标题】:How to autoscale Kubernetes Pods based on average memory usage in EKS? 【发布时间】:2020-09-12 12:50:56 【问题描述】:

我正在运行一个 EKS 集群,并且我创建了一个 HorizontalPodAutoscaler,用于根据平均 CPU 利用率自动缩放 Pod 数量。

如何为平均内存利用率做同样的事情?

假设在 EKS 集群中运行的所有 pod,平均使用了分配给它们的 70% 的内存(使用 resources),那么应该自动扩展部署。

如何做到这一点?在CloudWatch 中创建自定义指标是唯一的方法吗?

即使 cloudWatch 是唯一的方法,如何做到这一点?是否有特定的文档或教程或博客可以做到这一点?

【问题讨论】:

【参考方案1】:

请尝试以下HPA 配置对象。

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: nginx
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 70

并使用kubectl apply 应用对象

【讨论】:

这永远行不通。您可以将资源名称更改为wtf,它会通过,但它也会查找wtf 指标。 @suren 但 CPU 和内存指标默认由 Kubernetes 提供。我指的是this 苏仁,我很想了解这个对象有什么问题? 对不起。你说的对。我刚刚测试了它并且它有效。以前做过这个,没有成功。我的错。 没问题苏仁,我觉得可以作为答案接受:)

以上是关于如何根据 EKS 中的平均内存使用量自动扩展 Kubernetes Pod?的主要内容,如果未能解决你的问题,请参考以下文章

如何基于java应用内存扩展aws ec2集群

如何使用 Terraform 配置 AWS EKS 自动扩缩器?

使用 EKS 中的流利位在 AWS cloudwatch 中自动创建日志组

AWS 中的 Kubernetes 自动缩放

如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

Azure 应用服务自动缩放无法缩小