使用ACK成本洞察实现成本管理及优化

本文结合企业实际情况进行成本洞察,演示云原生架构下如何更准确地计算业务成本分摊,从而实现让企业在享受云原生带来的灵活性和效率的同时,也能有效地管理和控制成本。

前提条件

背景信息

在传统的IT治理场景中,业务往往独享一套云资源,例如节点、负载均衡、存储资源等。这些云资源独立计费,成本追踪相对直接且简单。

进入云原生时代,资源的使用模式发生了变化。一个节点可能同时运行来自不同业务的容器,网络、存储资源也可能被多个应用共用。这种资源共享的模式增大了成本分摊的复杂性,即成本难以被明确分摊到各个业务单元,导致成本洞察和管理更为复杂。

为此,ACK提供一种通用性的成本数据模型,以更准确计算业务成本分摊。具体实现如下所示:

  1. 首先,分析每个Pod使用的资源(如CPU、内存、存储等),计算出Pod的模拟成本。

  2. 其次,根据Pod的模拟成本,按比例将整个集群的总账单(包括所有资源的费用)分配给各个Pod。按比例拆分集群总账单,即可获得Pod分摊集群总账单的费用。

  3. 最后,通过汇总一个周期内所有关联到特定业务的Pod分摊的成本,即可得出该业务单元的总成本。

场景示例

如下图所示,某企业将所有业务部署在一个ACK集群上,组织架构包括四个业务部门:部门A负责应用A,部门B和部门C共同负责应用B,部门D负责应用C和应用D。

image

其中,应用A和应用B是Web服务,需要稳定的业务负载,调度到包年包月的ECS节点;应用C和应用D负责数据处理和数据分析业务,有资源弹性的需求,调度到按量付费的ECS节点。

使用成本洞察实现成本管理及优化

以下演示如何通过可视化的成本洞察大盘,查看部门和应用的成本。

说明

您也可以通过HTTP API查看部门和应用的成本。详情请参见通过Allocation API获取

步骤一:确定成本治理周期

  • 集群费用查看周期

    ECS实例有两种出账周期,包年包月的实例以月或周为出账周期;按量付费的实例以小时为出账周期。由于本场景集群同时包含两种付费类型的实例,在查看集群总费用时,周期需设置在月维度。为便于直接对比和分析账单数据,一般可将ECS出账日作为成本治理起始和结束日期。

  • 部门、应用费用查看周期

    • 部门A、B、C的业务都运行在包年包月的节点上,所以成本治理周期以月为维度。

    • 部门D的业务都运行在按量付费的节点上,所以成本治理周期以天为维度。

    • 应用费用查看周期可根据所属部门确定。

步骤二:根据业务类型确定成本分摊策略

在计算业务成本分摊时,会涉及到估算业务关联Pod的成本,ACK提供单资源估算策略和权重混合资源估算策略。

估算策略

细分策略

使用场景

单资源估算策略

CPU和内存资源的单资源策略

集群中一种资源的调度水位明显高于另一种资源,或者集群中的业务资源申请类型比较集中的场景。

权重混合资源估算策略

CPU-内存混合策略(推荐权重)和CPU-内存混合策略(自定义权重)。

集群中混合部署了CPU型和内存型的应用,或者集群CPU和内存水位持平的场景。

默认情况下,对于集群中的业务资源申请类型比较集中的场景,推荐您使用单资源估算策略。比如集群业务都是CPU密集型,可以直接选择CPU单资源策略。

更多场景选型及策略分析,请参见成本估算策略介绍

步骤三:查看集群费用

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择成本套件 > 成本洞察

  3. 成本洞察页面的集群维度页签,设置如下筛选项,然后查看花费结果。

    1. 实际/原价账单:选择集群成本统计选项,本示例设置为优惠后实际账单成本

    2. 时间范围:本示例设置为2024-05-01 00:00:00 to 2024-05-31 23:59:59

    本月累计花费-优惠后实际账单成本区域,查看集群在2024年05月的总费用。查看

步骤四:查看部门成本

  1. 成本洞察页面,单击命名空间维度页签,设置如下筛选项,然后查看成本估算结果。

    • 命名空间(Namespace):选择部门对应的命名空间,本示例设置为默认命名空间default

    • 实际/原价账单:选择命名空间成本统计选项,本示例设置为优惠后实际账单成本

    • 时间范围:本示例设置为2024-05-31 00:00:00 to 2024-05-31 23:59:59

      在本示例中,部门D负责的业务对资源需求有波动性,您也可以将时间调整到具体某天,例如2024-05-31,查看部门D每天的成本。

    然后,在命名空间费用分摊区域,查看该部门的分摊费用。

    image.png

步骤五:查看应用成本

  1. 成本洞察页面,单击应用维度页签,设置如下筛选项,然后查看应用花费。

    • 命名空间(Namespace):选择应用所在的命名空间,本示例设置为默认命名空间default

    • 标签对筛选(LableSelector):应用对应的标签。

    • 时间范围。本示例设置为2024-05-31 10:00至2024-05-31 16:59。

      在本示例中,由于应用C和应用D的业务特性,导致每天的成本可能存在波动,因此将时间范围调整到某天的具体时间段,例如10:00至16:59,查看应用具体时间段的成本。

    然后,在应用花费区域,查看结果。

    image.png

常见问题

开通成本洞察后,查看上月或者上周花费时,为什么没有数据?

成本洞察功能从您开通后开始记录数据,如果所选时间范围内还未开通,将不会展示数据。

查看历史花费时,为什么展示的数据低于实际花费?

ARMS Prometheus的默认存储时长为15天,请确保您所选的时间范围在Prometheus的存储时间内。如果有更长成本洞察周期的需求,请参见如何调整指标的存储时长?

相关文档

  • 除了可视化的成本洞察大盘,您也可以通过HTTP API查看部门和应用分摊集群账单的成本。ACK提供Allocation API帮助您按Namespace、Controller、Label、Pod等维度聚合业务成本,详情请参见通过Allocation API获取

  • 关于成本洞察指标的详细说明,请参见集群维度成本分析命名空间维度成本分析节点池维度成本分析应用维度成本分析

  • 如有降低容器配置Request和Limit复杂性的需求,可以通过资源画像功能实现容器粒度的资源规格推荐,帮助您调整应用规格配置。详细信息,请参见资源画像

  • 对于多云和混合云场景,资源可能来自不同云厂商甚至线下环境,使统一视图的资源监控和成本管理变得更具挑战性。关于如何通过ACK One实现混合云成本管理,请参见集群成本洞察