王孝威,FinOps 认证从业者,腾讯云技术产品经理,Crane 产品负责人。
设想你是一个应用开发人员,编写业务代码是你的主业,应用需要多少资源,往往通过压测决定,这导致非业务高峰期时段巨大的资源浪费。正好,社区和公司都在积极推动云原生,声称可以利用其强大的调度和弹性解决资源浪费问题。你兴致勃勃的拥抱云原生,但最终发现,云原生业务的资源配置,同样还是需要压测这种传统而手工的方式。
又比如你是一个平台侧运维人员,你背负着提升平台资源利用率的 KPI。集群内运行着众多负载规律波动的应用,你惊喜的发现,Kubernetes 提供了自动扩容能力,你很想试试看。但真正使用了HPA,从负载上升触发阈值,到弹性控制器开始扩容,到应用启动完成,可能有数分钟甚至数十分钟的滞后,在弹性起作用之前,应用已经被压垮。于是你抛弃自动弹性能力,继续回归到锁定超量资源的老路上来。
研发人员到底能否从资源配置的深渊中解脱出来,是否能让弹性能力高效实用?于是你带着问题去社区寻找答案。你发现将应用代码和基础架构彻底分离的 Serverless 技术似乎是一个选项,但是随着深入了解你发现,Serverless 只是一个概念,不是一个标准,由于完全抛弃了服务器,底层自主可控和性能优化能力完全丧失;另一类是以谷歌 Autopilot 集群为首的资源托管类集群,这类集群应该满足你的诉求,但它平台绑定并且需要付费。
我们决定改变现状,我们在对腾讯内部业务做成本优化时积累了众多经验,结合资源预测、智能弹性和全构混部能力,在不牺牲稳定性的前提下,将集群峰值利用率提升到了50%以上,下图是优化的效果。我们期待与社区同道一起优化应用资源配置和弹性的共性问题,于是我们给大家一个不重造轮子的可能,选择了开源。
图1:Crane 在大规模场景下的优化效果
为推进云原生用户在确保业务稳定性的基础上做到真正的极致降本,腾讯推出了国内第一个基于云原生技术的成本优化开源项目 Crane( Cloud Resource Analytics and Economics )。Crane 遵循 FinOps 标准,旨在为云原生用户提供云成本优化一站式解决方案。
当前 Crane 项目主要贡献者包括有腾讯、小红书、谷歌、eBay、微软、特斯拉等知名公司的行业专家。
(Crane 开源项目地址:https://github.com/gocrane/crane/)
Crane 是腾讯内部云资源优化流程方法和工具的系统性输出,同时,Crane 核心能力的构建与规划均与 FinOps 基金会提出的能力模型完全契合。
图2:Crane 能力模型
图3:Crane 架构
Crane 致力于推荐资源和智能弹性配置,业务人员无需再为业务需要多少资源,自动扩缩容应该如何配置等问题而烦恼,Crane 会基于业务的时序变动数据给出最优解。
Crane 保持平台独立,通过一个 Helm 包将 Crane 安装至任意 Kubernetes 集群,无论云上还是云下,即可享受一站式资源优化能力。Crane 侵入性小,核心组件包括集中控制器 craned 和节点代理 crane agent,你可以自由组合安装,通过 featureGate 选择开启哪些能力。
为降低使用门槛,Crane 提供内置控制台,用户可基于控制台查看成本分配,成本走势,并通过鼠标点击实现成本优化。所有能力均提供灰度控制和预览模式,以及回滚的能力,以消除业务侧对资源变动的顾虑。
Crane 可以全局扫描整体浪费情况,将隐藏浪费可视化的呈现出来,使运维人员免除拉取监控数据,编写查询脚本等重复性工作。
优化方案包含对成本变化的展示,对利用率变化的展示,可能的风险点,甚至是优化建议的排序。因为我们相信,每个业务都是独一无二的,都有其最适合的优化方案,不能一概而论。
传统基于事件的弹性工具会导致一个天然缺陷——当业务指标偏离正常值后才会触发弹性,这种滞后性使得云用户不敢使用弹性。EPA 支持可扩展的预测算法,以预测结果驱动横向和纵向弹性,确保业务能提前弹出来,彻底避免原生弹性能力未弹先死的尴尬。同时 Crane 将社区的 HPA 和 VPA 两种弹性能力统一起来,提出了弹性概念 EPA。
图4:EPA 确保工作负载提前扩容
Crane 对资源利用率的提升,绝不是以牺牲稳定性作为代价。Crane 允许用户对业务进行定级,节点代理负责周期性检查节点资源水位和系统指标,识别应用干扰,并通过调度禁止,调整 cgroup,驱逐等多种手段确保敏感业务服务等级不受损。
当前 Crane 已发布0.2.0版本,具备了资源推荐,弹性推荐,智能弹性和稳定性增强等核心能力,更多开发计划请参考里程碑[1]。
FinOps[2] (Financial Operations) 定义了一系列云财务管理规则和最佳实践,通过助力工程和财务团队、技术和业务团队彼此合作,进行数据驱动的成本决策,使组织能够获得最大收益。
秉承着用户为本,科技向善的核心价值观,腾讯云将内部云资源优化的经验、方法、工具以开源的形式分享给社区,助力云用户云成本优化视为自己的使命与责任。2021年12月,腾讯成为 FinOps 基金会顶级会员,致力于云资源优化理念的推广与技术输出。
Crane 项目开源进行时,欢迎关注 https://github.com/gocrane/crane/ 收藏/Star支持。
我们正在限量召集 Crane 的第一批开源技术粉丝,只要你对 Crane 及相关技术感兴趣,都欢迎加入,参与方式:添加腾小云二维码,回复:Crane,小云会拉你进群。
[1]
里程碑: 【https://github.com/gocrane/crane/blob/main/docs/roadmaps/roadmap-1h-2022.md】
[2]
FinOps: 【https://www.finops.org/introduction/what-is-finops/】
往期精选推荐
点个“在看”每天学习最新技术