GCP资源优化器 gcp-resource-optimizer

GCP资源优化技能用于优化Google Cloud Platform上的资源分配和云积分管理,旨在降低成本、提高效率。关键词:GCP,资源优化,云积分,成本控制,云计算。

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

name: GCP资源优化器 description: 优化Google Cloud Platform资源分配并高效管理云积分。用于规划GCP部署、分析云支出、最大化过期积分的价值、调整实例大小或设计成本效益架构。触发于GCP成本优化、积分管理、资源分配规划或云预算问题。 license: MIT

GCP资源优化器

通过战略分配最大化GCP资源和积分的价值。

积分使用策略

积分过期规划

当管理过期积分时:

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

高价值积分用途

持久价值(优先考虑):

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

临时(战略使用):

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

成本优化模式

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%折扣

Preemptible/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="Monthly Budget" \
  --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"
# 空闲VM(按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)"

成本架构模式

无服务器优先

Request → Cloud Run → Firestore → Done
         (缩放到零)  (按操作付费)
vs.
Request → GKE → Cloud SQL → Done
         (始终运行)  (始终运行)

批处理

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

开发 vs 生产

开发环境:

  • Spot/preemptible 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成本分析查询