如何使用 Cloud Scheduler 启动 VM 实例

问题描述

背景和目标

我在 Debian/Linux VM 上有一个 GCP,我每天早上手动启动它,在它运行后,它会使用 Linux 命令自行关闭。我想使用 Cloud Scheduler 自动启动 VM。 GCP auto shutdown and startup using Google Cloud Schedulers 中提出的问题有几个答案,我对追求 @nikelone 提出的答案 (https://stackoverflow.com/a/65062924/10322004) 很感兴趣,因为它看起来很简单,而且得到了 {{1 }} 和 @damien 一样简单。我是这些问题的新手,我无法完全理解他们的回答。因此,创建此帖子是为了为像我这样的人提供更明确的答案。

我的尝试

我已经去了 https://cloud.google.com/compute/docs/reference/rest/v1/instances/start (@RayFoss) 并尝试了 call this page A 并且当我点击执行按钮时能够成功启动我已经停止的 API。我认为这意味着我的条目没有问题,可以与 VM 等适当的软件结合使用,以按预定义的时间表执行启动功能。但问题是我不知道或不明白如何从这里开始。我在下面给出我的问题。

我的问题

  1. Cloud Scheduler 上,最后三段的标题是授权范围、IAM 权限和示例,它们都没有具体说明用户应该做什么。假设它们与 page A 无关,但与实现相同目标的其他方法有关,是否正确?如果这不正确,那么我的下一个问题是我应该做什么来遵循这三段中的陈述?

  2. 假设问题 1 的答案是“是”,这意味着我现在可以开始使用 Cloud Scheduler 进行调度,接下来我查看了 Cloud Scheduler 处的 quickstart Cloud Scheduler {3}} (call this page B)。要做的项目非常多,包括安装 Cloud SDK、在控制台上运行相当多的命令、启用一些功能、设置 Pub/Sub、创建作业、运行作业并在 Pub/Sub 中验证结果。这看起来像是一组令人生畏的任务,我不明白为什么有必要跳过箍来使用之前只需几次击键就已经实现的东西。那么这些步骤都是必要的吗?或者有没有办法直接使用Cloud Scheduler,不需要经过这么多中间步骤?

  3. 现在假设问题 2 的答案是我必须执行 page B 中所述的所有步骤。如果我在完成第 B 页列出的任务时遇到一些问题,我的 VM 可能会无法挽回地搞砸。有没有一种方法可以使用 Cloud Platform 或其组件将我的 VM 重置为今天的当前状态,哪种工作正常?我真的不想最终得到比我现在更糟糕的东西。

解决方法

回答您的问题:

  1. 您需要身份验证范围和 IAM 权限才能调用 Compute Engine API 方法,例如 instance.start 和 instance.stop。您需要为您的工作设置正确的范围和正确的 IAM 权限,否则它将失败。它们确实与您有兴趣调用的方法有关,因此您必须牢记它们。您在示例中看到的是使用不同编程语言调用 {API} 的方式,因此您无需关注它们,因为您将通过 Cloud Console 创建作业。要进一步解决这一部分,请参阅我在下面包含的完整步骤。

  2. 您尝试遵循的答案使用 HTTP 目标,而您链接的快速入门使用 Pub/Sub,它们彼此不同,因为它们具有不同的用例。此 link 显示了如何使用 HTTP 目标创建调度程序作业的正确说明。您可以直接从 Cloud Console 或单行 gcloud 命令创建此类作业。如果您的配置不正确,触发器将不会执行端点 URL,您将看到必须修复的错误。

  3. 在答案 #2 中解决

基本上,您只需按照您发送的链接的说明操作即可。不过,我也会把它和我的解释一起贴在这里:

  1. 转到https://cloud.google.com/scheduler。单击转到控制台。单击创建作业。创建调度程序作业时填写必填字段(带有红色星号的字段)。
  2. 选择 HTTP 作为目标类型。
  3. 输入它作为您的 URL(修改大写单词)。
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_ZONE/instances/INSTANCE_NAME/start
  1. 选择 HTTP 方法 POST。
  2. 点击显示更多并选择身份验证标题“添加 OAuth 令牌”
  3. 输入您的服务帐户。这用于在您的调度程序作业调用 Compute API 时传递 OAuth 令牌。 确保您将使用的服务帐户具有 "Compute Instance Admin" 角色,因为此角色包含启动/停止实例的权限。请参阅此 instruction 如何授予对服务帐户的访问权限。如果您不确定要使用哪个服务帐号,请随时使用 Compute Engine 默认服务帐号。
  4. 在 Scope 上添加此内容:
https://www.googleapis.com/auth/cloud-platform

此范围的描述:

查看、修改、配置和删除您的 Google Cloud Platform 数据。

  1. 重复停止实例作业并更改 #3 中的 URL。