成本估算的策略介绍

在ACK集群中,Pod和云资源不存在一对一关系,生命周期也短于云资源。因此,企业分摊部门、应用等维度的资源成本时,如何估算Pod的成本成为关键。估算一个Pod分摊的成本时,还需同时考虑该Pod关联资源的成本。为了更好地贴合您的业务场景,ACK成本套件功能提供基于调度水位衡量资源成本的估算策略。

估算策略介绍

估算策略

细分策略

使用场景

单资源估算策略

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

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

权重混合资源估算策略

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

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

单资源估算策略

单资源估算策略是默认的成本估算策略。如果您期望贴合资源调度的水位来计算集群成本,推荐您使用此策略。

使用场景

调度水位是指资源申请量占资源总量的比例,大部分场景下,集群的调度水位由申请最多的资源类型决定。因此,单资源估算策略更适合集群中一种资源的调度水位明显高于另一种资源,并且集群中的业务资源申请类型比较集中的场景。

以Java为代表的内存型应用为例,应用Pod会向集群申请大量内存资源(Memory Request),导致内存的调度水位升高,内存变成决定集群是否可调度的“昂贵”资源,而CPU则变成了“便宜”的资源。此场景下,使用单一资源估算策略进行成本计算较为合理:当内存占据集群90%调度水位时,计算的成本也可以达到集群总成本的90%,做到100%的拟合。

功能原理

在单资源策略中,Pod成本通过CPU或内存指标计算。

单Pod成本计算

Pod成本计算公式如下所示(资源包括内存资源和CPU资源):

image..png

命名空间级别的成本计算

命名空间是一组具有相同字段的Pod的聚合。准确估算Pod的成本占比后,通过计算命名空间下所有Pod相对于集群中所有Pod的费用比例,乘以集群的费用账单,可以实现命名空间级别的费用计算。

  • 命名空间成本计算公式如下所示:

    image..png

  • 命名空间成本比例计算公式如下所示:

    图片 1

权重混合资源估算策略

使用场景

如果集群中混合部署了CPU型和内存型的应用,或者集群CPU和内存水位持平,推荐您使用混合资源估算策略。此时,CPU和内存的“价值”相近,可以利用调度水位比例来进一步衡量两种资源的价值。

功能原理

在权重混合资源估算策略中,Pod通过CPU和内存指标混合加权计算。混合资源估算策略的权重由集群CPU、内存调度水位的比例决定。

单Pod成本估算

与单资源策略不同,混合资源策略的Pod成本通过CPU和内存混合的估算策略来计算。Pod成本的计算公式如下所示:

image..png

权重值依据集群的调度水位确定,集群中CPU调度水位和内存调度水位的比例、权重的计算方式如下所示:

  • CPU调度水位:

    image..png

  • 内存调度水位:

    image..png

  • CPU权重:

    image..png

  • 内存权重:

    image..png

使用示例

通过以下两种示例,展示如何选择成本估算策略。

示例1:集群中的业务资源申请类型比较集中

如下图所示,集群中同时部署两类对内存需求较高的应用,分别申请了1核2G和1核4G的资源,使内存调度水位达到90%,而CPU水位为20%。假设集群每天的总花费为200

  • 使用单资源估算策略:

    • 如果使用内存单资源估算,计算成本为200*90%=180,符合集群调度情况。

    • 如果使用CPU单资源估算,计算成本为200*20%=40,而此时集群只剩10%的内存可供继续调度,还会产生大量的闲置成本无法得到分配。

  • 使用权重混合资源估算策略:

    如果对两种资源加权计算成本,依据调度水位,我们假设设置内存和CPU的权重分别为80%和20%,计算的成本为180*0.8+40*0.2=152,相比于直接使用内存分账,还有28没有得到分配。

综上所述,可以发现使用单资源估算策略中的内存单资源估算策略,可以使分配的成本达到总成本的90%,因此对于集群中的业务资源申请类型比较集中的场景,推荐您使用单资源估算策略。

image

示例2:集群中的业务资源申请类型比较平均

如下图所示,集群混合部署了两种业务,分别申请了1核4G和4核1G的资源,CPU调度水位为40%,内存调度水位为50%。假设集群总花费是每天200

  • 使用单资源估算策略:

    • 如果使用内存单资源估算,计算成本为200*50%=100

    • 如果使用CPU单资源估算,计算成本为200*40%=80

  • 使用权重混合资源估算策略:

    如果对两种资源加权计算成本,依据调度水位,我们假设设置内存和CPU的权重分别为56%和44%,计算的成本为100*0.56+80*0.44=91.2。相比于直接使用内存分账,仅只有8.8没有得到分配。

综上所述,虽然本示例的内存单资源估算成本>权重混合资源估算成本,但是CPU调度水位和内存调度水位相差不大(两者资源的请求量相近),即两种资源的价值相近,且成本相差不大,因此根据综合考虑需要选择使用权重混合资源估算策略。

image

常见问题

如何解决混合资源估算策略可能产生空闲成本的问题?

产生原因:对集群使用混合资源策略可能会增加空闲成本,这是因为业务的关键资源的水位往往大于非关键资源的水位。当关键资源到达瓶颈时,非关键资源总会存在空闲,即当两种资源的水位相差较大时,水位较低的资源便会产生空闲成本。在单资源策略中,这部分空闲资源的成本能够得到分配;而如果使用混合资源策略,则可能会增加空闲成本。

解决方案:为解决混合资源估算策略可能产生空闲成本的问题,您可以根据业务资源需求选择更合适的机型,保证CPU和内存水位持平,也可以选择使用单资源估算策略。

相关文档

  • 如果您对云上资源成本分摊的要求较高,需要定制分账业务逻辑,您可以通过自定义核算策略来进行成本核算,请参见自定义成本核算的策略

  • 您可以通过HTTP API命令查看上报数据,便于您基于成本数据进行二次开发,请参见通过API获取成本数据概述