如何通过Terraform为GCP Notebook实例绑定资源策略实现定时启停
可行实现方案
方案1:绑定底层GCE实例的资源策略(推荐)
Vertex AI Workbench(原Google Notebook)实例底层实际运行的是标准GCE虚拟机,实例创建后会自动生成和Notebook实例同名的GCE实例,你可以通过Terraform的google_compute_resource_policy_attachment资源,将定时启停的资源策略直接绑定到该底层GCE实例上,即可实现预期调度效果。
示例Terraform代码如下:
# 1. 创建定时启停资源策略 resource "google_compute_resource_policy" "notebook_schedule" { name = "notebook-instance-schedule" region = var.region instance_schedule_policy { vm_start_schedule { schedule = "0 8 * * *" # 每日早8点启动 } vm_stop_schedule { schedule = "0 19 * * *" # 每日晚7点停止 } time_zone = "Asia/Shanghai" # 按需替换为你需要的时区 } } # 2. 创建Notebook实例 resource "google_notebooks_instance" "my_notebook" { name = "my-workbench-notebook" location = var.zone machine_type = "n1-standard-4" # 其他Notebook实例配置按需补充 } # 3. 将调度策略绑定到Notebook对应的底层GCE实例 resource "google_compute_resource_policy_attachment" "notebook_policy_attach" { name = google_compute_resource_policy.notebook_schedule.name instance = "projects/${var.project}/zones/${var.zone}/instances/${google_notebooks_instance.my_notebook.name}" zone = var.zone }
注意:仅绑定调度策略不会修改Notebook实例的原有配置,不会影响实例正常使用,建议配置时确认时区参数和业务时区一致。
方案2:Cloud Scheduler + Cloud Function 自定义启停
如果担心直接操作底层GCE实例会和Notebook服务配置产生冲突,可以采用无服务自定义调度的方式实现:
- 创建两个Cloud Scheduler cron任务,触发时间分别设置为每日早8点、晚7点
- 编写轻量Cloud Function代码,调用Notebook实例的启停API执行对应操作
- 配置IAM权限,保证Cloud Scheduler有权限触发Cloud Function,Cloud Function持有Notebook实例的操作权限
该方案灵活度更高,还可以扩展加入周末不启动、节假日跳过等自定义逻辑。
内容的提问来源于stack exchange,提问作者Ahmed Cheikhrouhou
相关产品推荐
相关产品推荐

