降本之源 云原生成本管理白皮书 降本之源 云原生成本管理白皮书 编写单位 腾讯云计算(北京)有限责任公司中国信息通信研究院 作业帮教育科技(北京)有限公司 腾讯云原生让用云更简单更有效 目录CONTENTS 前言01 一、背景介绍02 二、云原生成本管理模型03 2.1资源利用率现状04 2.2云原生成本管理模型08 2.2.1成本洞察08 2.2.2成本优化08 2.2.3成本运营09 三、最佳实践10 3.1成本洞察10 3.1.1成本采集及资源追踪10 3.1.2资源使用可视化10 3.1.3费用可视化11 3.1.4成本分配11 3.1.5账单管理13 3.2成本优化14 3.2.1设置合理的资源请求和限制14 3.2.2动态调度17 3.2.3多维度弹性19 3.2.4在离线混部22 3.2.5GPU共享25 3.2.6优化矩阵27 3.3成本运营27 3.3.1建立成本优化团队28 3.3.2推动成本意识文化28 3.3.3数据驱动成本优化29 3.3.4在流程中考虑成本29 3.3.5量化成本优化交付的业务价值29 四、总结31 五、企业客户降本案例32 前言 云原生使组织能够在现代云环境(例如公共云、私有云和混合云)中构建和运行可扩展的应用程序,更快地创新并使企业能够更敏捷地对市场作出反应。 凭借弹性计算、自动扩展、计量计费和按使用付费模型等功能,云原生计算可帮助组织摆脱昂贵的永远在线的基础架构,并将这些节省用于新功能开发。冗余、容错、松散耦合的服务和云原生架构自动化的自动恢复导致的弹性增加和停机时间减少也可能导致间接成本节约。 使用容器和微服务构建应用程序的一个巧妙之处在于,云原生应用程序使开发人员可以更轻松地访问和重用为早期项目创建的组件。这有几个云原生的优点,可以降低开发成本并制作更好的应用程序: 降低开发过程的复杂性:开发人员可以将更多时间花在项目的细节上,而不是构建通用框架上。它还允许在更短的时间内开发更复杂的应用程序。 缩短上市时间:更快的交付意味着更快的客户更满意,这也意味着抓住时间敏感机会的潜力。 简化测试:经过审查的微服务出现的问题更少,减轻了管道后期的负载。当开发人员知道服务有效时,他们所要做的就是设计兼容性。 模块化设计:模块化设计使外观和功能的标准化更容易。拥有多个应用程序或服务的公司可以利用这一点来降低客户的学习曲线。 云原生是应用程序开发的未来,具有巨大的业务影响潜力——能够快速有效地将想法转化为生产。云原生已赋能许多其他技术,例如边缘计算、人工智能、区块链、5G应用等。 抓住云原生变得特别重要,你准备好了以下了没: 1.创建一个更加面向服务的组织。而不是传统的基于功能的结构,围绕特定的服务或能力组织您的团队。 2.使用现代和最新的架构。云原生意味着使用微服务和反应速度更快的架构类型。 3.重新组织您的架构以跟上云原生开发的步伐。业务应该能够以与技术人员相同的速度足够快地生成需求。 4.大多数云原生关键基础设施都是开源的,例如Kubernetes,你知道如何参与开源社区以了解云原生的最新发展,甚至成为贡献者的一份子吗? KeithChan CNCF中国区总监兼Linux基金会亚太区策略规划总监、腾讯云TVP 一、背景介绍 数字经济已成为我国经济增长的重要引擎,云计算从部分企业数字化转型的载体,转变为整个经济社会发展的基石与枢纽。万千企业数字化转型提速换挡,对云计算的使用效能提出了更高的要求,云计算迎来了全新的发展机遇。 相较于传统云计算架构,云原生具备更灵活的资源管理、更敏捷的应用迭代、更高效的模块协同以及更稳定的业务保障能力,云原生带动技术架构、应用效能、云化效益的全方位提升,为企业数字化转型提供了有效的实践工具和方法论。 根据中国信息通信研究院调查数据显示,云原生已进入黄金发展期,其核心技术开始在大规模生产环境中深入应用,金融、政府、制造、电信、医疗等行业的云原生用户占比较2020年均有显著提升,云原生化开始从业内的头部企业逐步下沉到中小企业,从领先企业的尝鲜变为主流企业的必备。同时,云原生技术给企业带来的价值中,提升资源利用率节约成本连续两年排名第一,2021年已有九成用户认可该项价值,排名前五的另外四项价值分别是:提升弹性效率、提升交付效率、简化运维系统以及便于现有系统的功能扩展。云原生已成为企业基于云实现降本增效的最佳实践。 但随着企业用云程度不断加深,云上支出浪费严重,云原生平台自身的成本治理成为企业上云突出诉求。弹性按需是云原生的资源利用优势,但如果资源配置策略设置不合理可能会导致资源的浪费;云原生资源利用的计量方式如果不够灵活,会使得企业难以准确调控用云成本;云边缘、混合多云、云数智融合等模式在帮助提升工作效率、实现应用灵活部署的同时也带来了异构资源管理的新挑战。因此,企业在应用云原生架构之后,需要考虑如何管理、优化和使用云原生服务,如何通过降低云原生成本,进一步提升业务的数字化转型效果。云原生成本管理面临问题难定位、路径难选择、成效难持续三大挑战,资源成本优化是云原生降本的关键路径。 云原生成本管理一是需要掌握成本支出态势,准确定位资源浪费的根源;二是需要选择适合平台架构和业务特点的资源优化策略,并规避因资源优化导致对业务稳定性的影响;三是实现成本优化后还需要保证其持久性。资源成本优化从基于账单优化的成本可视、基于资源优化的成本节约以及基于模式优化的成本运营从三方面帮助降低云原生平台成本。 《云原生成本管理白皮书》将基于中国信息通信研究院与腾讯云对行业发展趋势和企业客户诉求的准确把握、对云原生优化的技术研究与实践经验,提出一套体系化的云原生成本优化方法论和最佳实践路径,结合行业优秀案例,帮助企业改善用云成本充分发挥云原生的效能和价值,为企业的数字化转型提供可靠的保障。 二、云原生成本管理模型 云原生并非一项单纯的技术,更是一种思想,是技术、企业管理方法的集合,云原生追求的是在包括公有云、私有云、混合云等动态环境中构建和运行规模化应用的能力,追求的是业务持续平滑的变更能力。 Kubernetes是云原生技术栈的核心,是众多云原生项目的粘合剂。Kubernetes遵循声明式系统原则,将其管控的对象都抽象成标准API,并通过多种控制器完成云原生平台的高度自动化。比如云用户可以通过定义Pod对象,并指定需要运行的容器镜像,以及容器所需的CPU、内存等计算资源。该对象被提交至Kubernetes以后,Kubernetes会依据用户请求运行容器进程,并按需求确保该应用进程的资源配额。 这使得应用可以以较低成本接入到Kubernetes平台中来,并依靠Kubernetes自动化机制实现低运维乃至免运维。基于监控平台收集的数据,Kubernetes可根据应用的实时指标数据,预测应用资源用量,并通过自动化横向或纵向扩缩容能力,及时调整应用的副本数量以及资源用量,及时回收空闲资源,提升资源使用率。 提升资源利用率是云原生技术栈的核心目标之一,资源利用率的提升意味着以更少的计算节点用承载更多的应用实例,极大的降低云用户的资源开销,也契合国家节能减排的政策号召。 2.1资源利用率现状 根据中国信息通信研究院调查数据显示,云原生技术给企业带来的价中,提升资源利用率以节约成本连续两年排名第一,2021年,已有九成用户认可该项价值。 选项 2020年 2021年 提升资源利用率以节省成本 76% 90.59% 提升弹性伸缩效率 63% 76.98% 提升交付效率 38% 66.83% 简化运维系统 30% 67.57% 开放架构方便现有系统上的功能扩展 25% 48.02% 如图1所示,《2020年CNCF中国云原生调查》报告中指出,生产系统中使用Kubernetes的比例已从2019年的72%增长到了82%,越来越多的企业在云上使用基础设施资源、通过Kubernetes平台来管理应用,Kubernetes已经无处不在。 图1Kubernetes近年部署率 但是,随着企业用云程度加深,越来越多的应用迁移到云原生架构上,原本天然具备降本增效特点的云原生架构如果资源配置不当也会引起大量云上资源闲置、云支出浪费。2021年CNCF《FinOpsKubernetesReport》调研报告显示,迁移至Kubernetes平台后,68%的受访者表示所在企业计算资源成本有所增加,36%的受访者表示成本飙升超过20%,调查结果如图2所示。这都说明即使是资源利用率更高的云原生架构也需要合理的资源成本管理。 图2迁移至Kubernetes平台后成本变化调查结果 Kubernetes集群的成本主要集中在工作节点的运行成本,资源利用率过低是计算成本高企的最主要原因。在Kubernetes集群中,资源利用率体现为运行的所有Pod消耗的资源与集群上可用资源总量的比率,据麦肯锡早期报告,全球服务器资源利用率不到6%,资源利用率低下导致了大量的资源浪费。 针对相同统计口径,腾讯云对1000多云客户进行了资源利用情况分析,抽样超过一万计算节点,实际 使用率如图3所示: 42%的节点资源利用率低于10% 72%的节点资源利用率低于20% 15%的节点资源利用率在20%-30% 只有不到13%的客户点利用率大于30% 图3资源利用率调查 将统计数据汇总,我们可以看到,计算节点的平均资源利用率在10%左右,这意味着云用户90%的计算资源成本是闲置的,这造成了高企的云成本,形成了极大的浪费。 针对此种状况,下文分析了主要原因: 资源预留过多,普遍存在50%以上的浪费 KubernetesPod的资源需求(ResourceRequest)字段用于管理容器对CPU和内存资源预留,保证容器至少可以达到的资源量,该部分资源不能被其他容器抢占。如何设置资源需求是一个难题,若设置过小,当业务负载变高时,业务所需的计算资源无法被确保,可能会造成计算变慢、延迟过高等影响业务指标的情况。 为避免此情况发生的可能性,用户通常会将Request设置得很高,以保证服务的可靠性。但实际上,业务在大多数时段时负载不会很高。以CPU为例,图4是某个实际业务场景下容器的资源预留 (Request)和实际使用量(CPU_Usage)关系图:资源预留远大于实际使用量,两者之间差值所对应的资源不能被其他负载使用,因此Request设置过大势必会造成较大的资源浪费。 图4CPU资源利用率 业务资源使用率波峰波谷现象普遍,低峰时资源浪费严重 在线业务流量通常有较明显的波动周期,且波谷时间常大于波峰时间,波谷时期的资源有较多闲置,这也成为了资源利用率较低的另一主因。例如公交系统通常在白天负载增加,夜晚负载减少;游戏业务通常在周五晚上开始出现波峰,在周日晚开始出现波谷。如图5所示,同一业务在不同的时间段对CPU资源的用量不同,若用户以固定资源需求申请CPU资源,当业务负载较低时,CPU资源利用率就会很低。 图5资源利用率的波动现象 不同类型的业务,对资源的需求不同 计算作业依据其提供服务的特性和业务目的可分为在线业务和离线业务两类:在线业务通常白天负载较高,且对时延要求较高,必须优先调度和运行;而离线的计算型业务通常对运行时段和时延要求相对较低,可以在在线业务负载波谷时段运行。此外,有些业务属于计算密集型,对CPU资源消耗较多,而有些业务属于内存密集型,对内存消耗较多。如图6所示,将负载峰值在不同时段的业务,或者将在线和离线作业混部在一起,可有效的以离线作业填补在线作业的负载低谷时段,进而提升资源利用率。将需求不同资源的作业有效的部署在相同节点,可充分利用各种资源,提升总体资源利用率。 图6负载峰值在不同时段的业务混部 针对资源利用率低的现状,我们对数十个客户进行了访谈,了解到他们在成本管理时的挑战: 相比于传统云服务器,Kubernetes的动态性为资源计量和成本分摊变得更复杂,Kubernetes作为一个开放