文档

通过Allocation API获取成本数据

更新时间:

您可以通过Allocation API查询业务分摊到的集群账单费用,用于财务治理周期内的业务对账。

前提条件

已参见通过API获取成本数据概述完成准备工作。

请求与返回参数

请求语法

GET /v2/allocation

请求参数

字段

类型

是否必选

描述

window

string

查询的持续时间。由于成本数据需要结合云产品账单数据来输出,所以最小持续时间为24h。接受以下几种格式的输入:

  • 关键词:例如“week”、“month”、“yesterday”、“lastweek”、“lastmonth”。

  • 持续时间:例如“24h”、“7d”。

  • RFC3339日期:逗号分隔的RFC3339格式的日期对,例如“2024-03-26T00:00:00Z,2024-03-27T00:00:00Z”。

  • Unix时间戳:逗号分隔的Unix时间戳(秒)对,例如“1711382400,1711468800”。

filter

string

对指定资源类别进行过滤。支持的类别包括:

  • namespace

  • controllerName

  • controllerKind (replicaset、daemonSet、job等)

  • pod

  • label

同一个类别支持指定多个过滤项,使用英文半角逗号(,)分隔,例如namespace:"default","kube-system"

同时,支持多字段组合过滤,使用+分隔,例如namespace:"default"+label[app]:"nginx"

step

string

对返回结果按时间段切分为多个成本集,step描述单个成本集的持续时间,例如“1d”、“1w”。如果未指定,默认为window的时间范围。

说明

成本集指一个时间段内Kubernetes对象成本的集合,例如一个Pod在持续时间内的成本集合。

aggregate

string

对返回结果按照不同维度进行聚合。支持的类别包括:

  • namespace

  • controller

  • controllerKind

format

string

成本导出格式。支持的类别包括:

  • json(默认值)

  • csv

返回参数

名称

类型

描述

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

分摊集群总账单的成本。

costRatio

float

成本占比。描述当前成本占集群总成本的比例。

customCost

float

自定义成本。

获取成本数据

本小节使用curl命令访问Kubernetes API。具体操作,请参见使用Kubernetes API

示例:获取某个DsaemonSet昨天分摊集群账单的费用

获取命令

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/allocation" | jq .

返回示例(JSON格式)

展开查看返回示例

{
  "data": [
    {
      "kube-system/terway-eniip-88286": {
        "name": "kube-system/terway-eniip-88286",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-88286"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 65815511.039,
        "cost": 4.497,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-j8c87": {
        "name": "kube-system/terway-eniip-j8c87",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-j8c87"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 186293944.32,
        "cost": 6.504,
        "costRatio": 0.023,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-xjsr8": {
        "name": "kube-system/terway-eniip-xjsr8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-xjsr8"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 53661380.923,
        "cost": 2.337,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}