2022年11月10日,在中国信通院、腾讯云、FinOps产业标准工作组联合发起的《原动力x云原生正发声 降本增效大讲堂》系列直播活动第10讲上,腾讯Light云计算平台负责人魏巍分享了Eunomia云原生资源编排优化实践。本文整理自魏巍的分享。
云上资源优化背景
相较传统的IDC部署方式,容器化部署在物理硬件、操作系统之上增加了一层容器运行时。当前云上部署的APP及二进制等均运行在容器运行时之上,Eunomia编排器的作用范围也在于此。
我们认为,上云的过程中并没有新技术,更多是一种新部署理念的产生。在上云之后,应实现CPU、内存等资源利用率上升,成本大幅下降,然而当前上云时的资源浪费现象十分常见,造成浪费的原因可分为三种。
- 应用资源使用设置不合理
云原生的资源管理方式要求应用在部署之前,需提前设置好CPU、内存、磁盘的最小和最大资源使用量,并且之后不能改动(除非重建所有实例),这就要求应用在正式上线前预估其资源需求。
线上的资源需求可以通过压测来模拟,但难免和实际情况有出入。此外,应用上线之后,其资源使用会随着业务、策略的动态更新而发生变化,因此在创建之初设置的资源使用量并不能很好地反映实际资源需求,容易造成资源浪费或资源不足。
- 同类Pod各项资源有差异
在实际运行过程中,即使是相同的Pod,其CPU、内存、磁盘、网络等监控指标也会有很大的差异,极端情况下相差甚至会高达60%,有时还会有大部分Pod的CPU利用率低、个别Pod的CPU利用率却长期在90%以上的情况产生。对此最稳妥的解决方式是扩容,但这会造成资源的大量浪费。
- 多维度空闲资源碎片化严重
集群在运行一段时间后,随着节点不断上、下架,Pod不断扩、缩容,会有越来越多的空闲资源分散在整个集群中,此类多维度闲散资源通常难以集中并下架,最终会造成资源的浪费。
资源使用的痛点、难点
- 突发流量洪峰导致资源不足
游戏安全服务在正常运行时有着明显的周期性,并且周期与周期之间峰值变化不大,一般情况下晚上九、十点流量最高,后半夜流量最低。但是在某些突发情况下(突发性热点、大型节假日等),服务的请求量会在短时间内大幅上涨,造成资源不足,影响服务正常运行产生告警。
- 资源维度有限
原生的调度策略只基于CPU、内存、磁盘三个维度来判断节点资源是否充足。然而实际情况下,磁盘IO、网络IO、连接数、定时器等资源同样是决定业务是否正常运行的关键,因此资源维度的匮乏会对业务正常的保障造成影响。
为了解决资源浪费与使用时的痛点,业界有诸多不同的解决方案,如HPA、超卖等。
- HPA:基于业务实际运行的性能指标(一般位CPU)自动变更Pod数量;
- 超卖:基于节点监控,按一定比例提升CPU或Mem可分配资源上限;
- 反亲和性:设置Pod反亲和属性,使得相同Pod尽量部署在不同节点,优化均衡性;
- 在离线混部:在同一集群混合部署在离线业务,离线业务在在线业务的低峰期扩容,提高低峰期利用率;
- Deschedule:定期扫描节点资源和部署情况,通过驱逐Pod平均节点负载以及均衡Pod部署;
- Dynamic Scheduler:基于节点实际负载调度Pod,优先调度到低负载节点,优化均衡性;
- 高低水位线:设置高低水位线,扩容时Pod优先调度到负载处于高低水位线之间的节点,缩容时优先部署在