AWS EKS Cluster Autoscaler - 缩减策略

Posted

技术标签:

【中文标题】AWS EKS Cluster Autoscaler - 缩减策略【英文标题】:AWS EKS Cluster Autoscaler - Scale-In Policy 【发布时间】:2019-08-24 19:17:20 【问题描述】:

我在 EKS 上部署了一个 CA(集群自动扩缩器),随后是 this post。我想知道的是,只要在该节点上部署了至少 一个 pod 即如果有 3 个节点的容量为 8 个 pod,如果第 9 个 pod 出现,CA 就会自动缩小集群将提供第 4 个节点来运行第 9 个 pod。我看到的是 CA 不断终止并创建一个从集群中随机选择的节点,从而干扰其他 pod 和节点。

我如何告诉 EKS(不定义最小节点或在 ASG 中禁用缩减策略)不要杀死至少运行 1 个 pod 的节点。任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

您不能将 pod 用作单元。 CA 使用资源 cpu 和内存单元。

如果集群没有足够的 cpu 或内存,则添加一个新的。

您必须使用您的请求资源(在 pod 定义中)或重新定义您的节点以采用具有更多或更少资源的实例类型,具体取决于您希望每个 pod 有多少。

或者你可以使用参数scale-down-utilization-threshold

https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-the-parameters-to-ca

【讨论】:

每个 pod 都有 memory: 1500Mi 资源限制。它与scale-down-utilization-threshold 有什么关系? 您的意思是,如果节点上的 pod 的内存 + CPU 利用率低于该节点的 50%,CA 会考虑将其移除,并且可以通过 scale-down-utilization-threshold 标志进行配置? 不是资源限制,而是资源请求。如果您没有请求,CA 会认为它可以在具有 10mo 内存的节点上启动您的 pod 并杀死新节点。 抱歉延迟回复。其实我是在做实验。我还将资源请求定义为与资源限制相同。似乎 CA 仍在从 EKS 中删除一个随机节点。 PS:我正在使用 helm 在 EKS 上部署东西。 我想我必须设置scale-down-utilization-threshold。我不知道如何根据部署中定义的 CPU 和内存来计算这个值。

以上是关于AWS EKS Cluster Autoscaler - 缩减策略的主要内容,如果未能解决你的问题,请参考以下文章

如何集成 AWS + ELB + AutoScale + Docker + Spring Cloud

如何为 AutoScale 实例使用 AWS 负载均衡器代理协议?

AWS - 重建 Autoscale 组中的所有实例

Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null

具有私有 IP 的 AWS Gitlab Autoscale 运行器,不想启用公共 IP

AWS简单搭建使用EKS二