目录
一、云上资源效能挑战
云上资源浪费现状
Flexera 2022云计算市场发展状态报告:32%的云支出被浪费
云原生时代的成本管理挑战
- 去中心化
- 随着kubernetes为核心的云原生应用的蓬勃发展,传统的集中式财务预算和IT管理模式在向以业务为导向的分布式决策转型
- 不断上涨
- CNCF调查显示,随着业务的快速发展,企业的云费用以24%的年增长快速增加
- 动态变化
- 与原生的动态环境和弹性能力导致云费用随业务负载不断变化
- 浪费严重
- 业务上云以后缺乏资源优化意识,依然以传统资源配置思维管理资源,浪费严重
由于存在此类问题所以得出FinOps概念来解决此类问题
成本优化思路与常用手段
- 成本优化思路
- 最大化资源利用率
- 限制资源清理
- 厂商折扣
- 以单位经济学驱动成本优化
- 费率优化
- 统一采购,销售费率折扣
- 预留实例,包年包月,享受承诺使用费率折扣
- 自动扩缩容,按需付费
- 竞价实例,牺牲SLA使用廉价闲置资源
- 用量优化
- 业务侧
- 规格优化
- 实时、自动扩缩容
- 平台侧
- 利用率优化
- 调度优化提升
- 混部
- 闲置资源识别与清理
- 闲置节点降配
- 非活跃存储降配、清理
- 非活跃CLB,EIP网络资源清理
- 利用率优化
- 业务侧
FinOps概念
FinOps是一种将财务管理(Finance)与云操作(Ops)相结合的模式,旨在优化云计算支出并提高业务绩效。
云计算是一种流量密集型的技术,意味着云成本管理在很大程度上取决于如何优化云资源消耗,并根据需要提高或降低开支。FinOps通过建立流程、原则和工具来实现这一目标,可以帮助企业更好地理解和控制云成本,同时保持效率和创新。
FinOps的关键原则是建,立透明度并将云成本降低到最小水平。为了实现这一点,需要结合使用财务、技术和业务信息,以确定最佳的资源使用方式。同时,需要确定哪些资源实际上为贡献产生了价值,并分配成本以实现真正的透明度和可控性。
总之,FinOps作为一种模式结合了财务和技术的因素,可以帮助企业实现优化云支出和提高业务绩效的目标。
FinOps定义了一系列云财务管理规则和最佳实践,通过助力工程和财务团队、技术和业务团队彼此合作,进行数据驱动的成本决策,使组织能够获得最大收益。
成本构成
节点成本
- CPU成本=CPU单价*节点CPU核数*节点使用时长
- 内存成本=内存单价*节点内存内容*节点使用时长
- 其他,如GPU卡成本,储存成本
- 节点成本=CPU成本+内存成本+其他
工作负载成本
- 工作负载通常按资源分配量或使用量独立计价
- 分配成本=分配量*使用时长*单价
- 使用时间=使用量*使用时长*单价
- 工作负载需要分摊的成本
- 限制成本=闲置资源量*闲置时长*单价
- 公开开销成本=集群管理组件公共服务的资源成本
资源利用率优化模型
横向伸缩和纵向伸缩
- 应用扩容市值在应用接收到的并发请求已经处于其处理请求极限便捷的情形下,扩展处理能力而确保应用高可用的技术手段
- horizontal scaling
- 所谓横向伸缩市值听过增加实用案例数量分担负载的方式来提升应用整体处理能力的方式
- vertical scaling
- 所谓纵向伸缩是指通过增加单个应用实例资源以提升单个实例处理能力,进而提升应用整体处理能力的方法
- horizontal scaling
kubernetes原生能力的不足![](https://i-blog.csdnimg.cn/blog_migrate/3969874b6d0228e089e07c503f949941.jpeg)
开源地址 https://github.com/gocrane/crane
二、云原生场景下的成本优化挑战
成本分析
开启降本
- 从监控系统拉取用量数据
- 从kubernetes平台拉取作业配置信息
- 从云厂商计费API拉取资源单价
- 通过多种算法分析成本组成并给出优化建议
场景一:成本可视化
成本展示与预测
- 成本历史
- 基于预测的趋势分析
成本与浪费识别
- 与计费API整合的费用展示
国内首个云原生碳排放计算器
- 能耗看板
- 碳排放看板
灵活的汇聚维度
- 按部门
- 按项目
- 按应用类型
- 按自定义标签
场景二:规格推荐
可声明
- 为指定命名空间,工作负载类型给出推荐值
基于可配置的算法
- 需要动态挑战场景:指数桶+半衰期
- 静态推荐场景:均衡桶+无半衰期
- 余量Margin或目标利用率
场景三:智能预测与自动扩缩容
提前扩容
- 时间序列算法:FFT快速博里叶变换
- 取预测窗口最大值:提前扩容
- 基于custom metric
- metric 兜底保护
减少无效缩容
- 预测未来可以减少不必要的缩容
支持cron配置
- 应对大促节假日等有规律的流量洪峰
易于使用
- 完全兼容社区HPA
- 支持Dryrun观测
- 指标支持prometheus metric
三、Crane智能调度助力成本优化
负载感知调度
基于真实负载的调速器
- 底层依赖prometheus采集真实负载,代替request值
- 引入节点历史负载指标(1h内最大利用率,1天内最大利用率)感知业务波峰
拓扑感知调度
性能优先
- 有限选择pod能绑定在单NUMA Node内的节点
- 优先选择在同一个NUMA socket内的NUMA Node
负载均衡
- 有限选择空闲资源更多的NUMA Node
更灵活的策略
- 解决原生CPU Manager 导致集群负载过低的问题
支持模拟调度的重调度器
优雅驱逐能力
- 有全局视图,在多workload并行,同一workload内串行驱逐
- 支持模拟调度,集群资源不足时可停止驱逐
- 可以通过先扩容后缩容的方式实现无区驱逐
支持场景
- 驱逐负载过高的节点上得低优pod
- 支持固定时间窗口腾空节点
- 支持基于特定标签批量驱逐pid
混部内核确保高优业务稳定性
Crane 项目介绍
基于以上 FinOps的原则和能力标准,腾讯云推出了Crane开源项目,主打智能调度,助力成本优化。是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。
- Craned
Craned 是 Crane 的最核心组件,它管理了 CRDs 的生命周期以及API。Craned 通过 Deployment 方式部署且由两个容器组成:Craned与Dashboard
- Fadvisor
Fadvisor 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。Fadvisor 通过 Cloud Provider 支持了多云计费的 API。
- Metric Adapter
Metric Adapter 实现了一个 Custom Metric Apiserver. Metric Adapter 读取 CRDs 信息并提供基于 Custom/External Metric API 的 HPA Metric 的数据。
- Crane Agent
Crane Agent 通过 DaemonSet 部署在集群的节点上。
- 在监控方面使用了Prometheus与Grafana。Crane的一些图表就是直接使用的Grafana配置的。
- 在成本的可视化和优化评估
内部大规模落地的成效
- 腾讯内部自研业务大规模落地
- 部署至数百个kubernetes集群
- 管控数百万CPU核
- 全面上线两个月内,大盘总核数缩减25%
外部优化成效
- 在网易新闻落地
- 管控数wcpu核
- 全面上线2个月内,大盘总核数缩减11%
- 下线30台56C物理机,每月节约10w
软件清单
总结
使更多开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。