安排虚拟机实例启动和停止


通过实例时间表,您可以自动启动和停止虚拟机 (VM) 实例。使用实例时间表来自动部署虚拟机实例有助于您优化费用,以及更高效地管理虚拟机实例。您可以为周期性工作负载和一次性工作负载使用实例时间表。例如,使用实例时间表仅在工作时间运行虚拟机实例,或者为一次性事件提供容量。

如需使用实例时间表,请创建一个详细说明启动和停止行为的资源政策,然后将政策附加到一个或多个虚拟机实例。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

所需的角色

如需使用实例时间表,您需要向以下主账号授予所需的 Identity and Access Management (IAM) 角色:

  • 项目的 Compute Engine Service Agent。这是在虚拟机上运行实例时间表所必需的。

    如果您在创建实例时间表后撤消这些权限,则实例时间表可能会随时停止工作,恕不另行通知。如需验证您的实例时间表是否已成功运行,您应该定期检查审核日志

  • 创建、管理或使用实例时间表的用户账号或服务账号。

Compute Engine Service Agent 所需的角色

为确保 Compute Engine Service Agent 具有运行实例时间表所需的权限,请让您的管理员向 Compute Engine Service Agent 授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含运行实例时间表所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需运行实例时间表,需要具备以下权限:

  • compute.instances.start
  • compute.instances.stop

您的管理员也可以使用自定义角色或其他预定义角色向 Compute Engine Service Agent 授予这些权限。

用户或服务账号所需的角色

为确保您或您的服务账号拥有创建和管理实例时间表所需的权限,请让您的管理员向您或服务账号授予项目或组织的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建和管理实例时间表所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需创建和管理实例时间表,需要具备以下权限:

  • 创建实例时间表: compute.resourcePolicies.create
  • 列出实例时间表: compute.resourcePolicies.list
  • 描述实例时间表: compute.resourcePolicies.get
  • 删除实例时间表: compute.resourcePolicies.delete
  • 将实例时间表关联到新虚拟机:
    • compute.instances.create
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • 将实例时间表关联到现有虚拟机:
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • 从虚拟机中移除实例时间表:
    • compute.resourcePolicies.use
    • compute.instances.removeResourcePolicies

您的管理员也可以使用自定义角色或其他预定义角色向您或服务账号授予这些权限。

限制

  • 您只能将实例时间表附加与其位于同一区域内的虚拟机实例。
  • 每个虚拟机实例只能遵循一个实例时间表,但您可以为每个实例时间表附加最多 1000 个虚拟机实例。
  • 实例时间表不提供容量保证,因此如果计划的虚拟机实例需要的资源在计划的时间不可用,虚拟机实例可能无法按计划启动。虽然您可以在启动预留实例之前预留虚拟机实例,但您无法安排预留。
  • 实例只会在指定的时间启动和停止虚拟机实例,但您可以随时手动启动和停止虚拟机实例。例如,假设您的时间表是每天上午 8 点开始,并在每天下午 5 点停止。如果您将该时间表附加到下午 4 点已停止运行的虚拟机实例,则该虚拟机实例在次日上午 8 点之前不会启动,除非您在此之前手动启动虚拟机实例。
  • 计划虚拟机实例可能需要超过预定时间(最多 15 分钟)才能开始启动或停止操作。如果您需要在特定时间启动或停止虚拟机实例,请提前 15 分钟操作,并安排每个操作至少 15 分钟。
  • 如果启动和停止操作之间的间隔少于 15 分钟,则调度器可能会失败。这是因为停止操作可能会在启动操作之前发生,从而阻止启动操作执行。
  • 每个实例时间表允许您每小时最多执行一个启动操作和一个停止操作。
  • 您无法修改实例时间表。要更改一个或多个虚拟机实例的现有实例时间表,请移除和删除现有的实例时间表,然后创建并挂接新的实例时间表。

管理实例时间表

使用 Google Cloud 控制台、Google Cloud CLI 或 Compute Engine API 创建、列出、描述和删除实例时间表。

创建实例时间表

创建实例时间表,描述虚拟机实例何时会自动启动或停止。您创建的实例时间表是资源政策,您可以通过将资源附加到虚拟机实例,或从虚拟机实例中移除该政策。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。

  3. 点击 创建时间表。此时会打开创建时间表窗格。

  4. 输入名称

  5. (可选)输入说明

  6. 区域下拉菜单中,选择此实例时间表的位置。

  7. 定义实例何时启动和停止任何挂接的虚拟机实例。如果您需要虚拟机实例在特定时间启动或停止,请将时间安排在特定时间 15 分钟之前。确保每个开始和停止操作都至少间隔 15 分钟。

    使用默认的开始时间停止时间频率字段,或者如果您要配置更复杂的时间表,请使用 cron 表达式

    • 默认字段:

      1. 输入开始时间和/或停止时间
        • 开始时间字段中,输入或点击 以选择启动虚拟机实例的时间。
        • 停止时间字段中,输入或点击 以选择停止虚拟机实例的时间。
      2. 在窗格底部的频率下拉菜单中,选择开始时间停止时间重复的频率。
    • Cron 表达式:

      1. 如需启用 Cron 表达式,请点击窗格顶部的使用 CRON 表达式切换开关。
      2. 输入 启动 CRON 表达式和/或停止 CRON 表达式
        • 开始 CRON 表达式字段中,输入描述何时启动虚拟机实例的 Cron 表达式。
        • 停止 CRON 表达式字段中,输入描述何时停止虚拟机实例的 Cron 表达式。
  8. 时区下拉菜单中,选择开始时间停止时间的时区。

  9. 可选:在开始日期字段中,输入或点击 以选择此实例时间表的开始日期和时间。如果省略,时间表会立即生效。

  10. 可选:在结束日期字段中,输入或点击 以选择此实例时间表的结束日期和时间。如果省略,则时间表将无限期生效。

  11. 点击提交

gcloud

如需使用 gcloud CLI 创建实例时间表,请使用 gcloud compute resource-policies create instance-schedule 命令

gcloud compute resource-policies create instance-schedule SCHEDULE_NAME \
    [--description='SCHEDULE_DESCRIPTION'] \
    [--region=REGION] \
    [--vm-start-schedule='START-OPERATION_SCHEDULE'] \
    [--vm-stop-schedule='STOP-OPERATION_SCHEDULE'] \
    [--timezone=TIME_ZONE] \
    [--initiation-date=INITIATION_DATE] \
    [--end-date=END_DATE]

请替换以下内容:

  • SCHEDULE_NAME:新实例时间表的名称。
  • SCHEDULE_DESCRIPTION(可选):新实例时间表的说明。
  • REGION(可选):您要附加到此实例时间表的虚拟机实例所在的区域。
  • 请至少指定以下其中一项:
    • START-OPERATION_SCHEDULE:用于描述已连接虚拟机实例的时间表,格式为 cron 表达式。如果您需要虚拟机实例在特定时间启动,请将操作安排在最晚 15 分钟之前。如需了解详情,请参阅开始操作时间表
    • STOP-OPERATION_SCHEDULE:描述何时停止所连接虚拟机实例的时间表,格式采用 cron 表达式。如果您需要虚拟机实例在特定时间停止,请将时间安排在特定时间 15 分钟之前。如需了解详情,请参阅停止操作时间表
  • TIME_ZONE(可选):此实例时间表基于位置的 IANA 时区。如果省略,则使用默认值 UTC。如需了解详情,请参阅时区
  • INITIATION_DATE(可选):实例时间表的生效日期,格式为 RFC 3339 时间戳。如果省略,时间表会立即生效。如需了解详情,请参阅发起日期
  • END_DATE(可选):实例时间表的生效日期,采用 RFC 3339 时间戳格式。如果省略,则时间表将无限期生效。有关详情,请参阅结束日期

REST

要使用 Compute Engine API 创建实例时间表,请使用 resourcePolicies.insert 方法发出请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies
{
  "name": "SCHEDULE_NAME",
  "description": "SCHEDULE_DESCRIPTION",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "START-OPERATION_SCHEDULE"
    },
    "vmStopSchedule": {
      "schedule": "STOP-OPERATION_SCHEDULE"
    },
    "timeZone": "TIME_ZONE",
    "startTime":"INITIATION_DATE",
    "expirationTime":"END_DATE"
  }
}

替换以下内容:

  • PROJECT:您的项目 ID
  • REGION:您要附加到此实例时间表的虚拟机实例所在的区域。
  • SCHEDULE_NAME:新的实例时间表的名称。
  • SCHEDULE_DESCRIPTION(可选):新实例时间表的说明。
  • START-OPERATION_SCHEDULESTOP-OPERATION_SCHEDULE:至少指定以下内容之一:
    • START-OPERATION_SCHEDULE:用于描述已连接虚拟机实例的时间表,格式为 cron 表达式。如果您需要虚拟机实例在特定时间启动,请将操作安排在最晚 15 分钟之前。如需了解详情,请参阅开始操作时间表
    • STOP-OPERATION_SCHEDULE:描述何时停止所连接虚拟机实例的时间表,格式采用 cron 表达式。如果您需要虚拟机实例在特定时间停止,请将时间安排在特定时间 15 分钟之前。如需了解详情,请参阅停止操作时间表
  • TIME_ZONE:此实例时间表基于位置的 IANA 时区。如需了解详情,请参阅时区
  • INITIATION_DATE(可选):实例时间表的生效日期,格式为 RFC 3339 时间戳。如果省略,时间表会立即生效。如需了解详情,请参阅发起日期
  • END_DATE(可选):实例时间表的生效日期,采用 RFC 3339 时间戳格式。如果省略,则时间表将无限期生效。有关详情,请参阅结束日期

每个实例时间表有以下设置:

开始操作时间表、停止操作时间表

描述实例时间表何时开始和停止任何挂接的虚拟机实例的时间表。一个实例时间表可以有如下其中一个时间表或其中之一。

使用 Google Cloud 控制台创建实例时间表时,您可以选择开始时间停止时间频率,也可以将每个时间表的格式设置为 cron 表达式。使用 gcloud CLI 或 Compute Engine API 创建实例时间表时,必须将每个时间表的格式设置为 cron 表达式。

下表定义了 Cron 表达式的字段以及每个字段的可能值。

分钟 小时 日期 周几
0-59 0-23 1-31

其中 29-31 仅在相关月份有效

1-12 0-6 或 SUN-SAT(星期日至星期六)

其中:0=SUN,1=MON……6=SAT

除了这些值之外,cron 表达式中的每个字段还可以使用以下特殊字符。
特殊字符 含义 示例
* 任意 如果日期字段、月份字段和一周中的星期几字段都设置为 *,则每天会重复一次。
- 范围 如果星期几字段设置为 MON-FRI(或 1-5),则每周的星期一到星期五重复。
, list 如果“月”字段设为 1-6,8-12,则每月会重复,但 7 月份除外。

在编写 Cron 表达式时,请考虑以下要点:

  • 空格用于分隔 Cron 表达式的字段。 请勿在使用特殊字符的字段中添加额外的空格。
  • 如果您同时指定了周几和日期(这两个字段都没有设置为 *),则时间表会使用这些值的并集(而不是交集)。例如,时间表 0 8 1 * MON 会从每周一和每月第一天的上午 8 开始。该时间表不会仅从既是周一又是当月第一天的上午 8 开始。
时区

开始操作时间表和停止操作时间表基于位置的 IANA 时区。IANA 时区数据库定义了可用值列表。此时区仅用作开始操作和停止操作的时间表,不用于开始日期和结束日期。使用 gcloud CLI 或 Compute Engine API 时,时区是可选的。如果省略,则使用默认值 UTC

一些 IANA 时区遵循夏令时 (DST),这可能会影响您的实例时间表。有关 DST 的详情(例如 DST 的开始和结束时间)以及每个时区的跳过和重复时间。

开始日期、结束日期

实例时间表生效的时间范围。这两个值均可选。除非您指定这些值,否则将执行时间限制为一年。

使用 Google Cloud 控制台创建实例时间表时,请使用启动日期结束日期字段选择日期、时间和时区。

使用 gcloud CLI 或 Compute Engine API 创建实例时间表时,这些值的格式将设置为 RFC 3339 时间戳:

  YYYY-MM-DDTHH:MM:SSOFFSET

替换以下内容:

  • YYYY-MM-DD:采用 4 位数格式的日期,2 位数月份和 2 位数日期(用连字符分隔)。
  • HH:MM:SS:采用 24 小时制的 2 位数小时,2 位数分钟和 2 位数秒(用冒号分隔)。
  • OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。例如,太平洋标准时间 (PST) 比世界协调时间 (UTC) 早 8 个小时,编写为 -08:00。或者,如果不使用偏移(世界协调时间 (UTC) 时区),请编写 Z

列出实例时间表

列出实例时间表以查看项目的所有现有实例时间表。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。此时会显示此项目的所有实例时间表的列表。

gcloud

如需使用使用 gcloud CLI 查看所有资源政策(包括实例时间表)的列表,请使用 gcloud compute resource-policies list 命令。(可选)如需将结果限制为特定区域,请添加 --filter 标志。

gcloud compute resource-policies list \
    [--filter="region:(REGION)"]

替换以下内容:

  • REGION:可选:您要列出的实例时间表所在的区域。

REST

要使用 Compute Engine API 查看特定区域中所有资源政策的列表,包括实例时间表,请使用 resourcePolicies.list 方法发出请求:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies

替换以下内容:

  • PROJECT:您的项目 ID
  • REGION:您要列出的实例时间表所在的区域。

描述实例时间表

描述实例时间表,以查看其说明、时间、操作及其附加的所有虚拟机实例的列表。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。此时会显示此项目的所有实例时间表的列表。

  3. 点击要描述的实例时间表的名称。这会打开该时间表的实例时间表详情页面。

gcloud

如需使用 gcloud CLI 描述实例时间表,请使用 gcloud compute resource-policies describe 命令

gcloud compute resource-policies describe SCHEDULE_NAME \
    [--region=REGION]

请替换以下内容:

  • SCHEDULE_NAME:您要描述的实例时间表的名称。
  • REGION(可选):实例时间表所在的区域。

输出类似于以下内容:

...
description: Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.
...
instanceSchedulePolicy:
 expirationTime: '2022-12-31T23:59:59Z'
 startTime: '2022-01-01T00:00:00Z'
 timeZone: UTC
 vmStartSchedule:
   schedule: 0 8 * * MON-FRI
 vmStopSchedule:
   schedule: 0 17 * * MON-FRI
...
name: example-instance-schedule
region: https://www.googleapis.com/compute/v1/projects/example-project/regions/us-west1
resourceStatus:
 instanceSchedulePolicy:
   nextRunStartTime: '2022-01-03T08:00:00Z'
...
status: READY

REST

如需使用 Compute Engine API 描述实例时间表,请使用 resourcePolicies.get 方法发出请求:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME

替换以下内容:

  • PROJECT:您的项目 ID
  • REGION:实例时间表所在的区域。
  • SCHEDULE_NAME:您要描述的实例时间表的名称。

输出内容类似如下:

{
  ...
  "description": "Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.",
  "name": "example-instance-schedule",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "0 8 * * MON-FRI"
    },
    "vmStopSchedule": {
      "schedule": "0 17 * * MON-FRI"
    },
    "timeZone": "UTC",
    "startTime": "2022-01-01T00:00:00Z",
    "expirationTime": "2022-12-31T23:59:59Z"
  },
  "status": "READY",
  "resourceStatus": {
    "instanceSchedulePolicy": {
      "nextRunStartTime": "2022-01-03T08:00:00Z"
    }
  },
  ...
}

删除实例时间表

如果您不再需要实例,请移除所有附加的虚拟机实例并删除资源政策。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。此时会显示此项目的所有实例时间表的列表。

  3. 选中您要删除的实例时间表对应的复选框。

  4. 点击页面顶部的 删除。系统会打开一个新对话框来确认此操作。

  5. 在该对话框中,点击删除

gcloud

  1. 如果此实例时间表已附加到任何虚拟机实例,请将其移除。
    1. 如需检查此时间表所附加的虚拟机实例,请描述实例时间表
    2. 对于附加此时间表的每个虚拟机实例,请移除实例时间表
  2. 如需使用 gcloud CLI 删除实例时间表,请使用 gcloud compute resource-policies delete 命令

    gcloud compute resource-policies delete SCHEDULE_NAME \
       [--region=REGION]
    

    请替换以下内容:

    • SCHEDULE_NAME:要删除的实例时间表的名称。
    • REGION(可选):实例时间表所在的区域。

REST

  1. 如果此实例时间表已附加到任何虚拟机实例,请将其移除。
    1. 如需检查此时间表所附加的虚拟机实例,请描述实例时间表
    2. 对于附加此时间表的每个虚拟机实例,请移除实例时间表
  2. 如需使用 Compute Engine API 删除实例时间表,请使用 resourcePolicies.delete 方法发出请求:

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME
    

    替换以下内容:

    • PROJECT:您的项目 ID
    • REGION:实例时间表所在的区域。
    • SCHEDULE_NAME:要删除的实例时间表的名称。

将虚拟机实例时间表用于虚拟机实例

如需使用实例时间表,请将其附加到您想要跟踪该时间表的一个或多个虚拟机实例。您可以将实例时间表挂接到现有虚拟机实例,也可以在创建新的虚拟机实例时执行相关操作。如需停止虚拟机实例随已连接的实例时间表而移除,请从该虚拟机实例中移除时间表。

创建新虚拟机实例时挂接实例时间表

如需将实例时间表挂接到新的虚拟机实例,您必须在与实例时间表相同的区域中创建虚拟机实例。详细了解如何创建虚拟机实例

控制台

使用 Google Cloud 控制台创建实例时,您无法关联实例时间表。如需使用 Google Cloud 控制台将实例时间表关联到新的虚拟机实例,请创建虚拟机实例,然后将时间表关联到虚拟机实例

gcloud

如需使用 gcloud CLI 将实例时间表挂接到虚拟机实例,请使用带有 --resource-policies 标志的 gcloud compute instances create 命令。例如,如需通过附加了实例的快照时间表使用公共映像创建虚拟机实例,请使用以下命令:

gcloud compute instances create VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE] \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    [--image-project IMAGE_PROJECT]

替换以下内容:

  • VM_NAME:您要挂接到实例时间表的虚拟机实例的名称。
  • SCHEDULE_NAME:要挂接的实例时间表的名称。
  • ZONE(可选):虚拟机实例所在的地区。
  • 可选:基于公共映像创建虚拟机实例:
    • IMAGEIMAGE_FAMILY:指定以下其中一项:
    • IMAGE:所需的公共映像版本。例如 --image debian-10-buster-v20200309
    • IMAGE_FAMILY映像系列。此项表示通过最新的未弃用的操作系统映像创建虚拟机。例如,如果您指定 --image-family debian-10,则 Compute Engine 会通过 Debian 10 映像系列中最新版本的操作系统映像创建虚拟机。
    • IMAGE_PROJECT:包含映像的项目

REST

如需使用 Compute Engine API 将实例挂接到虚拟机实例,请使用 instances.insert 方法发出请求并包含 resourcePolicies 属性。例如,如需通过附加了实例的快照时间表使用公共映像创建虚拟机实例,请使用以下请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "resourcePolicies": [
    "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
  ]
}

替换以下内容:

  • PROJECT_ID:要在其中创建虚拟机的项目的 ID。
  • ZONE:要在其中创建虚拟机的可用区。
  • MACHINE_TYPE_ZONE:包含新虚拟机将使用的机器类型的地区。
  • MACHINE_TYPE:新虚拟机的预定义自定义机器类型。
  • VM_NAME:新虚拟机的名称
  • 可选:基于公共映像创建虚拟机实例:
    • IMAGE_PROJECT:包含映像的项目。例如,如果您将 debian-10 指定为映像系列,请将 debian-cloud 指定为映像项目。
    • IMAGEIMAGE_FAMILY:指定以下其中一项:
    • IMAGE:所需的公共映像版本。例如 "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY映像系列。此项表示通过最新的未弃用的操作系统映像创建虚拟机。例如,如果您指定 "sourceImage": "projects/debian-cloud/global/images/family/debian-10",则 Compute Engine 会通过 Debian 10 映像系列中最新版本的操作系统映像创建虚拟机。
  • REGION:实例时间表所在的区域。
  • SCHEDULE_NAME:要挂接的实例时间表的名称。

如需验证实例时间表是否成功运行,您可以查看实例时间表资源政策和附加的虚拟机实例的审核日志。每项操作的预定时间最长可达 15 分钟。

将实例挂接到现有虚拟机实例

您可以将实例时间表附加到与实例时间表位于同一区域的任何任何现有虚拟机实例。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。此时会显示此项目的所有实例时间表的列表。

  3. 点击要挂接的实例时间表的名称。实例时间表详情页面随即打开。

  4. 点击将实例添加到时间表。此时将打开将实例添加到时间表窗格。

  5. 选中您要将此时间表挂接到的每个虚拟机实例的对应复选框。

  6. 点击添加

gcloud

如需使用 gcloud CLI 将实例时间表挂接到虚拟机实例,请使用 gcloud compute instances add-resource-policies 命令

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

请替换以下内容:

  • VM_NAME:您要挂接到实例时间表的虚拟机实例的名称。
  • SCHEDULE_NAME:要挂接的实例时间表的名称。
  • ZONE(可选):虚拟机实例所在的地区。

REST

如需使用 Compute Engine API 将实例挂接到虚拟机实例,请使用 instances.addResourcePolicies 方法发出请求:

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/addResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

替换以下内容:

  • PROJECT:您的项目 ID
  • ZONE:虚拟机实例所在的地区。
  • VM_NAME:您要挂接到实例时间表的虚拟机实例的名称。
  • REGION:实例时间表所在的区域。
  • SCHEDULE_NAME:要挂接的实例时间表的名称。

如需验证实例时间表是否成功运行,您可以查看实例时间表资源政策和附加的虚拟机实例的审核日志。每项操作的预定时间最长可达 15 分钟。

从虚拟机实例中移除实例时间表

如需让虚拟机实例停止遵循实例时间表,请从该虚拟机实例中移除实例时间表。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击页面顶部的实例时间表标签页。此时将显示此项目的所有实例时间表的列表。

  3. 点击要移除的实例时间表的名称。实例时间表详情页面随即打开。

  4. 已挂接的实例部分下,选中要从此时间表中移除的每个虚拟机实例的对应复选框。

  5. 点击 从时间表中移除实例。系统会打开一个新对话框来确认此操作。

  6. 在该对话框中,点击移除

gcloud

如需使用 gcloud CLI 从虚拟机实例中移除实例时间表,请使用 gcloud compute instances remove-resource-policies 命令

gcloud compute instances remove-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

请替换以下内容:

  • VM_NAME:要从中移除实例时间表的虚拟机实例的名称。
  • SCHEDULE_NAME:要移除的实例时间表的名称。
  • ZONE(可选):虚拟机实例所在的地区。

REST

如需使用 Compute Engine API 从虚拟机实例中移除实例时间表,请使用 instances.removeResourcePolicies 方法发出请求:

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/removeResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

替换以下内容:

  • PROJECT:您的项目 ID
  • ZONE:虚拟机实例所在的地区。
  • VM_NAME:要从中移除实例时间表的虚拟机实例的名称。
  • REGION:实例时间表所在的区域。
  • SCHEDULE_NAME:要移除的实例时间表的名称。

后续步骤