修改未来预留请求


本文档介绍了如何修改未来预留请求。

您可以在未来预留请求开始时间之前随时修改该请求,前提是该请求尚未取消或不处于待审批状态。当您的容量需求发生变化时(例如,您想增加预留虚拟机实例的数量或更改预留期),修改未来预留请求会很有用。如果您想修改共享未来预留请求,则必须使用所有者项目修改该请求。

如需在预留期结束后修改自动创建的预留,请参阅修改预留

准备工作

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得修改未来预留请求所需的权限,请要求管理员授予您项目的 Compute Future Reservation Admin (roles/compute.futureReservationAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含修改未来预留请求所需的 compute.futureReservations.update 权限。

您也可以使用自定义角色或其他预定义角色来获取此权限。

可修改的属性

未来预留请求具有几个属性,用于定义预留、确定其行为以及指定要预留的资源。您可以按照以下部分中的说明修改这些属性。

创建之后

创建未来预留请求后,您将无法修改以下属性:

  • 未来预留请求的名称。

  • 创建未来预留请求的项目。

  • 未来预留请求所在的可用区。

  • 要使用的实例模板以及实例模板中指定的虚拟机属性。

如需在未来预留请求进入锁定时间之前修改其中任何属性,请创建新请求

提交之前

将未来预留请求提交给 Google Cloud 以供审核之前,或者在提交未来预留请求以供审核但被拒绝后,您可以修改以下属性:

  • 自动删除选项

  • 说明

  • GPU 和 GPU 类型

  • 本地固态硬盘磁盘和磁盘接口类型

  • 机器系列和机器类型

  • 满足最低 CPU 要求的平台

  • 名称前缀

  • 共享设置

  • 预留期的开始时间和结束时间

  • 总数(虚拟机数量)

系统会立即修改未来预留请求草稿状态,而且修改次数不受限制。如果您要修改已被拒绝 (DECLINED) 的未来预留请求,则只有在再次提交该请求以供审核后,才能修改该请求。

获得批准之后

Google Cloud 批准未来预留后,您可以在该未来预留达到预配状态 (PROVISIONING) 的采购状态之前对其进行修改。具体而言,您可以修改以下属性:

  • 通过随时修改未来预留

    • 自动删除选项

    • 说明

    • 名称前缀

  • 在开始时间前至少 72 小时提交修改请求

    • GPU 和 GPU 类型*

    • 本地固态硬盘磁盘和磁盘接口类型*

    • 机器系列和机器类型*

    • 满足最低 CPU 要求的平台*

    • 共享设置

    • 预留期的开始时间和结束时间

    • 总数(虚拟机数量)*

* 如果您在未来预留开始时间后的 14 天内请求更改任何虚拟机属性或者请求大幅增加或减少总数,Google Cloud 可能会拒绝您的修改请求。

修改未来预留请求

在修改未来预留请求之前,请查看您可以修改的属性(如果尚未查看)。

如果您想将通过实例模板创建的单项目未来预留请求修改为共享未来预留请求,则无法使用同一模板在创建共享未来预留请求的项目之外,创建可以使用自动创建的预留的虚拟机。对于与之共享未来预留的项目,您必须在这些项目中创建类似的实例模板,或通过直接指定属性来创建虚拟机。

如需修改未来预留请求,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,转到预留页面。

    转到“预留”

  2. 点击未来预留标签页。

  3. 名称列中,点击要修改的未来预留请求的名称。

    系统随即会打开所选未来预留请求的详情页面。

  4. 如果要修改已获批准的未来预留的自动删除选项、说明或名称前缀,请执行以下一项或多项操作:

    • 如需修改自动删除选项,请在自动创建预留的自动删除时间行中点击 修改,然后执行以下操作以下内容:

      1. 通过执行以下任一操作,指定您要启用、停用还是修改自动删除选项:

        • 如需启用自动删除选项或更改 Compute Engine 自动删除自动创建的预留的时间,请执行以下操作:

          1. 点击启用自动删除切换开关,以切换到开启位置。

          2. 可选:对于自动删除时间,输入删除自动创建预留的新日期和时间。该日期和时间必须晚于预留期的结束时间。如果您将此字段留空,则自动创建的预留将在预留期结束时间之后 2 小时内删除。

        • 否则,请点击启用自动删除切换开关,以切换到关闭位置。

      2. 点击提交

    • 如需修改名称前缀,请在前缀行中点击 修改,然后执行以下操作:

      1. 前缀中,输入新的名称前缀。

      2. 点击提交

    • 如需修改说明,请在说明行中点击 修改,然后执行以下操作:

      1. 说明中,输入新的说明。

      2. 点击提交

  5. 点击 修改 修改草稿

    系统随即会打开用于修改所选未来预留请求的页面。

  6. 如需修改未来预留请求并将其提交给 Google Cloud 进行审核,或保存请求草稿,请执行以下一项或多项操作:

    • 对于前缀,请为此未来预留请求所配置的自动创建的预留输入一个新的名称前缀。

    • 说明中,输入新的说明。

    • 修改未来预留请求的开始时间结束时间。为此,您需要确保实现以下各项安排:

      • 开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。

      • 指定开始时间的推荐值,以确保在未来预留进入其锁定时间之前,您有足够的时间。

      • 指定建议的最短预留期,以便提高您提交请求以供审核后 Google Cloud 批准该请求的可能性。

    • 共享类型部分中,您可以选择本地共享。如果您选择共享,则可以添加或移除项目,以便共享未来预留请求。您最多可以添加 100 个项目。

    • 虚拟机实例数量中,输入要预留的虚拟机总数。

    • 如果您要修改不是通过实例模板创建的未来预留,则可以在机器配置部分中更改以下内容:

      • 已预留虚拟机中使用的机器系列和机器类型。

      • 要挂接到已预留虚拟机的 GPU。

      • 已预留虚拟机的本地固态硬盘磁盘和磁盘接口类型。

    • 自动生成的预留自动删除部分中,您可以为未来预留请求启用或停用对自动创建的预留执行自动删除的操作。

  7. 根据您要修改的未来预留请求的采购状态,执行以下操作之一:

    • 如果您要修改未来预留请求草稿,请执行以下操作之一:

      • 要保存更改,请点击保存草稿

      • 如需将未来预留请求草稿提交给 Google Cloud 进行审核,请点击提交

    • 否则,请点击提交

如果您提交修改请求,则将打开预留页面。否则,系统会打开未来预留的详情页面。

gcloud

如需修改未来预留请求,请使用 gcloud beta compute future-reservations update 命令

gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
    --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE \
    --description="DESCRIPTION" \
    --local-ssd=size=375,interface=INTERFACE \
    --machine-type=MACHINE_TYPE \
    --min-cpu-platform=MIN_CPU_PLATFORM \
    --name-prefix=NAME_PREFIX \
    --planning-status=PLANNING_STATUS \
    --share-setting=SHARE_SETTING \
    --share-with=CONSUMER_PROJECT_IDS \
    --start-time=START_TIME \
    --end-time=END_TIME \
    --total-count=TOTAL_COUNT \
    --zone=ZONE

替换以下内容:

  • FUTURE_RESERVATION_NAME:未来预留请求的名称。

  • PLANNING_STATUS:未来预留请求的计划状态。 请指定以下某个值:

    • 如需修改未来预留请求草稿,但不提交进行审核,请执行以下操作:DRAFT

    • 如需提交未来预留请求以供审核,请执行以下操作:SUBMITTED

  • ZONE:未来预留请求所在的可用区。

替换以下一个或多个占位符,或将其与相应的标志一起移除:

  • 如需使 Compute Engine 在预留期结束时间之后自动删除自动创建的预留,请执行以下操作之一:

    • 如需在结束时间后 2 小时内(默认)删除预留,请添加 --auto-delete-auto-created-reservations 标志。

      gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
          --auto-delete-auto-created-reservations \
          --planning-status=PLANNING_STATUS \
          --zone=ZONE
      
    • 如需在预留期结束时间之后的特定时间删除自动创建的预留,请添加 --auto-delete-auto-created-reservations--auto-created-reservations-delete-time 标志。

      gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
          --auto-created-reservations-delete-time=AUTO_CREATED_RESERVATIONS_DELETE_TIME \
          --auto-delete-auto-created-reservations \
          --planning-status=PLANNING_STATUS \
          --zone=ZONE
      

      AUTO_CREATED_RESERVATIONS_DELETE_TIME 替换为采用 RFC 3339 时间戳格式的日期和时间。

    • 如需在预留期结束时间后的特定时长之后删除自动创建的预留,请添加 --auto-delete-auto-created-reservations--auto-created-reservations-duration 标志。

      gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
          --auto-created-reservations-duration=DURATION_BEFORE_DELETE \
          --auto-delete-auto-created-reservations \
          --planning-status=PLANNING_STATUS \
          --zone=ZONE
      

      DURATION_BEFORE_DELETE 替换为以天、小时、分钟或秒为单位的时长。例如,指定 30m 表示 30 分钟,或指定 1d2h3m4s 表示 1 天 2 小时 3 分钟 4 秒。

  • 如需停用 Compute Engine,使其无法自动删除为此未来预留请求预配的自动创建预留,请添加 --no-auto-delete-auto-created-reservations 标志。

    gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
        --no-auto-delete-auto-created-reservations \
        --planning-status=PLANNING_STATUS \
        --zone=ZONE
    
  • 如需添加或移除挂接到预留 N1 虚拟机的 GPU,或更新 GPU 类型,请执行以下操作之一:

    • 如需更改 GPU 的数量和类型,请替换以下内容:

    • 如需移除挂接到预留 N1 虚拟机的所有 GPU,请将 --accelerator 标志替换为 --clear-accelerator 标志。

  • DESCRIPTION:未来预留请求的新说明。

  • 如需在预留虚拟机中添加或移除本地固态硬盘磁盘或修改本地固态硬盘磁盘接口类型,请执行以下操作之一:

    • 如需添加本地固态硬盘磁盘或修改磁盘接口类型,请将 INTERFACE 替换为以下值之一:

      为您要添加的本地固态硬盘磁盘添加 --local-ssd 标志。您最多可以指定 24 个本地固态硬盘磁盘。

    • 如需移除挂接到已预留虚拟机的所有本地固态硬盘磁盘,请移除所有 --local-ssd 标志并添加 --clear-local-ssd 标志。

  • MACHINE_TYPE:要用于每个预留虚拟机的新机器类型。如果您要更改机器类型,请务必同时为新机器系列指定建议的最短预留期。否则,Google Cloud 可能会拒绝您的修改请求。

  • MINIMUM_CPU_PLATFORM:每个预留虚拟机将使用的新的满足最低要求的 CPU 平台。

  • NAME_PREFIX:为未来预留请求预配的自动创建预留的新名称前缀。

  • SHARE_SETTING:未来预留请求的新共享类型。请指定以下某个值:

    • 对于单个项目未来预订请求:local。为避免错误,您还必须将 --share-with 标志替换为 --clear-share-settings 标志。

    • 对于共享未来预留请求:projects。为避免错误,您还必须在 --share-with 标志中至少指定一个使用方项目。

  • CONSUMER_PROJECT_IDS:您要与之共享未来预留请求的项目的 ID 的逗号分隔列表,例如 project-1,project-2。您最多可以指定 100 个使用方项目。

  • START_TIME:采用 RFC 3339 时间戳格式的新的预留期开始时间。开始时间不能比您提交修改请求以供审核的日期和时间晚 1 年。如需有足够的时间在未来预留获得批准之后且在其进入锁定时间之前选择取消、删除或修改未来预留,请指定建议的开始时间

  • END_TIME:采用 RFC 3339 时间戳格式的预留期的新结束时间。预留期必须至少持续 24 小时。或者,您可以将 --end-time 标志替换为 --duration=END_DURATION 标志。将 END_DURATION 替换为预留期的时长,以秒为单位。为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定建议的预留期

  • TOTAL_COUNT:您要为该时间段预留的虚拟机的新总数、虚拟机配置和未来预留请求中指定的项目。如果您想增加总数,请确保您有足够的配额用于预留的资源。否则,Google Cloud 会拒绝您的修改请求。

例如,可考虑指定名为 fr-03 且位于可用区 us-central1-a 的共享未来预留请求草稿。假设您要通过进行以下更改来修改此共享未来预留请求:

  • 将请求转换为单项目未来预留请求。

  • 停用自动删除选项。

  • 预留 100 个虚拟机。

  • 将未来预留请求提交给 Google Cloud 以供审核。

如需修改 fr-03,请运行以下命令:

gcloud beta compute future-reservations update fr-03 \
    --clear-share-settings \
    --no-auto-delete-auto-created-reservations \
    --planning-status=SUBMITTED \
    --share-setting=local \
    --total-count=100 \
    --zone=us-central1-a

REST

如需修改未来预留请求,请发出针对 beta.futureReservations.update 方法PATCH 请求。

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=UPDATE_FIELDS

{
  "autoDeleteAutoCreatedReservations": "AUTO_DELETE_AUTO_CREATED_RESERVATIONS",
  "description": "DESCRIPTION",
  "name": "FUTURE_RESERVATION_NAME",
  "namePrefix": "NAME_PREFIX",
  "planningStatus": "PLANNING_STATUS",
  "shareSettings": {
    "projects": [
      "CONSUMER_PROJECT_ID_1",
      "CONSUMER_PROJECT_ID_2"
    ],
    "shareType": "SHARE_TYPE"
  },
  "specificSkuProperties": {
    "instanceProperties": {
      "guestAccelerators": [
        {
          "acceleratorCount": NUMBER_OF_ACCELERATORS,
          "acceleratorType": "ACCELERATOR_TYPE"
        }
      ],
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "INTERFACE_1"
        },
        {
          "diskSizeGb": "375",
          "interface": "INTERFACE_2"
        }
      ],
      "machineType": "MACHINE_TYPE",
      "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
    },
    "totalCount": "TOTAL_COUNT"
  },
  "timeWindow": {
    "endTime": "END_TIME",
    "startTime": "START_TIME"
  }
}

替换以下内容:

  • PROJECT_ID:未来预留请求所在项目的 ID。

  • ZONE:未来预留请求所在的可用区。

  • FUTURE_RESERVATION_NAME:未来预留请求的名称。

  • UPDATE_FIELDS:请求正文中要更新的字段的逗号分隔列表。您必须将每个英文逗号编码为 %2C。如果您在 updateMask 查询参数和请求正文中指定某个字段,系统会更新该字段的值。否则,如果您仅在 updateMask 查询参数中指定该字段,则系统会删除此字段。

    例如,如需更新未来预留请求中的 autoDeleteAutoCreatedReservationstotalCountendTime 字段,请指定以下内容:

    autoDeleteAutoCreatedReservations%2CspecificSkuProperties.totalCount%2CtimeWindow.endTime
    
  • PLANNING_STATUS:未来预留请求的计划状态。 请指定以下某个值:

    • 如需修改未来预留请求草稿,但不提交进行审核,请执行以下操作:DRAFT

    • 如需提交修改请求以供审核,请执行以下操作:SUBMITTED

替换以下一个或多个占位符,或将其与相应的字段一起移除:

  • AUTO_DELETE_AUTO_CREATED_RESERVATIONS:如果您将此字段设置为 true,则 Compute Engine 会自动删除为未来预留请求预配的自动创建预留。默认情况下,删除操作会在预留期结束时间后的两个小时内删除。如需更改此设置,请执行以下操作之一:

    • 如需在预留期结束时间之后的特定时间删除自动创建的预留,请将 autoDeleteAutoCreatedReservations 设置为 true 并指定 autoCreatedReservationsDeleteTime 字段。

      PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=autoDeleteAutoCreatedReservations%2CautoCreatedReservationsDeleteTime%2CplanningStatus
      
      {
        "autoDeleteAutoCreatedReservations": "true",
        "autoCreatedReservationsDeleteTime": "DELETE_TIME",
        "name": "FUTURE_RESERVATION_NAME",
        "planningStatus": "PLANNING_STATUS"
      }
      

      DELETE_TIME 替换为 Compute Engine 删除预留的日期和时间。日期和时间必须采用 RFC 3339 时间戳格式。

    • 如需在预留期开始时间起的特定时长后删除自动创建的预留,请将 autoDeleteAutoCreatedReservations 设置为 true 并指定 autoCreatedReservationsDuration 字段。

      PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=autoDeleteAutoCreatedReservations%2CautoCreatedReservationsDuration%2CplanningStatus
      
      {
        "autoDeleteAutoCreatedReservations": "true",
        "autoCreatedReservationsDuration": {
          "seconds": "DURATION_BEFORE_DELETE"
        },
        "name": "FUTURE_RESERVATION_NAME",
        "planningStatus": "PLANNING_STATUS"
      }
      

      DURATION_BEFORE_DELETE 替换为持续时间,以秒为单位。例如,指定 604800 表示 604,800 秒(7 天)。

  • DESCRIPTION:未来预留请求的新说明。

  • NAME_PREFIX:为未来预留请求预配的自动创建预留的新名称前缀。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2:您要与之共享未来预留请求的项目的 ID。这些项目必须与所有者项目位于同一组织中。您最多可以指定 100 个使用方项目。

  • SHARE_TYPE:未来预留请求的新共享类型。执行下列其中一项操作:

    • 如需指定单项目未来预留请求,请执行以下操作:

      • 指定 LOCAL

      • 移除 shareSettings.projects 字段。

    • 如需指定共享未来预留请求,请执行以下操作:

      • 指定 SPECIFIC_PROJECTS

      • shareSettings.projects 字段中指定至少一个使用方项目。使用方项目必须与所有者项目位于同一组织中。您最多可以指定 100 个使用方项目。

  • 如需更改要挂接到预留 N1 虚拟机的 GPU 数量和类型,请替换以下内容:

  • INTERFACE_1INTERFACE_2:挂接到每个预留虚拟机的本地固态硬盘磁盘的磁盘接口类型。请指定以下某个值:

  • MACHINE_TYPE:要用于每个预留虚拟机的新机器类型。如果您要更改机器类型,请务必同时为新机器系列指定建议的最短预留期。否则,Google Cloud 不太可能批准您的修改请求。

  • MINIMUM_CPU_PLATFORM:每个预留虚拟机将使用的新的满足最低要求的 CPU 平台。

  • TOTAL_COUNT:您要为该时间段预留的虚拟机的新总数、虚拟机配置和此未来预留请求中指定的项目。如果您想增加总数,请确保您有足够的配额用于预留的资源。否则,Google Cloud 会拒绝您的修改请求。

  • START_TIME:采用 RFC 3339 时间戳格式的新的预留期开始时间。开始时间不能比您提交修改请求以供审核的日期和时间晚 1 年。如需有足够的时间在未来预留获得批准之后且在其进入锁定时间之前选择取消、删除或修改未来预留,请指定建议的开始时间

  • END_TIME:采用 RFC 3339 时间戳格式的预留期的新结束时间。预留期必须至少持续 24 小时。或者,您可以将 endTime 字段替换为 duration 字段,以指定从预留期开始时间起的具体时长:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=timeWindow.duration%2CplanningStatus
    
    {
      "name": "FUTURE_RESERVATION_NAME",
      "planningStatus": "PLANNING_STATUS",
      "timeWindow": {
        "duration": {
          "seconds": "END_DURATION"
        }
      }
    }
    

    END_DURATION 替换为持续时间,以秒为单位。例如,指定 1209600 表示 1,209,600 秒(14 天)。 为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定建议的预留期

例如,可考虑指定名为 fr-03 且位于可用区 us-central1-a 的共享未来预留请求草稿。假设您要通过进行以下更改来修改此共享未来预留请求:

  • 将请求转换为单项目未来预留请求。

  • 停用自动删除选项。

  • 预留 100 个虚拟机。

  • 将未来预留请求提交给 Google Cloud 以供审核。

要修改 fr-03,请发出 PATCH 请求,如下所示:

PATCH https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations/fr-03?updateMask=autoDeleteAutoCreatedReservations%2CplanningStatus%2CshareSettings.shareType%2CspecificSkuProperties.totalCount

{
  "autoDeleteAutoCreatedReservations": false,
  "name": "fr-03",
  "planningStatus": "SUBMITTED",
  "shareSettings": {
    "shareType": "LOCAL"
  },
  "specificSkuProperties": {
    "totalCount": "100"
  }
}

修改未来预留请求后,您可以通过查看未来预留请求的详细信息来监控其采购或更新状态。

更改未来预留请求中的其他属性

如需更改创建未来预留请求后、请求获得批准并进入其锁定时间之前无法修改的属性,请执行以下操作:

  1. 如需阻止未来预留请求限制您可以在项目(或在与其共享未来预留请求的项目)中创建的未来预留请求的类型,请删除未来预留请求

  2. 使用所需的更新创建新的单项目共享未来预留请求

问题排查

如果您在修改未来预留请求时遇到错误,那么请参阅如何对未来预留请求进行问题排查

如果您在进行问题排查后仍遇到问题,那么请联系您的客户代表或 Google Cloud 支持团队

后续步骤