查看原文
其他

kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析

詹雪娇 张鹏 腾讯云原生 2021-07-14

詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作。

张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验。目前主要负责腾讯云TKE集群和运维中心开发工作。

引言

降本增效从云计算发展至今一直都是企业上云最核心的关注点,无论是在线业务还是大数据、AI业务,都非常依赖算力的消耗,成本问题都是企业上云进行决策的核心因素。

从云计算本身来看,单纯把业务从 IDC 搬迁上云不修改任何业务架构,提高计算资源利用率需要非常大的运维成本和人力成本投入到改造业务适配弹性伸缩和业务可调度性中。随着云原生技术的普及和推广,容器和 kubernetes 等技术能够天然的与业务、基础设施结合,简化资源管理、感知业务类型、自动弹性扩容和调度。

为帮助企业在使用云原生技术时,更好的实现降本增效,腾讯云容器团队推出《kubernetes 降本增效标准指南》系列,包括且不限于基于成熟度模型提供资源利用率提升建议、多维度弹性资源使用建议、智能负载推荐提升精确度、腾讯云云原生成本管理指导手册等,与此同时也将推出系列助力容器化降低成本的能力套件,如容器成本组成视图、成本预测评估工具、成本监控工具、成本定时报告等,以及配套的智能负载值推荐、成本感知调度、竞价实例回收动态控制器等,敬请期待。

本文中,腾讯云容器团队抽样调研了已授权的企业客户,对资源使用情况进行了一次真实的数据分析,以实际的行业数据介绍容器化对资源利用率的可提升空间。

资源利用率数据剖析

本次调研抽样了1000+已授权的企业客户和个人客户的数据,其中企业客户750, 个人开发者250+,统计节点数超5W+。

IDC的计算资源冗余,平均利用率低至10%

IDC 数据中心由于缺少弹性能力,为保证业务应对突发请求等情况,普遍资源会存在冗余,资源使用率低。

首先我们来看看全球数据中心的利用率。麦肯锡的一份研究报告表示[1],企业管理者在考虑稳定性及提高可用性的同时,也应该将新的业务重点放在遏制效率低下和成本上升的问题上。调研结果显示,许多数据中心的服务器多达30%的功能是“失效”的,而服务器的平均每日利用率不到3%;而在整个数据中心,服务器的平均每日利用率通常最高仅为6%。以上数据表明,数据中心的服务器成本及资源消耗方面会给企业造成巨大的“浪费”。

图1: 经授权的采集个别腾讯云客户物理机平均资源使用率情况( 样本数200+)
上图是一个典型的客户机器白天业务繁忙,晚上资源空闲的情况, 由于物理设备弹性能力弱,计算资源往往要按业务峰值再加一定的 Buff 来储备资源, 甚至为保证业务稳定性要预留较大的资源 buff,因此在资源使用上会存在极大的浪费。

IDC上云后资源利用率提高有限

企业上云需要进行严谨细致的调研工作, 包括收集云厂商硬件、网络环境、产品能力等内容,往往需要从多个不同的视角进行分析,实际上云过程中第一步就是先将基础设施上云,包括计算资源、存储、服务器、数据库等,保证在业务和平台系统尽量改动小的情况下,顺利迁移上云。该步骤并不会显著提高实际的资源使用率,但有利于降低企采购基础设施,以及建设和运维的成本。

图2: 普通非容器化计算节点资源使用率分析数据(样本数4W+)
根据上述调研样本的分析, 绝大多数非容器化的业务在计算资源利用率上整体不高,并且企业为了保证每个业务之前良好的隔离性,一台机器上一般只会部署一个业务,即每个业务都是独立部署且分开管理的,单个业务都会独占一部分专属资源。在此业务低谷时期,其他业务不能利用这部分专属的资源,以致造成资源浪费。基础设施上云后,企业可根据业务的属性进行云化改造,充分利用云的弹性能力,让资源利用率进一步提高,降低IT投入成本。从上述实际调研数据分析来看,仅利用云IaaS层的弹性伸缩,来提升资源利用率,其空间有限,并会给新业务改造和后续的运维带来额外的成本投入。

业务云原生化改造,资源利用率提升最高可达60%~70%

图3: 普通节点与TKE节点资源使用率分析(样本数:4W个普通非容器化节点, 1W个TKE节点)
客户容器化后整体平均的CPU利用率从上图来看,整体提高并不多,主要原因是,虽然大量业务已经容器化,但并未进行可动态扩容的改造。

图4:部分配置了节点池弹性伸缩业务应用启用了HPA平均资源使用率图示(样本1000+TKE节点)

图5:所有抽样样本中平均资源使用率分布情况(样本数1W+TKE节点)

从图3、4、5对比可以看到,不同企业容器化后,其资源利用率差异非常大,低的不到10%, 高的可达60%-70%。除了企业本身不同的业务属性之外,腾讯云原生团队还对抽样客户进行了深入的调研和访谈,了解到不同企业架构部署上存在较大的差异,这是造成企业资源利用率不同的主要原因。
  1. 资源利用率低的企业,在使用容器时,前期更多仅关注在容器解决环境一致性的问题上,实际上并未充分利用好容器的弹性能力, 并且在部署模型上,单节点的容器密度不高,导致整体资源利用率跟容器化改造前差异不大。

  2. 从实际数据看,业务即便已经容器化,但在一定时间內的资源使用,仍然存在波峰波谷不均的情况。因此,为了保证服务的可靠性和稳定性,一般会以流量峰值为基线去配置资源规格,以保证高并发时业务以良好的性能运转,但是过了峰值期之后(一般时间占比较小),业务回到峰谷状态,实际仅使用一小部分资源,从而导致在峰谷时段,造成大量的资源浪费。

  3. 而资源利用率高的企业,在业务容器化后,更多利用了业务混合部署,大大提高了容器部署密度,让单节点容器密度平均在1:10,进而提升资源利用率。

  4. 同时企业如果充分利用好了容器的弹性伸缩能力,资源利用率也是可以大幅提升的。对于非容器化的、存在波峰波谷的业务,即使配置了弹性伸缩能力,启动速度也是分钟级的,也还是难以保证在短时间內启动大规模计算资源来应对高并发需求。而容器是秒级的启动速度,使得容器化的业务具备高密度、高弹性的特性,在面对突发访问量时也能轻松应对。在这种业务模式下,容器化利用不同级别的自动弹性伸缩能力,从而解决了在低谷时期的资源浪费问题。

    容器弹性伸缩能力如下:HPA(Horizontal Pod Autoscaler):在达到用户自定义阈值(CPU利用率、CPU使用量等)时在30s內自动扩缩pod数量,当受到节点资源限制导致 Pod pending 时,触发节点层级的扩缩容,即CA(Cluster Autoscaler):两种资源粒度的弹性伸缩能力保证客户在合适的时间分配合适的资源,最大限度保证资源的高效利用。另外,基于K8s的调度编排能力,支持按照Pod真实负载进行动态调度,提升节点资源利用率;在线业务低负载运行时,同时部署“对延时不敏感”的离线业务,提高资源利用率。

提升资源利用率的关键点

腾讯内部容器化业务资源利用率也是权衡容器化深度的关键指标,根据腾讯云原生团队对容器弹性伸缩的实践经验,通过不同维度的弹性能力展开来看容器化后资源利用率提升的关键点, 首先看看 Kubernetes 各个组件的主要作用:

  1. HPA:维持应用的期望状态(通过调节应用副本数)

  2. VPA:(Vertival Pod Autoscaler)预估应用的实际使用资源量

  3. 调度:驱动应用的期望状态到资源的期望状态的引擎

  4. CA:维持资源的期望状态(通过调节节点数)

那什么是理想的弹性伸缩?怎么样的弹性伸缩能帮助我们更好的节约成本呢?简单点说,就是在用户需要的时候提供合适的资源。

  • 怎么保证在需要的时候伸缩?相关组件要够灵敏,响应要快。

  • 怎么保证提供的资源合适?在计算 StatusApp/StatusRes 时要精确。

到这里,可以明确弹性伸缩的两个核心问题:

关键点1: 灵敏度,可以从 HPA 扩容速度、CA扩容速度、节点供应速度、业务扩容方式多维度进行提升。

关键点2: 精确度,从应用的期望状态和资源的期望状态为切入点,从提高CA扩容精确度 / VPA推荐 request 的精确度等角度进行提升。

资源利用率成熟度模型

针对本次调研的数据分析,腾讯云原生团队提出了容器化资源利用率成熟度模型。第一阶段:传统部署模型, 业务为应对不同时间段计算资源使用不同的情况,必须以最高使用资源的峰值加一定的 buff 进行基础设施的采购,平均利用率降低。

第二阶段:简单容器化改造后的业务,上云并容器化改造,利用了容器进行业务混合部署,一定程度提高了资源利用率。

第三阶段:业务进行微服务改造,业务可利用容器和云的弹性伸缩能力,结合 Kubernetes 的HPA、VPA、CA 等能力,高峰扩容、空闲缩容,极大提高资源利用率。

第四阶段:极致利用云和容器化后的弹性, 提高弹性伸缩灵敏度和精度, 有离线业务的进行在离线混布,极致提高平均资源利用率。

后续

本文通过实际企业业务数据来诠释容器化跟计算资源利用率的现状和基本原理,为助力后续企业使用云原生技术进行业务降本增效,腾讯云容器团队将推出系列的《kubernetes降本增效标准指南》,包括但不限于资源利用率提升建议、多维度弹性资源使用建议、智能负载推荐提升精确度、腾讯云云原生成本管理指导手册等。与此同时也将计划推出系列的助力容器化降本成本的能力套件,如容器成本组成视图、成本预测评估工具、成本监控工具、成本定时报告等,以及配套的智能负载值推荐、成本感知调度、竞价实例回收动态控制器等。敬请期待。

特别鸣谢

感谢以下客户对本次报告提供真实数据支撑。
作业帮,致力于为全国中小学生提供全学科的学习辅导服务,累计用户设备安装突破8亿,月活用户约1.7亿,是中小学在线教育领军品牌。
作业帮于2020年4-5月份将部分业务逐渐接入腾讯云容器服务TKE,涉及数千业务应用,数十万计算核数,极具规模化和复杂度,除却稳定性和效率之外,作业帮对成本也表示了高度关注。我们以资源利用率作为切入点。对于作业帮的在线业务,我们发现其表现出了非常明显的时间周期特性:
  • 高峰时段的流量是平时峰段的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%。

云集,主打社交驱动的会员电商平台,为电商平台会员提供美妆个护、手机数码、母婴玩具、水果生鲜等多品类的商品选择。于2019年年底接入TKE,目前常用应用已基本完成容器化。云集反馈,容器化之前,机器的平均CPU利用率在高峰期都不会超过10%,浪费极其严重。容器化之后总体CPU使用率达到16.6%,成本节省超过50%。



  往期精选推荐  

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存