每个月第一个工作日的上午,我大概率是黑着脸从会议室出来的。不是业务出了什么问题,而是GCP账单又比我记忆中的数字高了一截。这绝不是个别现象——大多数团队在GCP上花的钱,至少有两三成处于“没人说得清为什么花”的状态。GCP成本优化这件事,难点还真不是找不到省钱技巧,而是你根本不知道钱到底花在了哪里。这篇文章会把我在生产环境里实际用过的路径完整整理出来:从看懂计费模型、把账单拆解到项目和标签,到真正能用Spot实例、承诺折扣、定时关机这些手段落地的省钱方案,最后再讲怎么用预算、告警和一套月度体检流程,让成本不反弹。适合刚接手GCP成本管理的工程师,也适合被月度账单吓到、准备系统性省钱的团队。
1. 账单为什么会失控:GCP计费模型里那些容易漏掉的点
很多人一上来就找“优惠”,但我建议先把GCP的计费机制搞明白。这个云平台的计费规则和别的厂商有很不一样的地方,同一个动作,在不同条件下可能是两种价格。你如果不清楚这几条底层逻辑,后面做的所有优化都有可能跑偏。
1.1 按秒计费是优势,但也助长了“不用白不用”的心态
GCP的Compute Engine是秒级计费,1分钟起算,相比按小时计费的老模式,理论上对用户更友好。测试环境开一台机器跑十分钟,成本几乎可以忽略。这个设计本身没问题,但它带来了一个副作用:因为“开机很便宜”,很多人就默认让资源一直在跑,反正跑一天也就几十块钱。然而一台中低配的VM看似单价不高,一个月连续运行下来,累计费用就变成了“一台新设备”级别;规格稍微往上走,一年下来够买好几台。账单往往不是被某一个昂贵操作打爆的,而是被大量“不关机、不过问、不清理”的闲置实例慢慢磨爆的。
按秒计费的另一个隐藏细节是:它只适用于常规的按需虚拟机。你如果创建了GPU实例、TPU节点,或者启用了某些特殊机型,计费粒度并不一样。同样,抢占式实例提前终止后的结算规则,也会因为“是否运行满一分钟”产生差异。实际做法应该是:先给所有计算资源分类,明确哪些是“常驻基数”,哪些是“可容忍中断的弹性负载”,哪些是“用完就该删的临时环境”,然后再决定用什么计费类型。这一步做好了,后面谈优化才有意义。
1.2 不跟着VM走的隐形支出:静态IP、磁盘与快照
比起虚拟机本身的费用,容易被忽略的是那些“不会因为你删除VM就消失”的资源。最典型的就是静态IP——只要你在项目里预留了一个静态IP,但它没有关联到任何正在运行的资源,它就开始计费。我见过不止一个团队,删了服务器忘了释放IP,结果每个月账单上多出一笔不大不小的固定开销,查看账单时还以为是税金。
磁盘和快照是另一个重灾区。GCP上创建VM时默认会带一块启动盘,很多操作习惯是:删除VM时不勾选“同时删除启动盘”,于是越来越多“孤儿磁盘”躺在项目里,每块按GB持续计费。快照更隐蔽,一个每天自动备份的磁盘,如果保留周期设成30天,快照数量会线性累积,而且GCP的快照计费是按实际占用存储空间算的,不是按“原磁盘大小”算。很多时候你只记得“开了备份”,却从没算过快照每个月到底吃掉了多少钱。我的建议是:每季度做一次磁盘和快照清理,把“无人认领”的资源全部列出来,该删就删,该压缩保留周期就压缩。
1.3 流量费用:账单上的“暗雷”
计算和存储毕竟有直观的Dashboard能看到,网络流量则完全处于“看不见摸不着”的状态。GCP的流量计费有几个关键点:同一区域(region)内不同可用区(zone)之间的流量是收费的,跨区域传输更贵,而流出到公网的出口带宽按GB计价,是成本的大头。尤其当你做了多区域高可用部署、读取大量外部数据源、或者向前端提供大文件下载时,网络费用经常会超过计算费用,成为账单里最大的单一项目。
再叠加一个容易忽略的配置:Cloud NAT。它不仅能帮你实现无公网IP出站,还会产生每GB处理费和小时费。很多习惯了NAT网关的团队,跑了一批批短任务,没太在意NAT的计费规则,一个月下来额外多了几百美元。对流量费用,我目前比较有效的做法是:在BigQuery账单里按SKU和区域聚合,专门找出“出口流量”相关的条目,看哪些实例/服务在持续产生高额流量。如果某个服务只是内部调用,却被配置了公网出口,立刻改成Internal通信,效果往往立竿见影。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 别猜了,先把账本打开:Cloud Billing + BigQuery 定位浪费源
我早期做成本优化也走过弯路:一会儿听销售说该买长期折扣,一会儿看博客说Spot实例能省钱,结果凭感觉做了很多动作,月底一看账单还是老样子。后来我才意识到,问题不在于“没有省钱手段”,而在于“我不知道该对哪个部分下手”。所以整个优化过程的第一步,不是改架
