You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Google Cloud Run实例定时自动刷新并保留最小实例数?

解决Cloud Run最小实例定期刷新的方案

以下是三种无需重新部署代码即可实现Cloud Run实例定期刷新的可行方案:

方案一:通过Cloud Scheduler触发缩容再扩容

利用Cloud Run的实例数配置API,先将实例数强制缩为0,再恢复原有最小实例数,实现全量实例重启:

  • 编写Shell脚本,包含两个核心命令:
    1. 缩容所有实例:
      gcloud run services update YOUR_SERVICE_NAME --min-instances=0 --max-instances=0 --region=YOUR_REGION
      
    2. 等待3-5分钟(确保实例完全终止)后,恢复原有配置:
      gcloud run services update YOUR_SERVICE_NAME --min-instances=10 --max-instances=YOUR_ORIGINAL_MAX --region=YOUR_REGION
      
  • 将脚本部署为Cloud Run Job或Cloud Functions,通过Cloud Scheduler按计划(如每日一次)触发执行。
  • 注意:缩容阶段会短暂无可用实例,适用于可接受短暂服务中断的场景。

方案二:应用内部实现实例自终止逻辑

在Python应用中加入定时自终止逻辑,让实例分批重启,避免服务中断:

  • 引入定时任务库(如APScheduler),在实例启动时设置一个随机延迟的定时任务(比如延迟1-60分钟),之后每24小时触发一次自终止:
    import sys
    from apscheduler.schedulers.background import BackgroundScheduler
    import random
    import time
    
    def terminate_instance():
        print("Instance scheduled to terminate, exiting...")
        sys.exit(0)
    
    # 启动时随机延迟,避免所有实例同时终止
    delay_minutes = random.randint(1, 60)
    scheduler = BackgroundScheduler()
    scheduler.add_job(terminate_instance, 'interval', hours=24, start_date=time.time() + delay_minutes*60)
    scheduler.start()
    
  • Cloud Run会自动补充新实例维持最小实例数,实现实例的分批刷新,全程无服务中断。

方案三:基于相同代码创建新修订版本并切换流量

利用Cloud Run的修订版本机制,无需修改代码即可生成新实例:

  • 基于当前运行的修订版本,创建一个完全相同的新修订版本(不分配流量):
    gcloud run services update YOUR_SERVICE_NAME --region=YOUR_REGION --no-traffic
    
  • 将100%流量切换到新修订版本:
    gcloud run services update-traffic YOUR_SERVICE_NAME --to-revisions=NEW_REVISION_NAME=100 --region=YOUR_REGION
    
  • 旧修订版本因无流量会被自动终止,新修订版本会启动指定数量的最小实例。通过Cloud Scheduler定期触发此流程即可。

内容的提问来源于stack exchange,提问作者ArinL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:01:30