随着企业日益重视降本增效,云FinOps技术逐渐受到广泛关注。行业内正积极探讨云FinOps的最佳应用实践,以期发挥其最大效用。尽管FinOps尚处于起步阶段,但云原生架构在企业信息化系统中的比重却在持续攀升。因此,在企业向云原生架构转型的过程中,应提前规划并实施云原生环境下的FinOps管理策略,以避免未来可能面临的应用改造和平台功能重建等困境。本文探讨了云原生FinOps技术的优化策略和未来发展方向,以期为想要降本增效的企业提供一定参考。
亚信科技(中国)有限公司
图1:某公有云客户群资源利用率统计
企业在实际用云中存在很大的云资源浪费,Flexera 2022云计算市场发展状态报告显示:市场普遍存在32%以上的云支出被浪费。优化云成本,现已成为上云之后一个迫切需要解决的问题。在Gartner 2023年度报告Hype cycle for Emerging Technologies中,FinOps已成为重要的新兴技术之一,为了应对云成本管理的挑战,企业开始关注如何更好地管理和优化云成本。于是,FinOps技术应运而生。FinOps技术结合了财务管理、信息技术和流程管理,通过制定合理的成本管理策略、实施自动化工具和流程以及加强团队间的合作与沟通,帮助企业实现在云环境中更有效地管理成本、优化资源利用率和提高业务效率。在FinOps框架下,灵活利用成本模型意味着企业需要不断优化和调整成本管理策略,以适应云环境和业务的变化,从而最大限度地降低成本并实现业务目标。
图2:Hype cycle for Emerging Technologies,2023 Gartner
以某客户K8S平台中集群节点(假设CPU配置100C)的CPU占用率曲线图为例,白色部分是应用实际占用的算力资源,其他区间均为被浪费的算力,FinOps需要通过各类不同的技术方法,最大程度的层层压缩被浪费的算力资源。根据不同的算力损失情况,可分为四个优化象限,分别为第一象限(100C~80C),第二象限(80C~60C),第三象限(60C~40C),第四象限(40C以下)。
图3:某客户容器集群节点资源利用率曲线图
下面将分别阐述各个象限对应的技术优化方案。
(一) 第一象限:合理的装箱减少资源碎片
1.节点资源整合:尽可能地合并或整合节点上的资源,将多个小资源占用较少的 Pod 部署到同一节点上,减少资源碎片化的发生。使用合适的调度策略,例如节点亲和性或反亲和性规则,将相互关联的应用程序部署到同一节点上,以最大化资源利用率。
2.节点使用监控:使用合适的节点资源管理工具,如Kubernetes自带的kubelet、Node-Exporter等,来监控节点的资源使用情况。针对资源利用率较低的节点,可以考虑将其设置为污点(Taint),以避免将新的Pod调度到这些节点上,从而减少资源碎片的产生。
3.Pod 垃圾回收:通过运行监控发现闲置的资源,定期清理和回收不再需要的 Pod 资源,包括已经完成或被删除的 Pod,释放它们占用的资源空间。Kubernetes 提供了自动的 Pod 垃圾回收机制,也可以使用FinOps工具通过合适的配置,来确定需要清理的资源范围并定期清理不再需要的 Pod。
4.Pod亲和和反亲和管理:使用 Pod 亲和性和反亲和性规则,将相关的Pod调度到同一节点上,也可以最大程度地减少节点资源碎片的产生。
(二) 第二象限:开通最优的实例规格
图4:Recommendation Framework技术架构图
Recommendation Framework整个分析过程可分为四个阶段:
1.Filter阶段:Filter 阶段用于预处理推荐数据。通常,在预处理时需判断推荐目标是否和Recommender对象匹配,比如,Resource Recommender只支持处理Workload(Deployment,StatefulSet)。还可以判断推荐目标状态是否适合推荐,比如是否被删除中,是否达到指定运行时长等。
2.Prepare阶段:Prepare阶段用于数据准备,通过调用资源监控数据并将时序数据保存在流程的上下文中。可扩展点用于检测监控系统的外部链接情况,如可用于查询外部时序数据并对数据做预处理,包括应用冷启动的异常数据,部分数据的缺失,数据聚合,异常数据清理等。
3.Recommend阶段:Recommend阶段用于基于时序数据和资源配置输出优化建议,优化建议的类型取决于推荐的类型。比如,如果是资源推荐,那么输出就是kubernetes workload的资源配置。Recommend的扩展点可用于采用 外部算法模块对数据进行分析计算,该阶段对分析结果进行最后处理。可以通过配置自定义Recommend,来实现自定义的推荐结果。
4.Observe阶段:Observe阶段实现了推荐结果的可观测,如在资源推荐时,将优化建议的信息通过 Metric 的方式保存到监控系统,再通过Dashboard来实现可观测优化建议带来的潜在收益。
整个Recommendation Framework通过不断地收集运行数据和用户反馈,慢慢学习用户的偏好变化形成业务模型,来不断提供更加精准和个性化的推荐,从而为企业带来更高的成本转化率和业务收入。
(三) 第三象限:面向突发流量弹性扩缩容
1.水平扩缩容(HPA)
图5:HPA技术原理图
通过监控指标(CPU 使用率、磁盘、自定义指标等)自动的扩容或缩容服务中 Pod 数量,当业务需求增加时,系统将无缝地自动增加适量pod 容器,提高系统稳定性。K8s的HPA controler 提供一套自动扩缩容逻辑,默认情况每 30s 检测一次指标,只要检测到了配置 HPA 的目标值则会计算出预期的工作负载的副本数,再进行扩缩容操作。同时,为了避免过于频繁的扩缩容,默认在 5min 内没有重新扩缩容的情况下,才会触发扩缩容。
2.垂直扩缩容(VPA)
图6:VPA技术原理图
VPA是基于容器历史数据和预测算法,预测应用程序未来的资源需求。根据监控数据和预测结果,动态调整容器的资源请求和限制,使其适应应用程序的需求。VPA可提供推荐模式和自动模式两种调整模式。在推荐模式下,VPA 生成资源调整建议,由用户手动应用;在自动模式下,VPA 自动应用调整建议。
HPA主要关注整个应用程序水平方向的伸缩,通过调整 Pod 的副本数量来应对负载变化;VPA则关注 Pod 内部容器的垂直伸缩,通过调整容器的资源限制来优化资源利用和性能。但是HPA和VPA很难同时使用,两者会出现资源调整和配置策略的冲突,大大增加部署的复杂性。
(四) 第四象限:应用混部最大化利用有限资源
最后一个象限范围可优化的空间是排除了突发性流量情况下,应用的日常服务潮汐之间的资源差值,可以确定该应用属于服务类场景,具备稳定的波峰波谷和周期,与作业类项目不同,作业类项目通常不具备周期性,且对资源的利用率较高,通过配置两者的优先级和资源限制,灵活混部在同一节点内,能够进一步将第四象限的资源空跑时间进行压缩。
混部方案中Koordinator项目经过2022年4月开源以来的多轮迭代,已趋于成熟,Koordinator通过先进的调度和资源管理技术来增强Kubernetes环境下的应用性能和资源效率。
图7:Koordinator功能架构图
图7展示了 Koordinator 系统的整体架构和各组件的角色分工,其中绿色部分描述了 K8s 原生系统的各个组件,蓝色部分是 Koordinator 在此基础上的扩展实现。从整个系统架构来看,我们可以将Koordinator 分为中心管控和单机资源管理两个维度。在中心侧,Koordiantor 在调度器内部和外部分别都做了相应的扩展能力增强;在单机侧,Koordinator 提供了 Koordlet 和 Koord Runtime Proxy 两个组件,负责单机资源的精细化管理和 QoS 保障能力。
Koordinator 定义了四个等级,分别是 Product、Mid、Batch、Free ,Pod 需要指定申请的资源优先级,调度器会基于各资源优先级总量和分配量做调度。各优先级的资源总量会受高优先级资源的 request 和 usage 影响,例如已申请但未使用的 Product 资源会以 Batch 优先级再次分配。
Koordinator 的设计中另一个核心的概念是服务质量(Quality of Service),Koordinator 将 QoS 模型,在 Pod Annotation 级别进行了扩展定义,它代表了 Pod 在单机运行过程中的资源质量,主要表现为使用的隔离参数不同,当单机资源紧张时会优先满足高等级 QoS 的需求。Koordinator将 QoS 整体分为 System(系统级服务),Latency Sensitive(延迟敏感性的在线服务),Best Effort(资源消耗型的离线应用)三类,根据应用性能敏感程度的差异,Latency Sensitive 又细分为LSE,LSR 和 LS。
通过提供不同的资源优先级和服务质量的实例部署方案,达到整体的资源利用率最优,如:
• Prod + LS:典型的在线应用,通常对应用时延要求较高,对资源质量要求较高,也需要保证一定的资源弹性能力。
• Batch + BE:用于混部场景中的低优离线,对资源质量有相当的忍耐度,例如批处理类型的Spark/MR 任务,以及 AI 类型的训练任务等等。
亚信云成本优化产品ECC(elastic compute Cost)可提供亚信PaaS平台的云成本监控、计量计费,并提出优化建议和执行流程,能够提升平台整体资源利用率,降低PaaS平台用户资源成本。通过提供最佳实践工具、财务流程审批、资源管控模型和关键考核指标,来帮助企业更好地理解、管理和优化他们在云上的支出。
1.基于云原生底座:基于云原生底座资源进行FinOps优化,通过云原生Operator开发实现,完美适配云原生环境。
2.多集群统一优化:支持对接多个容器集群及联邦集群,支持多云容器环境下对成本进行统一策略的FinOps成本优化分析。
3.用户成本可视化:用户可以清晰地了解他们在云上各个应用和项目的资源、成本消耗情况,并可以通过直观的图表和报告来分析数据。
4.云成本可预测:提供了成本预测和规划功能。用户可以根据历史数据和业务需求来预测未来的成本,并做出相应的调整和规划。
5.智能优化建议:根据成本分析结果,搭配不同的智能优化引擎和优化策略,提供个性化的成本优化建议,帮助用户识别并实施成本优化路线。
6.支持低碳环保:响应国家碳排放号召,支持对各个系统的平台碳排放和能耗进行分析和预测,推动行业绿色健康发展。
随着云计算服务的不断普及和复杂性的提升,有效地管理云成本已成为一项至关重要的任务。在这一背景下,云FinOps(财务运营)作为前沿且活跃的发展领域,正逐渐引起广泛关注。FinOps不仅代表着一种文化变革,更融合了财务管理、操作优化以及跨部门的团队协作,旨在确保云成本的可预测性、透明性和责任性。通过这一综合性的管理方法,企业能够更有效地控制云成本,进而提升整体运营效率和竞争力。以下是未来云FinOps重点发展方向:
1. 自动化和智能化:随着技术进步,自动化工具将更加智能,能够自动执行成本优化策略,如关停未使用的资源、调整资源大小、购买节省成本的预留实例等。利用机器学习和人工智能技术,系统能预测未来的云支出并提供建议,帮助组织更好地规划预算和资源。
2. 治理安全强化:提供更详细的成本报告工具和指标,使企业可以更深入地了解和管理每一笔云支出。自动化工具不仅仅关注成本优化,还将帮助企业确保其云使用符合行业标准和法规要求。
3. 跨部门协作化:FinOps不仅是财务部门的责任,而是需要IT、运维、安全和业务部门共同协作。推动跨部门团队形成,集结各方面的知识和技能,共同推动成本优化和价值最大化。随着FinOps实践的深入,各级员工的教育和培训变得更加重要。
4. 统一集成与标准化:随着云服务提供商和第三方工具的增多,未来的FinOps解决方案将更加注重与这些工具的集成,提供一个统一的视图和操作界面。期望出现一套广泛认可的最佳实践、框架和标准,帮助指导企业实施FinOps。
参考资料