AWS 中的 Kubernetes 自动缩放

Posted

技术标签:

【中文标题】AWS 中的 Kubernetes 自动缩放【英文标题】:Kubernetes Autoscaling in AWS 【发布时间】:2021-04-07 07:13:31 【问题描述】:

这可能是一个愚蠢的问题,但我很想知道答案:

如果我在 AWS (EKS) 上运行 Kubernetes 集群,哪个自动扩展策略将优先? 负载均衡器上的 Auto Scaling 策略还是 Pod 本身内的策略?

【问题讨论】:

Pod 扩展不同于 EC2 实例扩展。一个扩展 pod(运行容器的数量),另一个扩展集群中的节点数量。通常,您不应为 ASG 使用自动缩放策略,而应使用 k8s cluster autoscaler。 【参考方案1】:

k8s cluster autoscaler 不会根据内存/cpu 扩展工作节点。当由于内存 / cpu 不足而未安排 pod 时,它会向上扩展。 Pod 自动缩放可以配置为在内存/cpu 使用量超过某个阈值时进行扩展。

因此,在涉及像 horizontal pod autoscaler 这样的 pod 自动扩缩器和像 k8s 集群自动扩缩器这样的节点自动扩缩器的工作流中,会发生以下情况

服务负载增加 -> 超过 Pod 内存/cpu 阈值 -> Pod 自动缩放 -> 由于工作节点上的内存/cpu 不足而暂停 Pod 调度 -> 节点自动缩放 -> 在新节点上调度 Pod。

如果您的问题是关于涉及基于内存/cpu 的自动缩放的任何其他节点自动缩放策略,那么首先自动缩放的答案会有所不同。如果有,请提供具体的用例。

【讨论】:

以上是关于AWS 中的 Kubernetes 自动缩放的主要内容,如果未能解决你的问题,请参考以下文章

Cluster autoscaler - AWS 中的自动标签节点

OpenStack 上 Kubernetes 中节点(minions)的水平自动缩放

aws 中的 rabbitmq 自动缩放集群:管理缩放事件

Terraform 中的 ECS 服务如何连接到 AWS 自动缩放组

生产环境中的Kubernetes最佳实践

在 AWS 中自动化自动缩放