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

如何通过Cloud Scheduler定时关闭Compute Engine虚拟机?

定时关闭GCP测试虚拟机方案

能否通过Cloud Scheduler实现定时关机?

可以,但Cloud Scheduler本身无法直接操作Compute Engine虚拟机,需要搭配Cloud Functions(或Cloud Run)来调用Compute Engine API完成关机动作,也可以通过Pub/Sub作为中间触发层。

需要用到的其他GCP服务

  • Cloud Functions:编写轻量代码调用Compute Engine的关机API,处理批量VM的关闭逻辑
  • Compute Engine API:需提前启用该API才能调用实例操作接口
  • IAM权限配置:给Cloud Functions的服务账号分配compute.instances.stop权限(或更宽泛的Compute Instance Admin角色),确保能执行关机操作

快速实现步骤

  1. 先在GCP控制台启用Cloud Scheduler、Cloud Functions、Compute Engine API
  2. 创建Cloud Function:
    • 触发器选Cloud Pub/Sub,新建一个主题(比如stop-test-vms)
    • 编写函数代码(以Python为例):
      import googleapiclient.discovery
      
      def stop_test_vms(event, context):
          compute = googleapiclient.discovery.build('compute', 'v1')
          PROJECT_ID = '你的项目ID'
          ZONE = '虚拟机所在区域(如us-central1-a)'
          TARGET_VMS = ['test-vm-01', 'test-vm-02']  # 替换成你的测试VM名称
      
          for vm_name in TARGET_VMS:
              try:
                  compute.instances().stop(
                      project=PROJECT_ID,
                      zone=ZONE,
                      instance=vm_name
                  ).execute()
                  print(f"已发起关闭指令:{vm_name}")
              except Exception as e:
                  print(f"关闭{vm_name}失败:{str(e)}")
      
  3. 创建Cloud Scheduler任务:
    • 设置触发频率(比如0 18 * * 1-5,代表工作日每天18点执行)
    • 目标类型选Cloud Pub/Sub,指定刚才创建的主题
    • 消息内容可随意填写(函数不需要解析该内容)

虚拟机启停选项的配置时机

不是只能在创建VM时配置自动启停,已创建的VM也可以修改:

  1. 进入Compute Engine控制台,找到目标VM
  2. 点击顶部的编辑按钮
  3. 滚动到页面底部的自动启停模块,勾选启用后即可设置启动/停止的时间规则
  4. 注意:该方式只能单台VM独立配置,若有多台测试VM需要统一管理,还是用Cloud Scheduler+Cloud Functions的批量方案更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:17:37