作者:京东科技 徐宪章
1 什么是超容量扩容
超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容。通常情况下HPA、ClusterAutosacler和超容量扩容同时使用以满足负载敏感度高的业务场景。
超容量扩容功能是通过K8S应用优先级设置和ClusterAutosaler共同作用实现的,通过调整低优先级空载应用的数量,使集群已调度资源保持在较高的状态,当其他高优先级应用因为HPA或者手动调整应用分片数量时,可以通过驱逐空载的方式腾空调度资源却保高优先级应用可以在第一时间调度并创建。当空载应用从被驱逐转变为等到状态时,ClusterAutosaler此时对集群机型扩容,确保下次高优先级应用调度时,有足够的空载应用可以被驱逐。
超容量扩容功能的核心为OverprovisionAutoscaler(超容量扩容)和ClusterAutosaler(集群自动扩容),两者都需要通过不断调整参数配置去适配多重业务需求需求。
超容量扩容功能在一定程度上降低了资源使用饱和度,通过增加成本提高了集群和应用的稳定性,实际业务场景中需要根据需求进行取舍并合理配置。
2 什么情况下需要使用超容量扩容
当集群值开启Hpa和Autoscaler时,在发生节点扩容的情况下,应用调度时间通常为4-12分钟,主要取决于创建工作节点资源以及工作节点从加入集群到Ready的总耗时。以下为最佳和最差效率分析
最佳案例场景-4分钟
• 30秒 - 目标指标值更新:30-60秒
• 30秒 - HPA检查指标值:30秒 - >30秒 - HPA检查指标值:30秒 - >
• <2秒 - Pods创建之后进入pending状态<2秒 -Pods创建之后进入pending状态
• <2秒 - CA看到pending状态的pods,之后调用来创建node 1秒<2秒 -CA看到pending状态的pods,之后调用来创建node 1秒
• 3分钟 - cloud provider创建工作节点,之后加入k8s之后等待node变成ready
最糟糕的情况 - 12分钟
• 60 秒 —目标指标值更新
• 30 秒 — HPA检查指标值
• < 2 秒 — Pods创建之后进入pending状态
• < 2 秒 —CA看到pending状态的pods,之后调用来创建node 1秒
• 10 分钟 — cloud provider创建工作节点,之后加入k8s之后等待node变成ready
两种场景下,创建工作节点耗时占比超过75%,如果可以降低或者完全不考虑该时间,将大大提高应用扩容速度,配合超容量扩容功能可以大大增强集群和业务稳定性。超容量扩容主要用于对应用负载敏感度较高的业务场景
-
大促备战
-
流计算/实时计算
-
Devops系统
-
其他调度频繁的业务场景
3 如何开启超容量扩容
超容量扩容功能以ClusterAutoscaler为基础,配合OverprovisionAutoscaler实现。以京东公有云Kubernetes容器服务为例
3.1 开启ClusterAutoscaler
https://cns-console.jdcloud.com/host/nodeGroups/list
• 进入 “kubernetes容器服务”->“工作节点组”
• 选择需要对应节点组,点击开启自动伸缩
• 设置节点数量区间,并点击确定


最低0.47元/天 解锁文章
2258

被折叠的 条评论
为什么被折叠?



