华为云云原生FinOps通过可视化的成本洞察和成本优化,帮助用户精细用云以提升单位成本的资源利用率,实现降本增效目标
企业上云现状:上云趋势持续加深,但云上开支存在显著浪费
根据Flexer 2024年最新的一项调查显示,当前有超过70%的企业重度使用云服务,而这个数据去年是65%。由此可见,越来越多的企业开始把业务部署在云上。企业在使用云厂商提供的云服务的同时,也在为云服务的花费买单。调查显示,平均大约有30%的云成本支出被认为是无效支出。如何节省云成本支出成为近几年上云企业最关心的Top1问题。
企业云原生化逐步深入,成本治理依然存在挑战
云原生技术当前已经成为很多企业进行数字化转型的主流方式。kubernetes提供的资源共享、资源隔离、弹性调度等能力,本身能够帮助企业提升资源使用率,降低企业IT成本。然而,2021年CNCF《FinOps Kubernetes Report》的调研报告显示,迁移至Kubernetes平台后,68%的受访者表示所在企业计算资源成本有所增加,36%的受访者表示成本飙升超过20%。其背后的原因值得深思。
云原生时代成本治理面对的挑战
云原生时代成本治理有四个矛盾点:
- **业务单元 VS 计费单元:**一般云服务(比如ECS)的计费周期比较长,可能是包月或者包年;而云原生容器的生命周期相对比较短暂,容器的弹性伸缩、故障重启等动作,都有可能导致资源的闲置率比较高。
- **容量规划 VS 资源供给:**容量规划一般是静态的,一般是按照预算或者规划提前准备容器,而资源供给是业务来驱动。业务的高峰流量冲击,升级扩容等场景,都会对容量规划造成很大的挑战。
- **统一治理 VS 多云部署:**现在很多企业使用了不止一朵云,不同的云厂商的账单接口和格式都不一样,不利于企业的多云统一成本治理。
- **成本模型 VS 云原生架构:**云厂商的成本模型相对比较简单,一般是按照物理资源来计费,比如ECS服务是以整机的价格来计费。云原生架构以应用为中心,资源的申请细化到CPU/内存等粒度。这就导致云原生场景成本可视化和成本分析比较困难。
总结下来,云原生成本治理面临三大挑战:
**成本洞察:**云原生场景如何实现成本可视化,如何快速定位成本问题、识别资源浪费?
**成本优化:**云原生成本优化的手段很多,如何采用合适的成本优化手段来实现收益最大化?
**成本运营:**企业如何构建可持续的成本治理体系与文化?
华为云云原生FinOps解决方案
FinOps 是一门将财务管理原则与云工程和运营相结合的学科,它使组织更好地了解其云支出。 它还能够帮助他们就如何分配和管理云成本做出明智的决策。 FinOps 的目标不是节省资金,而是通过云实现最大化的收入或业务价值。 它有助于组织控制云支出,同时保持支持其业务运营所需的性能、可靠性和安全性级别。
FinOps Foundation 将 FinOps 定义为三个阶段:通知、优化和运营。根据每个团队或企业完成 FinOps 的进度,公司可能会同时处于多个阶段。
**通知(成本洞察):**通知是 FinOps 框架的第一阶段。这一阶段旨在为所有利益相关者提供所需的信息,以便于他们了解情况,从而做出有关云使用的经济高效的明智决策。
成本优化:成本优化重点是想方设法节约成本。根据当前使用情况,您的组织可以在哪些方面合理调整资源规模,并从折扣中受益?
成本运营:成本运营是 FinOps 框架的最后一个阶段。在这一阶段,组织会根据业务目标持续评估绩效,然后想方设法改进 FinOps 实践。优化工作到位后,组织可以借助自动化来实施策略,在不影响性能的情况下不断调整云资源来控制成本。
华为云云原生FinOps解决方案,参照业界FinOps标准与最佳实践,为用户提供云原生成本多维可视化与多种成本优化治理手段,协助客户最大化的收入或业务价值。
云原生FinOps - 成本洞察
华为云云原生FinOps成本洞察,提供如下关键特性:
1、基于标签的资源成本归属
支持ECS、EVS等资源关联集群标签,便于集群费用汇总计算
2、基于CBC账单的精准成本计算
基于CBC真实账单进行成本分摊计算,精准划分部门成本
3、灵活的成本分摊策略
支持集群、命名空间、节点池、应用、自定义等多种维度的成本可视化与成本分摊策略。
4、支持长期的成本数据存储与检索
最大支持长达2年的成本分析,支持月度,季度,年度报表及导出。
5、工作负载快速感知,轻松应对快速弹性场景
针对应用快速弹性场景,支持分钟级的负载发现与计费能力,让所有成本无一遗漏。
云原生成本洞察的实现机制介绍:
1、集群物理资源成本 VS 集群逻辑资源成本
集群的成本可以从两个角度来计算:
- 集群物理资源成本,包括集群直接或间接关联的资源成本,比如集群管理费、ECS成本、EVS成本等。集群的物理资源成本可以从云成本账单中直观的体现出来。
- 集群逻辑资源成本,从kubernetes资源的角度,集群的成本包括工作负载的成本,再加上集群闲置资源成本和公共开销成本。
不难看出,集群物理资源成本=集群逻辑资源成本。
2、单位资源(CPU/内存等)成本计算
在集群的物理资源成本已知的情况下,如何推导出集群逻辑资源成本(如pod/工作负载),是云原生FinOps成本洞察的关键。这里核心要解决的问题是单位资源成本计算的问题。我们知道,一般的云虚拟机是按照整机的价格去售卖的,不会按照单位CPU或内存售卖。但是容器服务的资源占用是按照单位资源(CPU或内存等)来申请的。所以必须计算出单位资源的成本,才能最终计算出容器服务占用的成本。
一般云厂商单位CPU或内存的价格会有一个估算值,我们也可以按照CPU和内存的成本占比来计算单位资源成本。
3、云原生资源成本计算
从下图我们可以看出,一个Pod的资源使用是随着时间动态波动。有些时刻Pod的资源占用低于资源申请(Request),有些时刻Pod的资源占用大于资源申请(Request)。在计算Pod成本时,我们会定时采样Pod的实际使用值和Request值,并将实际使用值和Request值中的最大值用于Pod的成本计算。这是因为一旦Request值分配给Pod,那么这不是资源会被K8S预留,不会被其他Pod抢占。所有Pod需要为Request部门的资源买单。同理,如果Pod的实际使用量大于Request,那么这个Pod也需要为超出的部分买单。
基于以上原理,我们就可以得出Pod的成本计算:
将命名空间下所有的Pod成本累加,就可以得出命名空间维度的成本:
基于以上计算逻辑,华为云CCE云原生成本治理特性实现了多种维度的集群成本可视化,比如:
集群成本可视化
命名空间成本可视化
节点池成本可视化
工作负载成本可视化
4、部门成本分摊与成本分析报表
很多企业会把一个集群安装命名空间的粒度分配给不同的部门使用。那么如何对各个部门的成本进行可视化分析?
从上图可以看出,部门的成本不仅包括部门归属的命名空间的成本,还应该承担一部分公共成本。这部分功能成本包括系统命名空间成本和空闲资源成本。
华为云CCE云原生成本治理支持基于部门的成本分摊策略配置,如下图所示:
同时,基于部门的成本分摊策略,华为云CCE云原生成本治理提供了月度/季度/年度报表功能,最大支持2年的报表查询与导出。
云原生FinOps - 成本优化
云原生场景如何提升资源利用率?
据 Gartner 统计,企业CPU平均使用率不足15%,造成资源利用率低的原因有多种,典型场景有:
• 资源配置不合理:部分用户对于自己服务的资源使用情况不了解,申请资源时具有盲目性,通常申请过量资源
• 业务波峰波谷:微服务具有明显日级别波峰、波谷特性,用户为保证服务的性能和稳定性按照波峰申请资源
• 资源碎片化:不同业务部门资源池独立,无法做到资源共享,容易产生资源碎片。
容器化能一定程度上提升资源利用率,但是存在部分问题单纯依赖容器化无法得到有效解决:
• 资源过量申请:如果没有有效的资源推荐和监控机制,普遍实践还是是超额申请、积沙成塔造成资源浪费。
• 资源池统一:K8s原生调度器缺少组、队列等高阶调度能力;大数据业务存算一体难以利用容器弹性优势。
• 应用性能:单纯增加部署密度难以保证服务质量。
为了提升集群资源利用率,CCE云原生FinOps解决方案提供了多种优化手段,比如智能应用资源规格推荐、云原生混部、动态超卖等能力。
5、智能应用资源规格推荐
为了保障应用性能和可靠性,同时由于缺乏足够的可视化工具,我们总是倾向为应用申请过量的资源。为了解决这一问题,CCE云原生成本治理提供了智能应用资源规格推荐功能。该功能基于应用的历史画像数据,基于机器学习算法,为应用推荐最佳的申请值。
6、华为云云原生混部解决方案
华为云CCE云原生混部解决方案基于volcano插件,支持一键部署,为容器业务提供高低优先级混合部署,动态超卖,服务QoS保障等能力。关键能力主要包括:
- 容器业务优先级与资源隔离
- 融合调度
- **应用SLO感知:**多类型业务智能混合调度,应用拓扑感知,分时复用,超卖等;
- **资源感知调度:**提供CPU NUMA拓扑感知、IO感知、网络感知调度,软硬协同,提升应用性能;
- 集群资源规划:提供队列、公平、优先级、预留、抢占等丰富策略,统一满足高优、低优业务;
- 节点QoS管理:多维度资源隔离、干扰检查、驱逐机制。
下面重点介绍动态超卖特性:如何将节点闲置资源再利用,提升资源利用率。
动态超卖的核心原理为:将节点Request和实际使用量的差值部分,作为可调度资源,供调度器重新分配,仅供低优任务使用。
超卖特性有如下特点:
- 低于作业优先使用超卖资源
- 高优作业预选超卖节点时只能使用其非超卖资源
- 统一调度周期高优作业先于低优作业调度
不管是云原生混部还是超卖特性,都可以提升资源利用率。那么如何在提升资源利用率的同时,保障应用性能与服务质量?
华为HCE 2.0 OS提供的CPU隔离能力,结合CPU快速抢占、SMT管理控制和离线任务压制指令的负载均衡能力,保障在线业务资源QoS同时,也能让被压制的离线任务指令尽量快速得到响应。
根据实验室中模拟在线和离线混部场景(CPU利用率70+%)与单独业务部署在线的场景(CPU利用率30%)进行性能对比,混部场景中在线业务的性能(时延&吞吐)劣化幅度控制在单独部署在线业务性能的5%之内。基本可以认为把混部对性能的影响降低到可以忽略不计。
下面我们来看一个客户案例,该客户利用华为云云原生混部解决方案,优化资源配置,最终实现35%的资源利用率提升。
该客户的主要痛点包括:
- **应用干扰:**大数据与在线语音、推荐等应用争抢资源,e.g. cpu/memory,网络;影响高优任务服务质量。
- **应用资源配置不合理:**为了保证调度成功,request设置很小,不能反馈负载资源需求,引发资源冲突
- **应用绑核:**部分应用绑核,总体资源利用率低
基于客户痛点,我们为客户提供如下解决方案:
- 客户将原来节点OS由CentOS切换至华为云HCE OS;
- 将调度器由原来基于默认调度器切换至Volcano调度器;
- 根据客户业务属性,配置调度优先级、隔离等等策略;
通过华为云云原生混部解决方案,最终为客户带来资源利用率提升35%的收益。
7、CCE Autopilot:按需付费与灵活规格助力客户节约成本
CCE全新推出的Autopilot集群,支持按照应用的实际用量按需付费,相对于CCE集群的优势是Autopilot集群将节点的管理运维完全托管起来,这样您无需提前规划和购买节点资源,从而实现精细化的成本治理。
这里我们看两个客户场景:
- 互联网文娱和社交业务,春节假期期间流量是平时的数倍,专项跟踪运维保障,提前预留资源,成本巨大。
- 网约车平台,业务具有典型的早晚高峰特点,传统驾驶模式需要客户手动购买和提前预留资源,资源利用率低。
通过Autopilot可以实现成本精细化治理,最终实现整体成本降低与收益最大化。