赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Edge集群
  4. 操作指南
  5. 云上弹性
  6. 云端ECS节点弹性

云端ECS节点弹性

  • 云上弹性
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

ACK Edge集群可以管理各种类型的线上线下节点资源,例如不同地域的ECS节点、IDC节点、其他厂商节云节点,以及分布在工厂、门店、车辆和船舶中的服务器节点,当线下节点资源不足时,节点自动伸缩能力可以为ACK Edge集群自动扩容云上节点,进行调度容量的补充。这种弹性的扩缩容能力能够极大地节省资源成本。

阅读前提示

为了让您更好地了解ACK提供的节点伸缩方案,并结合您的业务诉求进行方案选型,建议您在启用节点伸缩能力前阅读本篇概述。

阅读本文前,推荐您参见Kubernetes官方文档了解手动伸缩、自动伸缩、水平伸缩、垂直伸缩等伸缩概念。

工作原理

在Kubernetes中,节点伸缩的工作原理与传统意义上基于使用率阈值的模型有所差别。这也是从传统IDC或其他编排系统迁移到Kubernetes集群后往往需要解决的问题。

阈值是如何选择与判断的?

在一个集群中,部分热点节点的利用率可能较高,而其他节点的利用率可能较低。

  • 如果根据整个集群的平均资源利用率来决定是否弹性伸缩,使得热点节点的差异被平均,那么会造成对热点节点的扩缩不够及时。

  • 如果依据最高的节点利用率来决定是否弹性伸缩,那么会造成弹出资源的浪费,影响集群的整体服务。

弹出实例后如何缓解压力?

在Kubernetes集群中,应用以Pod为最小单元部署在集群的不同节点上。当一个Pod资源利用率较高时,即使该Pod所在的节点或者集群触发了弹性扩容,但该应用的Pod数量以及Pod对应的Limit并没有发生变化,节点负载的压力也无法转移到新扩容的节点上。

如何判断以及执行实例的缩容?

如果基于资源利用率的方式判断节点是否缩容,那么很有可能出现Request(资源请求)较大、但Usage(实际资源使用)很小的Pod被驱逐。当集群中这种类型的Pod较多时,会占用集群大量的调度资源,导致部分Pod无法调度。

如何判断节点的弹出?

节点伸缩会监听Pod是否处于调度失败的状态,以判断是否需要触发扩容。当Pod由于调度资源不足而调度失败时,节点伸缩会开始模拟调度,计算在开启弹性的节点池中哪个节点池可为这些Pod提供所需的节点资源,并在满足需求时弹出相应的节点。

说明

模拟调度时将一个开启弹性的节点池作为一个的抽象节点,开启弹性的节点池中配置的机型规格对应会成为抽象节点的CPU、内存或GPU的容量,且其配置的Label、Taint也会成为抽象节点的Label与Taint。模拟调度器会在调度模拟时,将该抽象节点纳入调度参考范围。符合调度条件时,调度模拟器会计算所需的节点数目,驱动节点池弹出节点。

如何判断节点的缩容?

节点伸缩仅缩容开启了弹性的节点池中的节点,无法管理静态节点(不在开启了弹性的节点池中的其他节点)。每个节点会单独判断是否进行缩容。当任意一个节点的调度利用率低于所设置的调度阈值时,就会触发缩容判断。此时,节点伸缩会尝试模拟驱逐节点上的负载,判断当前节点是否可以排水。部分特殊的Pod(例如kube-system命名空间的非DaemonSet Pod、PDB控制的Pod等)则会跳过该节点而选择其他的候选节点。当节点发生驱逐时,会先进行排水,将节点上的Pod驱逐到其他的节点,然后再下线该节点。

如何提高弹性伸缩的成功率?

弹性伸缩的成功率主要取决于以下两个因素:

  • 调度策略是否满足

    配置开启弹性的节点池后,您需要先确认该节点池可以承载的Pod的调度策略范围。如果无法直接判断,您可以通过nodeSelector直接选择节点池的Label,来进行预弹模拟。

  • 资源配置是否充分

    当模拟调度通过后,系统会选择开启弹性的节点池,以弹出实例。但开启弹性的节点池中配置的ECS规格库存会直接影响是否可以成功弹出实例。因此,推荐您配置多个可用区、多个不同机型组合,以提高弹出成功率。

如何提高弹性伸缩的速度?

  • 方法一:使用极速模式加速弹出速度。当开启弹性的节点池预热后(已完成一次扩容和一次缩容),节点池即可进入极速伸缩模式。更多信息,请参见启用节点自动伸缩。

  • 方法二:使用自定义镜像的方式,以Alibaba Cloud Linux 3作为基础镜像,大大提升IaaS层的资源交付速度(50%)。更多信息,请参见弹性优化之自定义镜像。

节点自动伸缩方案

节点自动伸缩指资源层弹性,即当集群的容量规划无法满足应用Pod调度时,自动扩缩节点资源,进行调度容量的补充。节点自动伸缩通过cluster-autoscaler组件,以轮询的方式,周期性地维护和检查集群状态,以发现满足扩缩容条件的情况,从而自动扩缩容集群节点。

伸缩速度与效率

  • 单次伸缩时,标准模式的伸缩速度约为60s,极速模式为50s。

  • 当达到1分钟的伸缩量级时,伸缩速度会遇到瓶颈,并且在不同规模(多节点池)、不同场景(连续伸缩)下,弹性速度也会有比较明显的抖动。例如,当节点池数量超过100时,伸缩速度将衰减为100~150s。

  • 使用轮询式模型,且受制于对集群状态维护的依赖,弹性灵敏度最低为5s。

注意事项

配额与限制

  • 在专有网络下创建的单个路由表可创建的自定义路由数限额是200条。如需更大的配额,请前往配额中心提交申请。关于其他资源的配额限制及升配详情,请参见依赖底层云产品配额限制。

  • 请合理配置开启自动伸缩的节点池的最大实例数,保证此范围内的节点所依赖的资源和配额充足,例如合理规划VPC网段、交换机等网络资源,以避免节点扩容失败。配置开启自动伸缩的节点池的最大实例数,请参见配置实例数量。关于ACK的网络规划,请参见Kubernetes集群网络规划。

  • 节点伸缩功能不支持包年包月付费类型的节点。如需新建开启自动伸缩的节点池,请勿选择付费类型为包年包月。如需为已有节点池开启自动伸缩,请确保节点池内没有包年包月付费类型的节点。

依赖资源的维护

选择绑定EIP时,请勿通过ECS控制台直接删除节点伸缩扩容出的ECS节点,否则会导致EIP无法自动释放。

后续阅读

如在使用节点自动伸缩过程中遇到问题,您可以参见节点自动伸缩常见问题进行自排查。

展开查看节点自动伸缩的FAQ索引

分类

二级分类

跳转链接

节点自动伸缩的扩缩容行为

已知限制

扩容行为相关

  • cluster-autoscaler组件使用哪些调度策略来判断不可调度Pod能否调度到开启了弹性的节点池?

  • cluster-autoscaler组件可模拟判断的资源有哪些?

  • 为什么节点自动伸缩组件无法弹出节点?

  • 如果一个伸缩组内配置了多资源类型的实例规格,弹性伸缩时如何计算这个伸缩组的资源呢?

  • 弹性伸缩时,如何在多个开启弹性的节点池之间进行选择?

  • 开启弹性的节点池如何配置自定义资源?

缩容行为相关

  • 为什么cluster-autoscaler组件无法缩容节点?

  • 如何启用或禁用特定DaemonSet的驱逐?

  • 什么类型的Pod可以阻止cluster-autoscaler组件移除节点?

拓展支持相关

cluster-autoscaler组件是否支持CRD?

自定义的扩缩容行为

通过Pod控制扩缩容行为

  • 如何延迟cluster-autoscaler组件对不可调度Pod的扩容反应时间?

通过节点控制扩缩容行为

  • 如何指定节点不被cluster-autoscaler组件缩容?

  • 如何通过Pod Annotation影响cluster-autoscaler组件的节点缩容?

cluster-autoscaler组件相关

  • 如何升级cluster-autoscaler组件至最新版本?

  • 哪些操作会触发cluster-autoscaler组件自动更新?

  • ACK托管集群已经完成了角色授权,但节点伸缩活动仍然无法正常运行?

相关文章

云端ECS节点弹性 2025-04-21 11:16

ACK Edge集群可以管理各种类型的线上线下节点资源,例如不同地域的ECS节点、IDC节点、其他厂商节云节点,以及分布在工厂、门店、车辆和船舶中的服务器节点,当线下节点资源不足时,节点自动伸缩能力可以为ACK Edge集群自动扩容云上节点,进行调度容量的补充。这种弹性的扩缩容能力能够极大地节省资源

虚拟节点Serverless弹性 2025-04-21 11:16

当您需要在短时间内快速创建大量Pod时,云端ECS节点扩容速度可能无法满足要求,而预留额外的ECS节点又会产生资源浪费。借助虚拟节点,您无需提前预留和维护固定资源池,可以直接将Pod调度到虚拟节点上以弹性容器实例ECI来运行,在保障弹性的同时节约资源成本。 为什么要使用虚拟节点 虚拟节点是什么

启用节点自动伸缩 2025-04-21 11:16

当集群的容量规划无法满足应用Pod调度时,您可以使用节点自动伸缩方案实现节点的自动扩缩。节点自动伸缩适用于扩容规模较小(例如开启弹性的节点池数量少于20,或对应节点池中的节点数量少于100),工作负载流量波动平缓,具有周期性或可预测性资源需求,并且单批次资源伸缩即可满足业务需求的场景。

通过虚拟节点将Pod调度到ECI上运行 2025-04-21 11:16

当您需要在短时间内快速创建大量Pod时,ECS节点扩容速度可能无法满足要求,而预留额外的ECS节点又会产生资源浪费。借助ACK虚拟节点可以将Pod快速地调度到弹性容器实例ECI上运行,且无需购买和管理ECS节点。本文介绍如何在ACK集群(ACK托管集群和ACK专有集群)中将Pod调度到ECI上运行。

通过ACK Edge集群使用ACS算力 2025-04-21 11:16

阿里云容器计算服务 ACS(Container Compute Service)已经集成到容器服务 Edg

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号