旧光泽的 GKE 集群自动扩缩器配置文件
Posted
技术标签:
【中文标题】旧光泽的 GKE 集群自动扩缩器配置文件【英文标题】:GKE Cluster autoscaler profile for older luster 【发布时间】:2021-02-16 11:00:33 【问题描述】:现在在 GKE 中创建新的 K8s 集群时有一个新选项卡
Automation
- 为自动维护、自动扩展和自动供应设置集群级标准。编辑节点池以实现自动扩展、自动升级和修复等自动化。
它有两个选项 - 平衡(默认) & 优化利用率(测试版)
我们不能为旧集群设置这个吗?
我们正在运行旧的 GKE 版本 1.14,我们希望在现有节点的资源利用率达到 70% 时自动扩展集群。
目前,我们有 2 个不同的池 - 只有 一个 启用了自动节点配置,但在高峰时段如果 HPA 扩展 POD,新节点需要一些时间才能加入集群有时由于资源压力,退出节点开始崩溃。
【问题讨论】:
您可以通过以下路径为集群设置Optimize utilization
参数:GCP Cloud Console
(Web UI) --> Kubernetes Engine
--> CLUSTER
-> Edit
-> Autoscaling profile
。您可以通过关注this documentation 来了解它的行为方式。 Autoscaler 基于集群无法在当前存在的节点上调度 pod。它考虑了工作负载的请求,而不是实际的资源利用率。您是否在工作负载上设置了requests
参数?
是的,我们在所有工作负载中都有资源请求和限制。
【参考方案1】:
您可以通过以下方式设置自动缩放配置文件:
GCP Cloud Console
(Web UI) -> Kubernetes Engine
-> CLUSTER-NAME
-> Edit
-> Autoscaling profile
此截图是在
GKE
版本1.14.10-gke.50
上制作的
你也可以运行:
gcloud beta container clusters update CLUSTER-NAME --autoscaling-profile optimize-utilization
官方文档说明:
您可以指定在做出此类决定时使用哪个自动缩放配置文件。当前可用的配置文件有:
balanced
:默认配置文件。optimize-utilization
:优先考虑优化利用率而不是保留集群中的备用资源。选中后,集群自动缩放器会更积极地缩减集群:它可以删除更多节点,并更快地删除节点。 此配置文件已针对对启动延迟不敏感的批处理工作负载进行了优化。我们目前不建议将此配置文件用于服务工作负载。-- Cloud.google.com: Kubernetes Engine: Cluster autoscaler: Autoscaling profiles
此设置 (optimize-utilization
) 在用于处理工作负载时可能不是最佳选择。它将更积极地尝试scale-down
(删除一个节点)。它会自动减少集群拥有的可用资源量,并且可能更容易受到工作负载高峰的影响。
回答部分问题:
我们正在运行旧的 GKE 1.14 版,我们希望在现有节点的资源利用率达到 70% 时自动扩展集群。
如文档中所述:
Cluster autoscaler 根据在该节点池的节点上运行的 Pod 的资源请求(而不是实际资源利用率)自动增加或减少节点池的大小。它会定期检查 Pod 和节点的状态,并采取行动:
如果 Pod 由于节点池中没有足够的节点而无法调度,则集群自动扩缩器会添加节点,直至节点池的最大大小。-- Cloud.google.com: Kubernetes Engine: Cluster autoscaler: How cluster autoscaler works
您无法根据资源利用率 (70%) 的百分比直接扩展集群。 Autoscaler 基于集群无法在当前存在的节点上调度 pod。
您可以通过CPU
使用Horizontal Pod Autoscaler 来扩展Deployment
的副本数量。这个Pods
可以有一个缓冲区来处理增加的流量,并且在特定阈值之后,它们可以产生新的Pods
,CA
(集群自动缩放器)将发送一个新节点的请求(如果新的Pods
是不可调度)。该缓冲区将成为防止应用程序无法管理的突然峰值的机制。
缓冲区部分和over-provisioning详细解释在:
Cloud.google.com: Solutions: Best practices for running cost effective kubernetes applications on gke: Autoscaler and over-provisioning在GKE
上有大量关于运行具有成本效益的应用程序的文档:
我鼓励您查看上面的链接,因为有很多关于(扩展、过度配置、工作负载峰值、HPA
、VPA
等)的提示和见解
其他资源:
Cloud.google.com: Kubernetes Engine: Node auto provisioning【讨论】:
以上是关于旧光泽的 GKE 集群自动扩缩器配置文件的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Cloud 上的何处配置 Kubernetes 集群自动扩缩器?
如何使用 Terraform 配置 AWS EKS 自动扩缩器?