关于 gke-cost
gke-cost 是供 GKE 集群运营团队参考的成本优化指南,介绍工作负载放置、资源规格调整、机器选择、折扣及集群管理,并兼顾可靠性和安全因素。
主要功能
- 01Spot VM 放置建议
- 02Pod 资源规格调整
- 03机器系列选择
- 04承诺使用折扣指南
- 05集群成本管理
- 06成本与资源监控
适用场景
- 01为可容错工作负载选择 Spot VM
- 02降低 Pod 过大的资源请求
- 03按工作负载需求选择机器系列
- 04检查闲置开发集群的成本
MCP 相关
列出了用于获取和描述 Kubernetes 资源、应用清单、修改资源以及获取集群详情的 MCP 工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill gke-cost安装后在 Claude Code 中输入/gke-cost确认已加载。
详细介绍
GKE 成本优化
本参考介绍了在保持黄金路径安全性和可靠性的同时,降低 GKE 成本的策略。
MCP 工具:
get_k8s_resource、describe_k8s_resource、apply_k8s_manifest、patch_k8s_resource、get_cluster
黄金路径成本优化功能
黄金路径已包含成本优化设置:
| 设置 | 值 | 影响 |
|---|---|---|
autoscalingProfile | OPTIMIZE_UTILIZATION | 激进地缩减节点,降低闲置 |
| : : : 计算资源 : | ||
verticalPodAutoscaling | enabled | VPA 建议可避免过度配置 |
| : : : : | ||
| Autopilot 定价 | 按 Pod 请求付费 | 未使用的节点容量不收费 |
| : : : : | ||
| Node Auto Provisioning | enabled | 自动创建规格合适的节点池 |
| : : : : |
成本优化策略
1. 通过 ComputeClasses 使用 Spot VM
对可容错工作负载使用 Spot VM(可降低 60-90% 的成本)。
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: spot-with-fallback
spec:
activeMigration:
optimizeRulePriority: true
priorities:
- machineFamily: n4
spot: true
- machineFamily: n4
spot: false
适合使用 Spot 的工作负载:
| 工作负载 | 适合使用 Spot? |
|---|---|
| 批处理 / 数据处理 | 是 |
| 开发 / 测试环境 | 是 |
| 无状态 Web/API(副本数 >= 2) | 是(需配置 PDB) |
| 使用检查点的作业 | 是 |
| 有状态工作负载(数据库) | 否 |
| 单副本关键服务 | 否 |
处理驱逐:
spec:
template:
spec:
terminationGracePeriodSeconds: 25 # Must be < 30s for Spot
containers:
- name: app
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 5"]
1.1 直接为工作负载选择 Spot(NodeSelector)
对于 GKE Autopilot 中的无状态或批处理工作负载,无需创建自定义 ComputeClass 即可使用 Spot VM。只需在 Pod 或 Deployment 规格中添加 nodeSelector,即可直接指定内置的 Spot 容量。
警告
抢占警告:Spot VM 可随时中断,并会提前 30 秒通知。工作负载必须具备容错能力,并至少运行 2 个副本以确保高可用性。推荐 Spot VM 时,务必明确告知用户存在被抢占的风险。
apiVersion: apps/v1
kind: Deployment
metadata:
name: stateless-spot-app
spec:
replicas: 2
template:
spec:
nodeSelector:
cloud.google.com/gke-provisioning: Spot
terminationGracePeriodSeconds: 25 # Must be < 30s to allow graceful shutdown before preemption
containers:
- name: app
image: <IMAGE>
2. Pod 规格调整
利用 VPA 建议,减少过度配置的请求。
# 1. Deploy VPA in recommendation mode
kubectl apply -f - <<EOF
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: <DEPLOYMENT>-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: <DEPLOYMENT>
updatePolicy:
updateMode: "Off"
EOF
# 2. Wait 24+ hours for data collection
# 3. Read recommendations
kubectl get vpa <DEPLOYMENT>-vpa -o jsonpath='{.status.recommendation}'
优化规则:
| 条件 | 操作 | 节省幅度 |
|---|---|---|
| CPU 请求 >5x P95 实际值 | 调整为 P95 * 1.2 | 高 |
| 内存请求 >3x P95 实际值 | 调整为 P95 * 1.2 | 高 |
| CPU 请求 >2x P95 实际值 | 调整为 P95 * 1.2 | 中 |
| 未设置资源请求 | 添加请求(启用装箱优化) | 中 |
3. 机器类型选择
| 系列 | 用例 | 相对成本 |
|---|---|---|
| e2 | 通用型,可突发 | 最低 |
| t2a / t2d | 横向扩展(Arm/AMD),性价比高 | 低 |
| : : 优化 : : | ||
| n4a | 基于 Axion Arm,通用型 | 低 |
| : : 性价比高 : : | ||
| n4 / n4d | 通用型(Intel/AMD),规格灵活 | 低至中 |
| c4a | 计算优化型(Arm),效率高 | 中至高 |
| c3 / c4 | 计算优化型(Intel) | 中至高 |
| c3d / c4d | 计算优化型(AMD),高性能 | 中至高 |
| : : 吞吐量 : : | ||
| ek-standard | 增强型 Autopilot(黄金路径) | 中 |
| m3 / x4 | 内存优化型、SAP HANA、大型数据库 | 高 |
| g2(L4 GPU) | AI 推理 | 高 |
| a3(H100 GPU) | AI 训练 | 最高 |
| a4 / a4x | 超大规模 AI(Blackwell GPU) | 最高 |
在 Autopilot 中,机器类型由系统管理。使用 ComputeClasses 影响 类型选择。
4. 承诺使用折扣(CUD)
对于稳定运行的工作负载,可购买 1 年或 3 年期 CUD:
- 1 年期:约 20-30% 折扣
- 3 年期:约 50-55% 折扣
- 自动应用于该区域内符合条件的用量
- 通过 Google Cloud Console > Billing > Committed use discounts 购买
5. 集群管理
- 停止/启动开发集群:即使没有工作负载,闲置的开发集群仍会产生费用(控制平面费用)。
- 调整节点池大小(Standard):使用 Cluster Autoscaler 并设置适当的最小值/最大值。
- 多租户集群:由多个团队共享单个集群,而不是每个团队使用独立集群(参见
gke-multitenancy技能)。
成本监控
# View cluster cost breakdown (requires Cost Management API)
gcloud billing budgets list --billing-account=<BILLING_ACCOUNT> --quiet
# View node utilization
kubectl top nodes
# View pod resource usage vs requests
kubectl top pods --all-namespaces --containers
开发/测试成本节省
对于非生产环境,以下偏离黄金路径的设置可以接受:
| 设置 | 生产环境(黄金路径) | 开发/测试 | : : : : | ----------------------- | ------------------ | ----------------------------- | | 集群模式 | Autopilot | Autopilot(Pod 较少时更便宜) | | 发布渠道 | Regular | Rapid(更快获得修复) | | 专用节点 | 必需 | 可选(访问更简单) | | 监控组件 | 完整套件 | 仅 SYSTEM_COMPONENTS | | Secret Manager 轮换 | 120s | 已禁用 | | 维护时段 | 已配置 | 不需要 |