资源碎片规整¶
资源碎片带来的成本挑战¶
在 Kubernetes 集群中,若初始装箱策略不合理或业务批量缩容后,会导致每个节点上残留闲置资源,但因节点上仍有业务持续运行,整个节点无法退出,云用户依然承担着这部分资源成本。随着时间推移,如果节点没有及时规整装箱碎片,集群将积累大量碎片化资源,导致实际可用资源远低于理论资源总量,形成显著的资源浪费。由于业务通常按需申请资源,平台运维团队面临的核心挑战是如何有效缩减这些闲置成本,同时保证平台整体资源利用率。
碎片规整的定位是作为重调度的一种策略,作为首次调度的一种补充,给用户提供了一种自动的、安全的、智能的规整集群资源的方法。帮助用户在集群使用过程中对抗时间带来的腐坏,提升集群的资源使用效率,节省用户成本。
资源碎片产生的原因¶
1. 业务资源申请的多样化与节点资源配比的错配¶
集群中业务对于资源的申请并不总是与节点资源配置一致。比如集群中一部分节点的 cpu : memory 可能是 1:4,而业务申请的比例是 1:8。这可能导致集群中这些节点的 memory 比 cpu 更早分配完,导致部分 cpu 无法被利用。
2. 业务负载的波动¶
业务可能会随着具体需求动态地进行扩缩容。即便在首次调度中尽可能紧凑的装箱策略,节点的实际装箱情况也可能随着业务 pod 的波动逐渐劣化,导致部分碎片产生。
3. 节点规格多样化¶
集群中节点的资源规格、可用区或其他配置往往是多样化的。这无形中就会加剧资源分配的碎片化。例如大核心业务占用了小核心节点,或者小核心占用了大核心节点,在资源分配上有重新优化空间但缺乏自动化手段。
资源碎片规整的潜在收益¶
- 规整低装箱节点,将低装箱率节点的业务重调度到其他节点提升装箱率
- 规整资源分配不均节点,将资源分配严重失衡的节点上的业务进行重建,使资源安排更合理
- 规整利用率与装箱率失衡节点,将利用率与装箱率不匹配的节点上的业务进行重建,提升节点的利用率
资源碎片治理缺少系统性工具¶
在现有 Kubernetes 环境下,资源碎片规整是一个手动运维的过程:
- 扫描集群中所有节点的基本情况,包括装箱率、利用率等。筛选需要规整的节点
- 盘点目标节点的应用情况,包括节点应用是否可调度、是否高可用,是否接受业务中断
- 逐次封锁经过筛选后的目标节点,逐次排空。排空节点的同时需要紧密关注集群中剩余资源容量与重调度 pod 的重建情况。如有 pod 因缺乏资源无法被调度需要及时介入,增加节点防止影响业务
- 规整完成后对排空的节点进行梳理,逐次下架
上述方法是一种常规且可重复操作的运维动作。集群管理人员在做动作时需要综合考虑集群、节点、应用的数据,过程复杂且繁琐,需要非常小心且难以批量产出价值。跳出来看,Kubernetes 没有提供系统性的碎片规整解决方案,这让资源碎片规整面临着低效、合规风险和业务稳定性挑战:
缺乏数据分析工具¶
集群中可能存在不同付费类型、可用区、机型的节点。用户如果有需求替换特定节点或想提高某类型节点装箱率时,由于节点上运行的业务不一定能自动化腾退需要人工预先分析数据之后介入,对人力成本与资源成本都有浪费。
缺乏合规性产品能力¶
当需要替换节点或优化资源分配时,由于业务无法自动腾退,管理人员必须进行大量人工干预,耗费大量人力成本。更关键的是,当前严重缺乏自动化工具来分析节点状态并辅助决策,导致管理人员需要手动收集和分析大量数据。这种手动操作不仅效率低下,还存在高风险,可能在操作过程中影响业务连续性,造成服务中断。
缺乏业务稳定性保障机制¶
资源治理过程中严重缺乏业务视角的策略和稳定性保障机制。当前工具无法有效保证在规整时,对不同业务选择上的公平性,可能某些业务会一直被反复驱逐。缺少系统化能力确保规整数量的智能熔断和限流机制,无法在资源调整过程中为业务提供必要的保护。同时,资源优化操作往往缺乏对业务 SLA 的考量,导致在追求集群整体效率的同时可能牺牲特定业务的稳定性和性能。管理人员在规划资源调整时也缺乏对业务峰值、关键时段和依赖关系的全面了解,难以制定既能提高资源利用率又能保障业务稳定运行的优化策略。
面向业务稳定性的自动规整¶
与有意识的手动规整不同,自动化碎片规整需要在充分考虑业务稳定性的情况之后进行。一方面要求业务进行高可用、可调度的适配,另一方面自动规整的自动化流程需要有充足的安全性考量与边界检查。
业务适配¶
碎片规整对于即有业务是一个重调度动作,从 pod 的维度看是有一定干扰的,所以在开启自动规整前用户需要对存量及增量的业务进行高可用改造。业务的高可用改造主要有两方面:
- 配置充足的副本数与适当的亲和性,使得业务可以分散开防止集中故障
- 配置合适 PDB(PodDisruptionBudget),使得业务的中断有保护,同时也允许业务可调度
- 用户业务需要有优雅退出逻辑,在驱逐动作发生时有对应的终止逻辑保护业务数据与运行状态
其实无论用户是否需要开启碎片规整,业务的高可用配置对用户来说都是有利的。在当前语境下,用户的业务进行高可用改造之后会让碎片规整的能力发挥的更充分,节省的资源会更多,节省的过程也会更安全。
换个角度说,当用户的高可用改造未开始或在推进阶段时并不意味着自动规整的失效。只是在运行效率上会对应放缓。
运行流程¶
自动规整的运行流程中的每个节点都需要将安全与自动相结合。其重点体现在只挑选合适的节点与合适的 pod 进行规整动作。不满足条件的节点不应被规整,不满足调度要求的 pod 不应该被驱逐。只有在保证业务安全的情况下规整动作才能进行。
开启前 - 客户可感知可控制¶
- 提供效果测算工具,让客户感知碎片规整收益
- 灵活可配的策略配置,客户可配置不同类型节点、资源进行不同策略的自动规整
- 灵活的灰度配置,用户可按照业务、节点级别进行灰度
规整过程 - 平台保障碎片识别准确度、结合模拟调度保障规整稳定性¶
- 近实时的碎片评估,综合评估节点装箱率、资源闲置数、业务类型、资源类型等因素,挑选最合适的节点贴合业务需求进行规整
- 完善的模拟调度、可配置规整速度、多级熔断策略保障业务安全
- 多资源类型的规整支持,支持 cpu、memory、带宽、gpu,用户可自定义对应权重与策略
规整后 - 客户实时观测、随时中断¶
- 自动规整全流程有对应 metrics 暴露,易于监控
- 规整策略热加载,用户可随时调整,即时生效
展望¶
自动规整是从集群管理人员的视角出发,面向集群所有者资源效率最大化所设计的工具。其工作远景并不仅仅限于即有资源情况的规整。用户的资源千差万别,对应的对于资源管理的需求也非常多样,所以自动规整理应做对应的适配:
- 支持更多资源类型,用户可以自定义需要规整的资源并配置对应权重、策略
- 不仅支持资源维度的规整,还需要和 PlacementPolicy 配合,自动感知最优调度结果,主动触发规整。定向将合适的业务调度到最优的节点上