如何获取项目内每个GKE集群的月度Billing数据?
GKE集群粒度月度账单查询实现方案
这个需求完全可以实现,操作逻辑如下:
前置条件
你需要提前在GCP控制台开启GKE成本分配功能,开启后系统会自动给所有GKE相关的计费项打上goog-k8s-cluster-name的系统标签,标签值对应集群名称,该标签会同步写入导出到BigQuery的账单数据中。
注意:未开启成本分配之前产生的历史账单数据不会包含该标签,无法回溯拆分,仅支持统计开启后新产生的费用。
查询示例
你可以直接在BigQuery中运行以下SQL查询单月各GKE集群的账单:
SELECT DATE_TRUNC(usage_start_time, MONTH) AS 账单月份, (SELECT value FROM UNNEST(labels) WHERE key = 'goog-k8s-cluster-name') AS GKE集群名称, SUM(cost) + SUM(IFNULL(credits.amount, 0)) AS 抵扣后总费用 FROM `你的Billing导出表完整路径` -- 格式一般为 project.dataset.gcp_billing_export_v1_xxx LEFT JOIN UNNEST(credits) AS credits ON TRUE WHERE service.description = 'Google Kubernetes Engine' AND DATE(usage_start_time) >= '2024-01-01' -- 替换为你要统计的月份起始日期 AND DATE(usage_start_time) < '2024-02-01' -- 替换为你要统计的月份结束日期 AND (SELECT value FROM UNNEST(labels) WHERE key = 'goog-k8s-cluster-name') IS NOT NULL GROUP BY 账单月份, GKE集群名称 ORDER BY 抵扣后总费用 DESC
补充说明
- 如果你需要将集群关联的LB、Persistent Disk等关联资源费用也计入对应集群账单,需要提前给这些关联资源手动打标,标签键可以自定义,查询时调整对应标签筛选规则即可
- 项目级共享资源(如共享VPC、Cloud NAT等)的费用默认无法直接归集到单个集群,需要自行定义分摊规则后再做统计
内容的提问来源于stack exchange,提问作者avinashjha
相关产品推荐
相关产品推荐

