GCP资源优化器 gcp-resource-optimizer

这个技能用于优化Google Cloud Platform(GCP)资源分配和云信用管理,帮助用户最大化云资源价值、降低成本、设置预算警报和清理未使用资源。适用于云成本优化、预算管理、DevOps和云原生架构场景。关键词:GCP, 资源优化, 云成本管理, 预算控制, DevOps, 云计算, 成本优化。

GCP 0 次安装 0 次浏览 更新于 3/7/2026

名称: gcp-resource-optimizer 描述: 优化Google Cloud Platform资源分配并有效管理云信用。在规划GCP部署、分析云支出、最大化即将到期信用的价值、调整实例大小或设计经济高效架构时使用。触发条件包括GCP成本优化、信用管理、资源分配规划或云预算问题。 许可证: MIT

GCP资源优化器

通过策略性分配最大化GCP资源和信用的价值。

信用消耗策略

信用到期规划

管理即将到期的信用时:

  1. 审核当前使用情况gcloud billing accounts describe ACCOUNT_ID
  2. 计算消耗率:总信用 ÷ 剩余天数 = 所需每日支出
  3. 识别高价值用途:什么是创造持久价值与临时计算?

高价值信用用途

持久价值(优先):

  • 训练机器学习模型(工件持久)
  • 构建容器镜像
  • 生成数据集
  • 对累积工作运行批处理

临时性(策略性使用):

  • 计算实例(关闭后消失)
  • 开发环境
  • 测试基础设施

成本优化模式

Compute Engine

调整实例大小:

# 检查推荐
gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --location=ZONE \
  --recommender=google.compute.instance.MachineTypeRecommender

经济高效机器类型:

需求 推荐 原因
通用工作负载 e2-medium 最佳性价比
内存密集型 n2-highmem 更好的RAM比例
CPU突发 e2-micro/small 可突增,便宜
ML训练 n1 + GPU 需要加速器
容忍Spot实例 Spot VMs 60-91%折扣

抢占式/Spot VMs:

  • 比标准便宜60-91%
  • 可能以30秒通知终止
  • 适用于:批处理作业、容错工作负载、开发
  • 不适用于:生产、有状态服务

Cloud Run

优化Cloud Run:

# 最小化冷启动和成本
spec:
  template:
    spec:
      containerConcurrency: 80  # 最大化每个实例的请求数
      timeoutSeconds: 300
    metadata:
      annotations:
        autoscaling.knative.dev/minScale: '0'  # 缩放到零
        autoscaling.knative.dev/maxScale: '10'  # 限制成本
        run.googleapis.com/cpu-throttling: 'true'  # 仅在处理时使用CPU

Cloud Storage

存储类别优化:

类别 使用案例 成本/GB/月
Standard 频繁访问 ~$0.020
Nearline 月度访问 ~$0.010
Coldline 季度访问 ~$0.004
Archive 年度访问 ~$0.0012

生命周期规则:

{
  "lifecycle": {
    "rule": [
      {
        "action": {"type": "SetStorageClass", "storageClass": "NEARLINE"},
        "condition": {"age": 30}
      },
      {
        "action": {"type": "SetStorageClass", "storageClass": "COLDLINE"},
        "condition": {"age": 90}
      },
      {
        "action": {"type": "Delete"},
        "condition": {"age": 365}
      }
    ]
  }
}

BigQuery

成本控制:

-- 设置最大计费字节
#standardSQL
-- @maximumBytesBilled 10000000000
SELECT * FROM dataset.table

分区以减少成本:

CREATE TABLE dataset.table
PARTITION BY DATE(timestamp_column)
CLUSTER BY user_id
AS SELECT * FROM source_table

预算警报

设置预算警报:

gcloud billing budgets create \
  --billing-account=BILLING_ACCOUNT_ID \
  --display-name="月度预算" \
  --budget-amount=100USD \
  --threshold-rule=percent=50 \
  --threshold-rule=percent=90 \
  --threshold-rule=percent=100

资源清理

查找未使用资源

# 未使用磁盘
gcloud compute disks list --filter="NOT users:*"

# 未使用IP
gcloud compute addresses list --filter="status=RESERVED"

# 空闲VMs(按CPU)
gcloud monitoring time-series list \
  --filter='metric.type="compute.googleapis.com/instance/cpu/utilization"' \
  --interval="start=2024-01-01T00:00:00Z"

清理脚本

#!/bin/bash
# cleanup_unused.sh - 运行前检查!

# 列出(不删除)未使用资源
echo "=== 未使用磁盘 ==="
gcloud compute disks list --filter="NOT users:*" --format="table(name,zone,sizeGb)"

echo "=== 预留IP ==="
gcloud compute addresses list --filter="status=RESERVED" --format="table(name,region,address)"

echo "=== 超过30天的快照 ==="
gcloud compute snapshots list --filter="creationTimestamp<$(date -d '30 days ago' -Iseconds)" --format="table(name,diskSizeGb,creationTimestamp)"

成本架构模式

无服务器优先

请求 → Cloud Run → Firestore → 完成
         (缩放到零)  (按操作付费)

对比

请求 → GKE → Cloud SQL → 完成
         (持续运行)  (持续运行)

批处理

Pub/Sub → Cloud Functions → BigQuery(批量加载)
                           (比流处理便宜)

开发环境与生产环境

开发环境:

  • Spot/抢占式VMs
  • 较小机器类型
  • 缩放到零的服务
  • 共享资源

生产环境:

  • 承诺使用折扣(1-3年)
  • 调整大小的专用实例
  • 仅在需要时冗余

监控设置

# 启用计费导出到BigQuery
gcloud beta billing accounts describe ACCOUNT_ID

# 查询成本
#standardSQL
SELECT
  service.description,
  SUM(cost) as total_cost
FROM `project.dataset.gcp_billing_export_v1_*`
WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY 1
ORDER BY 2 DESC

参考文献

  • references/pricing-cheatsheet.md - 快速定价参考
  • references/cost-queries.md - BigQuery成本分析查询