关于 gke-cost-analysis
gke-cost-analysis 是面向 GKE 成本分析问题的技能,帮助使用 BigQuery 账单导出和实时集群指标分析费用、利用率及成本驱动因素。它提供查询模板与只读检查命令,并区分 Autopilot 和 Standard 的计费方式。
主要功能
- 01分析 BigQuery 账单导出
- 02按集群、命名空间和工作负载拆分费用
- 03比较实时用量与资源请求
- 04说明 Autopilot 与 Standard 计费差异
- 05提供 bq 查询模板和检查命令
适用场景
- 01找出费用最高的命名空间或工作负载
- 02调查集群成本突然上升
- 03对比 Pod 用量与请求以定位浪费
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill gke-cost-analysis安装后在 Claude Code 中输入/gke-cost-analysis确认已加载。
附带文件references/attribution.mdreferences/billing-queries.md
详细介绍
GKE 成本分析
本技能提供有关 GKE 相关成本、账单报告和利用率分析的自然语言问题解答指导。
归属信息
必须阅读:执行任何 gcloud、REST API 或 MCP 命令之前,必须阅读使用归属信息。对于直接在终端中执行的命令(绝不在生成的脚本、Terraform 或用户代码中),请在 gcloud 前加上 CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-cost-analysis)",并在 User-Agent 标头中追加 agent-skills/1.0 (skill:gke-cost-analysis)。
概述
当用户询问 GKE 成本时(例如:“各个项目的成本是多少?”、“哪个命名空间最贵?”、“为什么我的集群成本激增?”),请使用本技能,结合 BigQuery 账单导出、成本分配元数据和实时集群指标,提供结构化且专业的答复。
说明
处理与成本相关的问题时:
- 直接作答:清楚、简洁地回答具体的成本问题或分析请求。
- 说明 BigQuery 集成:说明如何查询 BigQuery 以获取历史成本明细。请注意,GKE 成本来源于 GCP 账单详细信息 BigQuery 导出(
gcp_billing_export_resource_v1_*)。 - 检查并验证成本分配:说明必须在集群上启用 GKE 成本分配(
--enable-cost-allocation),才能按命名空间、标签和工作负载粒度统计账单。如果查询结果中的标签为空,请提供启用该功能的gcloud命令。 - 分析定价因素和利用率:诊断成本因素时,说明集群使用的是 Autopilot(按 Pod 请求的 CPU/内存计费)还是 Standard 模式(按底层 VM 节点规格和控制平面费用计费),并将实时利用率(
kubectl top)与预留请求量进行比较。 - 提供可执行的命令和查询:提供具体的 BigQuery CLI(
bq query)命令,或只读的gcloud/kubectl检查命令。如可用,优先使用bq,而非 BigQuery Studio。
要点和定价因素
- 数据来源:GKE 成本来自 GCP 账单详细信息 BigQuery 导出。用户必须提供 BigQuery 表的完整路径(包含账单账号 ID 的数据集名称和表名)。
- 粒度要求:必须在集群上启用 GKE 成本分配(
--enable-cost-allocation),才能在 BigQuery 中填充goog-k8s-cluster-name、k8s-namespace、k8s-workload-name和k8s-workload-type标签。 - Autopilot 与 Standard 的成本因素:
- Autopilot 定价:直接按 Pod 资源请求(
requests.cpu、requests.memory、临时存储)计费。即使 Pod 并未实际使用相应的 CPU 周期或内存,过度请求资源也会推高账单。 - Standard 定价:按已预配的节点池 VM(
e2、n4、c3等)计费。闲置节点或多个利用率较低的开发集群会造成额外的基础设施成本。 - 集群管理费:Standard 和 Autopilot 模式均按每个集群每小时约 0.10 美元收费。每个账单账号可为一个符合条件的集群免除这笔费用。
- Autopilot 定价:直接按 Pod 资源请求(
- 抵扣额和折扣的影响:分析
cost与cost_before_credits时,请注意,承诺使用折扣(CUD)和 Spot VM 会在账单导出中显示为抵扣额或降低费率后的费用。 - 工具和语法:优先使用 BigQuery CLI(
bq)。编写 Standard SQL 查询时,请使用句点(.)而非冒号(:)分隔项目 ID 和数据集名称({project_id}.{dataset_name}.{table_name})。 - 默认值:除非另有说明,否则假定查询最近 30 天的数据,行数上限为 10,并按成本降序排序(
ORDER BY cost DESC)。
实时集群与成本监控
使用只读 CLI 命令检查当前集群预算、节点利用率,以及 Pod 资源消耗与请求量的对比:
# View billing budgets for an account (requires Cost Management API)
gcloud billing budgets list --billing-account={billing_account} --quiet
# View live node resource utilization across the cluster
kubectl top nodes
# View pod resource usage across namespaces (compare against requested limits to diagnose waste)
kubectl top pods --all-namespaces --containers
警告 — 会修改集群,并非只读操作: 启用 GKE 成本分配会修改集群。运行前请先获得用户的明确确认,并说明命名空间/工作负载标签只会从启用之日起出现在账单导出数据中(不会回填历史数据)。
gcloud container clusters update {cluster_name} \ --enable-cost-allocation \ --region {region}
应用成本优化
如需根据分析结果应用规格调整变更(例如设置 VPA 建议模式、将 CPU/内存调整为 P95 * 1.2、通过 nodeSelector 或 ComputeClass 配置 Spot VM、强制执行 ResourceQuotas,或选择机器类型和 CUD),请使用 gke-cost-optimization 技能。
BigQuery 查询模板
可直接调整的 bq query 模板包括单个工作负载成本、按集群细分的各工作负载成本,以及按命名空间细分的成本;模板中的占位符策略和默认值(30 天、LIMIT 10、ORDER BY cost DESC)见references/billing-queries.md。所有参数(数据集、表、项目、集群等)都必须替换为用户提供的值。
注意:检查 goog-k8s-cluster-name 标签是否存在,可将账单总数据限定为 GKE 成本。