您可以通过Cost V2 API查询集群工作负载的实时估算成本。Cost V2 API支持设定更为灵活的时间范围,对Pod、命令空间、Label、Controller、Controller Kind(ReplicaSet、DaemonSet、Job等)等维度的资源进行过滤查询,可用于实时成本趋势分析。
前提条件
已参见通过API获取成本数据概述完成准备工作。
请求和返回参数
请求语法
GET /v2/cost
请求参数
名称 | 类型 | 是否必选 | 描述 |
window | string | 是 | 查询的持续时间。接受以下几种格式的输入:
|
filter | string | 否 | 对指定资源类别进行过滤。支持的类别包括:
同一个类别支持指定多个过滤项,使用英文半角逗号(,)分隔,例如 同时,支持多字段组合过滤,使用 |
step | string | 否 | 对返回结果按时间段切分为多个成本集,step描述单个成本集的持续时间,例如“1d”、“1w”。如果未指定,默认为 说明 成本集指一个时间段内Kubernetes对象成本的集合,例如一个Pod在持续时间内的成本集合。 |
aggregate | string | 否 | 对返回结果按照不同维度进行聚合。支持的类别包括:
|
format | string | 否 | 成本导出格式。支持的类别包括:
|
返回参数
名称 | 类型 | 描述 |
properties | object | 描述关联Kubernetes对象的属性。 |
pod | string | Pod名称。 |
namespace | string | 命名空间。 |
controllerKind | string | 控制器类型。 |
controller | string | 控制器名称。 |
start | string | 成本集的开始时间。 |
end | string | 成本集的结束时间。 |
cpuCoreRequestAverage | float | 请求的平均CPU核心数。 |
cpuCoreUsageAverage | float | 使用的平均CPU核心数。 |
ramByteRequestAverage | float | 请求的平均内存量。 |
ramByteUsageAverage | float | 使用的平均内存量。 |
cost | float | 估算成本。默认成本估算策略为CPU权重100%,自定义资源权重请参见成本估算策略介绍。 |
costRatio | float | 成本占比。描述当前成本占集群总成本的比例。 |
customCost | float | 自定义成本。 |
(可选)步骤一:自定义资源成本权重
Cost V2 API默认使用CPU权重100%的成本估算策略。如需自定义资源成本权重,请参见以下步骤。
步骤二:获取成本数据
本小节使用curl命令访问Kubernetes API。具体操作,请参见使用Kubernetes API。
示例一:获取某个DaemonSet昨天的估算成本明细
获取命令
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=yesterday' \
-d 'filter=namespace:"kube-system"+controllerKind:"DaemonSet"+label[app]:"terway-eniip"' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
返回示例(JSON格式)
示例二:获取某个Pod三小时内的估算成本明细,成本集按小时维度拆分
获取命令
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=2024-03-24T00:00:00Z,2024-03-24T03:00:00Z' \
-d 'step=1h' \
-d 'filter=namespace:"kube-system"+pod:"terway-eniip-kz68n"' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
返回示例(JSON格式)
相关文档
Allocation API结合了账单数据,提供业务分摊账单的费用,可用于对账,请参见通过Allocation API获取。