mcpField
G
gke-cost

gke-cost

github.com/google云与 DevOps21.6k1.3k 次安装今天更新
代码仓库

关于 gke-cost

gke-cost 是供 GKE 集群运营团队参考的成本优化指南,介绍工作负载放置、资源规格调整、机器选择、折扣及集群管理,并兼顾可靠性和安全因素。

主要功能

  1. 01Spot VM 放置建议
  2. 02Pod 资源规格调整
  3. 03机器系列选择
  4. 04承诺使用折扣指南
  5. 05集群成本管理
  6. 06成本与资源监控

适用场景

  1. 01为可容错工作负载选择 Spot VM
  2. 02降低 Pod 过大的资源请求
  3. 03按工作负载需求选择机器系列
  4. 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

黄金路径成本优化功能

黄金路径已包含成本优化设置:

设置值影响
autoscalingProfileOPTIMIZE_UTILIZATION激进地缩减节点,降低闲置
: : : 计算资源 :
verticalPodAutoscalingenabledVPA 建议可避免过度配置
: : : :
Autopilot 定价按 Pod 请求付费未使用的节点容量不收费
: : : :
Node Auto Provisioningenabled自动创建规格合适的节点池
: : : :

成本优化策略

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 | 已禁用 | | 维护时段 | 已配置 | 不需要 |

评论

支持 Markdown