kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
引言
降本增效从云计算发展至今一直都是企业上云最核心的关注点,无论是在线业务还是大数据、AI业务,都非常依赖算力的消耗,成本问题都是企业上云进行决策的核心因素。
从云计算本身来看,单纯把业务从 IDC 搬迁上云不修改任何业务架构,提高计算资源利用率需要非常大的运维成本和人力成本投入到改造业务适配弹性伸缩和业务可调度性中。随着云原生技术的普及和推广,容器和 kubernetes 等技术能够天然的与业务、基础设施结合,简化资源管理、感知业务类型、自动弹性扩容和调度。
为帮助企业在使用云原生技术时,更好的实现降本增效,腾讯云容器团队推出《kubernetes 降本增效标准指南》系列,包括且不限于基于成熟度模型提供资源利用率提升建议、多维度弹性资源使用建议、智能负载推荐提升精确度、腾讯云云原生成本管理指导手册等,与此同时也将推出系列助力容器化降低成本的能力套件,如容器成本组成视图、成本预测评估工具、成本监控工具、成本定时报告等,以及配套的智能负载值推荐、成本感知调度、竞价实例回收动态控制器等,敬请期待。
本文中,腾讯云容器团队抽样调研了已授权的企业客户,对资源使用情况进行了一次真实的数据分析,以实际的行业数据介绍容器化对资源利用率的可提升空间。
资源利用率数据剖析
本次调研抽样了1000+已授权的企业客户和个人客户的数据,其中企业客户750, 个人开发者250+,统计节点数超5W+。
IDC的计算资源冗余,平均利用率低至10%
IDC 数据中心由于缺少弹性能力,为保证业务应对突发请求等情况,普遍资源会存在冗余,资源使用率低。
首先我们来看看全球数据中心的利用率。麦肯锡的一份研究报告表示[1],企业管理者在考虑稳定性及提高可用性的同时,也应该将新的业务重点放在遏制效率低下和成本上升的问题上。调研结果显示,许多数据中心的服务器多达30%的功能是“失效”的,而服务器的平均每日利用率不到3%;而在整个数据中心,服务器的平均每日利用率通常最高仅为6%。以上数据表明,数据中心的服务器成本及资源消耗方面会给企业造成巨大的“浪费”。
IDC上云后资源利用率提高有限
企业上云需要进行严谨细致的调研工作, 包括收集云厂商硬件、网络环境、产品能力等内容,往往需要从多个不同的视角进行分析,实际上云过程中第一步就是先将基础设施上云,包括计算资源、存储、服务器、数据库等,保证在业务和平台系统尽量改动小的情况下,顺利迁移上云。该步骤并不会显著提高实际的资源使用率,但有利于降低企采购基础设施,以及建设和运维的成本。
业务云原生化改造,资源利用率提升最高可达60%~70%
图5:所有抽样样本中平均资源使用率分布情况(样本数1W+TKE节点)
资源利用率低的企业,在使用容器时,前期更多仅关注在容器解决环境一致性的问题上,实际上并未充分利用好容器的弹性能力, 并且在部署模型上,单节点的容器密度不高,导致整体资源利用率跟容器化改造前差异不大。
从实际数据看,业务即便已经容器化,但在一定时间內的资源使用,仍然存在波峰波谷不均的情况。因此,为了保证服务的可靠性和稳定性,一般会以流量峰值为基线去配置资源规格,以保证高并发时业务以良好的性能运转,但是过了峰值期之后(一般时间占比较小),业务回到峰谷状态,实际仅使用一小部分资源,从而导致在峰谷时段,造成大量的资源浪费。
而资源利用率高的企业,在业务容器化后,更多利用了业务混合部署,大大提高了容器部署密度,让单节点容器密度平均在1:10,进而提升资源利用率。
同时企业如果充分利用好了容器的弹性伸缩能力,资源利用率也是可以大幅提升的。对于非容器化的、存在波峰波谷的业务,即使配置了弹性伸缩能力,启动速度也是分钟级的,也还是难以保证在短时间內启动大规模计算资源来应对高并发需求。而容器是秒级的启动速度,使得容器化的业务具备高密度、高弹性的特性,在面对突发访问量时也能轻松应对。在这种业务模式下,容器化利用不同级别的自动弹性伸缩能力,从而解决了在低谷时期的资源浪费问题。
容器弹性伸缩能力如下:HPA(Horizontal Pod Autoscaler):在达到用户自定义阈值(CPU利用率、CPU使用量等)时在30s內自动扩缩pod数量,当受到节点资源限制导致 Pod pending 时,触发节点层级的扩缩容,即CA(Cluster Autoscaler):两种资源粒度的弹性伸缩能力保证客户在合适的时间分配合适的资源,最大限度保证资源的高效利用。另外,基于K8s的调度编排能力,支持按照Pod真实负载进行动态调度,提升节点资源利用率;在线业务低负载运行时,同时部署“对延时不敏感”的离线业务,提高资源利用率。
提升资源利用率的关键点
腾讯内部容器化业务资源利用率也是权衡容器化深度的关键指标,根据腾讯云原生团队对容器弹性伸缩的实践经验,通过不同维度的弹性能力展开来看容器化后资源利用率提升的关键点, 首先看看 Kubernetes 各个组件的主要作用:
HPA:维持应用的期望状态(通过调节应用副本数)
VPA:(Vertival Pod Autoscaler)预估应用的实际使用资源量
调度:驱动应用的期望状态到资源的期望状态的引擎
CA:维持资源的期望状态(通过调节节点数)
那什么是理想的弹性伸缩?怎么样的弹性伸缩能帮助我们更好的节约成本呢?简单点说,就是在用户需要的时候提供合适的资源。
怎么保证在需要的时候伸缩?相关组件要够灵敏,响应要快。
怎么保证提供的资源合适?在计算 StatusApp/StatusRes 时要精确。
关键点1: 灵敏度,可以从 HPA 扩容速度、CA扩容速度、节点供应速度、业务扩容方式多维度进行提升。
关键点2: 精确度,从应用的期望状态和资源的期望状态为切入点,从提高CA扩容精确度 / VPA推荐 request 的精确度等角度进行提升。
资源利用率成熟度模型
针对本次调研的数据分析,腾讯云原生团队提出了容器化资源利用率成熟度模型。
第二阶段:简单容器化改造后的业务,上云并容器化改造,利用了容器进行业务混合部署,一定程度提高了资源利用率。
第三阶段:业务进行微服务改造,业务可利用容器和云的弹性伸缩能力,结合 Kubernetes 的HPA、VPA、CA 等能力,高峰扩容、空闲缩容,极大提高资源利用率。
第四阶段:极致利用云和容器化后的弹性, 提高弹性伸缩灵敏度和精度, 有离线业务的进行在离线混布,极致提高平均资源利用率。
后续
本文通过实际企业业务数据来诠释容器化跟计算资源利用率的现状和基本原理,为助力后续企业使用云原生技术进行业务降本增效,腾讯云容器团队将推出系列的《kubernetes降本增效标准指南》,包括但不限于资源利用率提升建议、多维度弹性资源使用建议、智能负载推荐提升精确度、腾讯云云原生成本管理指导手册等。与此同时也将计划推出系列的助力容器化降本成本的能力套件,如容器成本组成视图、成本预测评估工具、成本监控工具、成本定时报告等,以及配套的智能负载值推荐、成本感知调度、竞价实例回收动态控制器等。敬请期待。
特别鸣谢
高峰时段的流量是平时峰段的20倍,是低峰时段(凌晨到5点左右)的上百倍,且流量上升曲线较陡。
因此,作业帮对于资源弹性调度的能力要求很高,在这种应用场景下,TKE为其提供了弹性伸缩的整体解决方案,利用HPA根据设置阈值调整pod副本数,与CA联动控制节点数,以保障在高并发时业务仍以良好的性能运行。同时配合离在线混部、共享GPU等解决方案,容器化之后节点平均CPU利用率从10%提升到30%,成本下降40%,接口响应提升10%。
快看漫画,漫画行业领先APP,当前漫画市场份额占有率超50%以上,APP总用户量超过2亿,MAU超4000万。公司于2019年12月份开始接入容器服务TKE,到目前为止,近千个服务里90%的应用在容器中运行。快看漫画容器化之前,由于需要应对活动、假期、热门作品等多个场景,业务流量具备突发性和周期性,因此核心业务要有数倍容量的冗余,资源无法最大化利用,还需手动扩缩容,人工干预较高。
TKE针对此类场景提供了服务分级,优化Request资源;扩缩能力,HPA,定时扩缩;离线任务,业务波谷时执行等产品能力,容器化之后资源使用率提升30%,成本下降超40%。
往期精选推荐