《李洋-小米容器资源画像体系构建与业务实践.pdf》由会员分享,可在线阅读,更多相关《李洋-小米容器资源画像体系构建与业务实践.pdf(40页珍藏版)》请在三个皮匠报告上搜索。
1、演讲人 李洋 by 小米目录资源浪费导致集群容量不足,发布“pending”,间接导致无法容纳更多的业务,导致集群资源利用率低分配率在很高的情况下,利用率却不足分配率的50%,说明有大量的资源分配出去却没有得到充分的使用近7天的集群cpu均值利用率峰值(usage/capacity):39%近7天的集群cpu申请率均值(cpu-request/allocatabel):91%于此同时 cpu的使用量/cpu的request(mid的资源):日均峰值仅有30%左右,说明业务申请的request和真实使用的usage偏差也很大。在原生静态分配资源调度策略的基础上加持了实时负载感知调度策略虽然可以保
2、障调度时刻节点不会造成热点问题,但无法评估未来一段时间的稳定性当前 HPA 的自动扩缩容虽然能够实现动态调整,但存在以下两大问题:扩容滞后,无法提前响应风险-HPA 仅在应用负载超出设定阈值后才会触发扩容,这意味着容量风险已经出现,扩容只能起到应急作用,而无法提前规避风险(对于启动时间较长的负载影响更大)。负载波动导致无效缩容-负载短期波动较大时,可能触发不必要的缩容操作,进一步影响系统稳定性。以上线上的真实case,围绕云基础资源,带有很强的预测色彩,与传统的资源策略不同,需要加持各种算法的能力才可以实现,我们内部把此类领域统筹到了画像维度。希望借助画像的能力,来突破现有策略的瓶颈。猎罪图鉴
3、:1.画像师沈翊根据受害人描述的嫌疑犯特征画出肖像-肖像成为了一种办案辅助工具2.刑警队长杜城基于肖像,快速定位罪犯,绳之以法-画师与警察配合,提高了办案效率画像是一个可以准确衡量事物特征,让上下游提高效率的工具。有了画像的理解铺垫,我们在k8s场景下,引出了资源画像的概念:资源画像,就是围绕着k8s中最根本的资源方向,对不同类型的负载分层分类的刻画出所需要的特征数据,让上下游策略更加丰富和合理画像的设计要求:1.解耦,让上层策略更关注策略的本身,而不是如何去获取数据,聚合数据,分享数据2.画像组件自身也可以独立跟进业界新技术,产出更多的负载特征,让上层策略更加丰富或者更加合理静态模块依靠平台
4、,k8s-informer等获取并持续同步集群最新拓扑信息动态模块依靠prometheus定期获取不同负载真实指标,通过算法多维聚合,产出特征,实时,预测数据边缘建设账单输出,预测可视化,准确性巡检等开源VPA核心推荐算法是将负载历史用量数据以半衰指数直方图为输入,计算 cpu/memory 资源推荐值我们借鉴了该原理,并衍生出了时序的概念,希望能将预测的能力扩展到各种维度的策略中从promethheus取某服务过去7天的真实cpu用量序列当作预测的原始样本,期间涉及如何减少对prometheus查询的压力,例如时段拆分,令牌桶限制等预处理历史数据:填写缺失数据(斜率补齐)删除极端异常值(整体
5、采样点分位数去除异常点)平滑处理(滑动窗口进行样本标准差去毛刺)时域转频域FFT:将时序拆分成不同频率、相位、振幅的信号组合(反推可以生成不同形状的序列)周期图:按振幅的值进行构图,候选周期:周期图中幅值明显高于其它点的点,我们认为是候选周期。图片来源 https:/ https:/ https:/ https:/gocrane.io/zh-cn/docs/core-concept/timeseries-forecasting-by-dsp/存量业务实例迭代发布或者扩容时,借助mutating-webhook,将预测序列的max值作为推荐值来调整用户资源申请,既能保障业务稳定性,又能减少资源浪
6、费(原地更新能力受限集群版本,暂不讨论)上线半年后收益:usage峰值/request的比率均值从30%-70%及以上,部分集群可以到90%,资源浪费减少了30%,累计减少5W+CPU资源浪费众所周知,容器方便快捷的弹性能力一直是相较于传统裸金属时代最大的优势,业务上云很大的原因也是来自于k8s提供了负载粒度的弹性扩缩。因此画像在VPA场景有了稳定收益后,我们并没有停止探索,借助workload维度的预测序列,我们又构思了HPA的预测能力来解决业务的困扰:扩容滞后,无法提前响应风险-HPA 仅在应用负载超出设定阈值