除默认的成本分摊策略外,成本套件功能还支持自定义成本核算策略。如果您对云上资源成本分摊的要求较高,需要定制分账业务逻辑,您可以编写配置文件自定义资源价格,从而更贴合您的分账业务逻辑。
本功能目前处于灰度中。如需使用,请提交工单申请。
使用场景
自定义成本核算能够帮助您更精细化地进行企业IT成本治理。其典型使用场景如下。
企业内部运维团队批量购买了底层计算资源,然后以转售的形式分发给不同的业务团队。
对于部分企业来说,同规格Pod调度到不同规格节点时将产生费用偏差,希望在业务维度屏蔽资源动态性带来的成本差异。
对于企业的不同业务部门,将相同资源请求量的Pod按不同超卖比例部署于同一台计算节点,要实现部门间差异化的成本核算,需要在计算Pod单价时考虑资源Limit的因素。
为解决上述场景下企业成本核算时的数据定制需求,成本套件提供自定义价格模板功能,您可以通过编辑模板配置Pod的各资源单价,即可聚合出Pod的定价成本。
目前Pod定价成本仅支持以API的形式透出,开启并完成定价配置后,您可以通过API响应的customCost字段获取Pod的定价成本。API的使用方式,请参见通过API获取成本数据概述。
前提条件
步骤一:开启cost-exporter自定义价格开关
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在页面上方,切换命名空间为kube-system,在Deployment列表的操作列,单击ack-cost-exporter对应的更多>查看Yaml,在
command
中增加'--enable-custom-price=true'
,开启自定义价格功能,然后单击更新。
步骤二:配置定价模板
操作步骤
使用以下示例代码,创建名为price-template.yaml的文件。
重要模板中
spec
字段下的字段均为可选。如果spec
下已配置的所有字段都符合Pod元信息,则判定Pod与该模板匹配。spec
为空的模板可以匹配所有Pod。匹配定价模板时为顺序匹配,即当多个模板和Pod同时匹配时,系统会根据模板YAML自上而下地选定第一个匹配到的模板,用于给Pod定价。
apiVersion: v1 kind: ConfigMap metadata: name: price-template namespace: kube-system data: template.yaml: | - name: template-nginx spec: labelSelector: app: nginx namespaceSelector: - default - kube-system resource: cpu: 500m memory: 512Mi cpu-overcommit-ratio: 2 memory-overcommit-ratio: 2 price: cpu: 0.2 memory: 0.03 - name: template-default price: cpu: 0.1 memory: 0.02
此定价模板表示:
对于集群中同时符合以下条件的Pod,使用名为template-nginx的模板进行定价:
标签包含
app:nginx
命名空间为default或kube-system
CPU申请量为500 MB,限制量为1 Core
内存申请量为512 MiB,限制量为1 GiB
对于集群中其他Pod,使用名为template-default的模板进行定价。
相关参数解释如下表所示:
参数
说明
name
定价模板的名称。
spec.labelSelector
待匹配的Pod标签集合,Pod任一标签存在该集合中即认为匹配。
spec.namespaceSelector
待匹配的Pod命名空间列表。
spec.resource.cpu
Pod的CPU申请量。
spec.resource.memory
Pod的内存申请量。
spec.resource.cpu-overcommit-ratio
Pod的CPU超卖比,即CPU限制量/CPU申请量。
spec.resource.memory-overcommit-ratio
Pod的内存超卖比,即内存限制量/内存申请量。
spec.price.cpu
Pod的CPU单价,单位为Core * Hour。
spec.price.memory
Pod的内存单价,单位为GiB * Hour。
执行以下命令,在kube-system命名空间下创建名为price-template的ConfigMap,以应用自定义的定价配置。
kubectl apply -f price-template.yaml -n kube-system
相关文档
您可以基于集群调度水位估算Pod成本,包括单资源(CPU、内存)估算和权重混合(CPU-内存混合)的资源估算,请参见成本估算策略介绍。
您可以通过HTTP API命令查看上报数据,便于您基于成本数据进行二次开发,请参见通过API获取成本数据概述。