为单个项目创建未来预留请求


本文档介绍了如何创建单项目未来预留请求。

如果 Google Cloud 批准了您的单项目未来预留请求,那么,在请求中指定的开始时间,Compute Engine 会自动创建只能由同一项目中创建的虚拟机 (VM) 实例使用的预留。

准备工作

  • 如果您尚未这样做,请查看未来预留的工作原理
  • 如需确保有足够的配额用于您要预留的资源,请检查您的配额
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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 User (roles/compute.futureReservationUser) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建单项目未来预留请求所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建单项目未来预留请求需要具备以下权限:

  • 创建未来预留请求:针对项目的 compute.futureReservations.create 权限
  • 让 Compute Engine 自动创建预留:针对项目的 compute.reservations.create 权限
  • 如需指定实例模板:实例模板的 compute.instanceTemplates.useReadOnly 权限

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

创建请求草稿

创建未来预留请求时,您可以将请求保存为草稿,稍后提交给 Google Cloud 进行审核,也可以直接提交请求进行审核。Google 建议您先创建请求草稿,因为这样您就可以确定 Compute Engine 将为您的请求预配的虚拟机数量(而不是手动估算此数量),并可选择修改请求中的预留虚拟机数量,然后再提交请求以供审核。

如需使用未来预留的自动创建预留,虚拟机必须具有完全匹配该预留的属性。如需通过创建未来预留请求来指定要请求预留的虚拟机的属性,请使用以下方法之一:

  • 推荐:指定实例模板

    您可以使用现有实例模板来定义未来预留请求的属性。使用实例模板,您可以定义未来预留的属性,以及可以使用同一位置的自动创建预留的虚拟机。

  • 指定现有虚拟机

    您可以使用现有虚拟机来定义未来预留请求的属性。通过使用现有虚拟机的属性,您可以通过创建属性与参考虚拟机匹配的虚拟机来使用为未来预留配置的自动创建预留。

  • 直接指定属性

    您可以直接定义未来预留请求的属性。此方法要求您手动确保虚拟机属性和自动创建预留完全匹配 - 任何不匹配的属性都会阻止使用。

任何具有匹配属性的虚拟机都会自动使用未来预留的自动创建预留。如果您想阻止虚拟机使用任何此类自动创建的预留,请参阅如何创建不使用预留的虚拟机

指定实例模板

通过指定实例模板创建未来预留请求时,请注意以下事项:

  • 您必须在与实例模板中的资源相同的区域和可用区中创建未来预留请求。在实例模板中指定的任何区域级资源可用区级资源(例如机器类型或 Persistent Disk)会将模板的使用范围限制为这些资源所在的位置。例如,如果您的实例模板指定了 us-central1-a 可用区中的现有 Persistent Disk,则必须在同一可用区中创建未来预留请求。否则,创建未来预留请求将失败。

    如需检查现有模板是否指定了任何将模板绑定到特定区域或可用区的资源,请查看模板详细信息并查找对其中的区域级资源或可用区级资源的引用。

  • 如果要将为未来预留预配的自动创建的预留附加到承诺,则必须停用自动删除选项。如需了解详情,请参阅创建后限制

创建未来预留请求后,您将无法修改该未来预留请求来替换该模板的虚拟机属性,也无法指定其他模板。您必须创建新的未来预留请求

如需通过指定现有实例模板来创建单项目未来预留,请选择以下选项之一:

控制台

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

    转到“预留”

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

  3. 点击 创建未来预留

    创建未来预留页面会打开。

  4. 名称字段中,为未来预留请求输入名称。

  5. 前缀中,输入名称前缀。此未来预留请求中每个自动创建预留的名称以此前缀开头。

  6. 对于区域可用区,请选择要预留资源的区域和可用区。

  7. 开始时间字段中,输入预留期的开始时间。开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。如需有足够的时间在未来预留进入锁定时间之前选择修改、取消或删除未来预留,请指定建议的开始时间

  8. 结束时间字段中,输入预留期的结束时间。预留期必须至少持续 24 小时。

    时长摘要部分中,您可以查看预留期时长。为了提高 Google Cloud 在提交未来预留请求以供审核后对其进行批准的可能性,请确保指定预留期的推荐值

  9. 共享类型部分中,选择本地(如果尚未选择)。

  10. 对于虚拟机实例数量,请输入您要为此未来预留请求中指定的期限、虚拟机配置和项目预留的虚拟机总数

  11. 机器配置部分中,执行以下操作:

    1. 选择使用实例模板

    2. 对于实例模板,请选择所需的实例模板。如果您选择区域级实例模板,则只能在该模板的区域内预留资源。

  12. 自动生成的预留自动删除时间部分,执行以下操作之一:

    • 如需使 Compute Engine 能够自动删除未来预留请求的自动创建预留,请执行以下操作:

      1. 点击启用自动删除切换开关,以将其切换为开启位置(如果尚未设置为开启)。

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

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

  13. 如需完成未来预留请求草稿的创建,请点击保存草稿

此时会打开预留页面。创建未来预留请求最多可能需要一分钟才能完成。

gcloud

如需通过指定实例模板创建单项目未来预留请求,请使用 gcloud beta compute future-reservations create 命令

如需通过指定实例模板而不添加任何可选标志来创建未来预留请求草稿,并在预留期结束时自动删除自动创建的预留,请运行以下命令:

gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
    --auto-delete-auto-created-reservations \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --start-time=START_TIME \
    --end-time=END_TIME \
    --total-count=TOTAL_COUNT \
    --zone=ZONE

替换以下内容:

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

  • MACHINE_TYPE:要用于每个预留虚拟机的机器类型。

  • PROJECT_ID:您要预留资源的项目的 ID 和实例模板所在的项目。

  • LOCATION:实例模板的位置。请指定以下某个值:

    • 对于区域级实例模板:regions/REGION。将 REGION 替换为实例模板所在的区域。如果您指定了区域级实例模板,则只能在该实例模板所在的区域内创建未来预留请求。

    • 对于全球实例模板:global

  • INSTANCE_TEMPLATE_NAME:现有实例模板的名称。

  • START_TIME:采用 RFC 3339 时间戳格式的预留期开始时间,必须采用以下格式:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    替换以下内容:

    • YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-) 分隔的日期。

    • HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:) 分隔的采用 24 小时制的时间。

    • OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定 -08:00。或者,如果不使用偏移量,请指定 Z

    开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。为了在批准之后且在其进入锁定时间之前有足够的时间选择性地取消、删除或修改未来预留请求,请指定开始时间的建议值

  • END_TIME:采用 RFC 3339 时间戳格式的预留期结束时间。预留期必须至少持续 24 小时。或者,您可以将 --end-time 标志替换为 --duration=END_DURATION 标志。将 END_DURATION 替换为预留期的时长,以秒为单位。例如,指定 1209600 表示 1,209,600 秒(14 天)。

    为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定建议的最短时长

  • TOTAL_COUNT:您要预留的虚拟机的总数

  • ZONE:预留资源的可用区。

例如,假设您想在可用区 us-central1-a 中创建一项名为 fr-01 的未来预留请求草稿,其中包含以下属性:

  • 预留期采用世界协调时间 (UTC),从 2024 年 11 月 10 日半夜 12 点开始,到 2024 年 12 月 10 日半夜 12 点结束。

  • 总计 80 台虚拟机。

  • 来自区域 us-central1 的区域级实例模板。
  • 已启用自动删除选项。自动创建的预留将在预留期结束时删除。

如需创建 fr-01,请运行以下命令:

gcloud beta compute future-reservations create fr-01 \
    --auto-delete-auto-created-reservations \
    --source-instance-template=projects/example-project/regions/us-central1/instanceTemplates/example-template \
    --start-time=2024-11-10T00:00:00Z \
    --end-time=2024-12-10T00:00:00Z \
    --total-count=80 \
    --zone=us-central1-a

您可以选择执行以下一项或多项操作:

  • 如需在预留期结束时间后删除自动创建预留,请选择以下方法之一:

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

      gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
          --auto-created-reservations-delete-time=AUTO_CREATED_RESERVATIONS_DELETE_TIME \
          --auto-delete-auto-created-reservations \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

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

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

      gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
          --auto-created-reservations-duration=DURATION_BEFORE_DELETE \
          --auto-delete-auto-created-reservations \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

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

  • 如需为自动创建的预留停用自动删除选项,请将 --auto-delete-auto-created-reservations 标志替换为 --no-auto-delete-auto-created-reservations 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --no-auto-delete-auto-created-reservations \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    
  • 如需为自动创建的预留指定名称前缀,请添加 --name-prefix 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --auto-delete-auto-created-reservations \
        --name-prefix=NAME_PREFIX \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    NAME_PREFIX 替换为每个自动创建的预留的名称前缀。为了帮助您识别此未来预留请求的自动创建预留,Google Cloud 建议您指定唯一的名称前缀。

REST

要通过指定实例模板创建单项目未来预留请求,请向 beta.futureReservations.insert 方法发出 POST 请求。

如需通过指定实例模板来创建未来预留请求的草稿,而不添加任何可选字段,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations

{
  "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
  "name": "FUTURE_RESERVATION_NAME",
  "specificSkuProperties": { 
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "totalCount": TOTAL_COUNT
  },
  "timeWindow": {
    "startTime": "START_TIME",
    "endTime": "END_TIME"
  }
}

替换以下内容:

  • PROJECT_ID:您要预留资源的项目的 ID 和实例模板所在的项目。

  • ZONE:预留资源的可用区。

  • AUTO_DELETE_AUTO_CREATED_RESERVATIONS:如果您将此字段设置为 true,则 Compute Engine 会在预留期结束时间后的两小时内自动删除此未来预留的自动创建预留。如果要将自动创建的预留附加到承诺,请将此字段设置为 false

  • LOCATION:实例模板的位置。请指定以下某个值:

    • 对于区域级实例模板:regions/REGION。将 REGION 替换为实例模板所在的区域。如果您指定了区域级实例模板,则只能在该实例模板所在的区域内创建未来预留请求。

    • 对于全球实例模板:global

  • INSTANCE_TEMPLATE_NAME:现有实例模板的名称。

  • TOTAL_COUNT:您要预留的虚拟机的总数

  • START_TIME:采用 RFC 3339 时间戳格式的预留期开始时间,必须采用以下格式:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    替换以下内容:

    • YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-) 分隔的日期。

    • HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:) 分隔的采用 24 小时制的时间。

    • OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定 -08:00。或者,如果不使用偏移量,请指定 Z

    开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。为了在批准之后且在其进入锁定时间之前有足够的时间选择性地取消、删除或修改未来预留请求,请指定开始时间的建议值

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

    "duration": {
      "seconds": END_DURATION
    }
    

    END_DURATION 替换为持续时间,以秒为单位。例如,指定 1209600 表示 1,209,600 秒(14 天)。

    为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定其中一个预留期建议值

例如,假设您想在可用区 us-central1-a 中创建一项名为 fr-01 的未来预留请求草稿,其中包含以下属性:

  • 预留期采用世界协调时间 (UTC),从 2024 年 11 月 10 日半夜 12 点开始,到 2024 年 12 月 10 日半夜 12 点结束。

  • 总计 80 台虚拟机。

  • 来自区域 us-central1 的区域级实例模板。
  • 已启用自动删除选项。自动创建的预留将在预留期结束时删除。

要创建 fr-01,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations

{
  "autoDeleteAutoCreatedReservations": true,
  "name": "fr-01",
  "specificSkuProperties": { 
    "sourceInstanceTemplate": "projects/example-project/regions/us-central1/instanceTemplates/example-template",
    "totalCount": 80
  },
  "timeWindow": {
    "startTime": "2024-11-10T00:00:00Z",
    "endTime": "2024-12-10T00:00:00Z"
  }
}

您可以选择执行以下一项或多项操作:

  • 如需为自动创建的预留指定名称前缀,请添加 namePrefix 字段。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
    
    {
      "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
      "name": "FUTURE_RESERVATION_NAME",
      "namePrefix": "NAME_PREFIX",
      "specificSkuProperties": { 
        "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    NAME_PREFIX 替换为每个自动创建的预留的名称前缀。为了帮助您识别此未来预留请求的自动创建预留,Google Cloud 建议您指定唯一的名称前缀。

  • 如需在预留期结束时间后删除自动创建预留,请选择以下方法之一:

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

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
      
      {
        "autoCreatedReservationsDeleteTime": "DELETE_TIME",
        "autoDeleteAutoCreatedReservations": true,
        "name": "FUTURE_RESERVATION_NAME",
        "specificSkuProperties": { 
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

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

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

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
      
      {
        "autoCreatedReservationsDuration": {
          "seconds": "DURATION_BEFORE_DELETE"
        },
        "autoDeleteAutoCreatedReservations": true,
        "name": "FUTURE_RESERVATION_NAME",
        "specificSkuProperties": { 
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

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

创建未来预留请求草稿后,您可以确定 Compute Engine 将为该请求预配的虚拟机数量

指定现有虚拟机

您只能根据与该虚拟机位于同一可用区中的现有虚拟机创建未来预留请求草稿。

在未来预留请求获得 Google Cloud 批准并进入预留期后,您可以通过创建属性与参考虚拟机匹配的虚拟机来使用其自动创建的预留。为此,您可以采取以下任一做法:

如需创建使用现有虚拟机属性的单项目未来预留请求,请执行以下操作:

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

    转到“预留”

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

  3. 点击 创建未来预留

    创建未来预留页面会打开。

  4. 名称字段中,为未来预留请求输入名称。

  5. 前缀中,输入名称前缀。此未来预留请求中每个自动创建预留的名称以此前缀开头。

  6. 对于区域可用区,请选择要预留资源的区域和可用区。

  7. 开始时间字段中,输入预留期的开始时间。开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。如需有足够的时间在未来预留进入锁定时间之前选择修改、取消或删除未来预留,请指定建议的开始时间

  8. 结束时间字段中,输入预留期的结束时间。预留期必须至少持续 24 小时。

    时长摘要部分中,您可以查看预留期时长。为了提高 Google Cloud 在提交未来预留请求以供审核后对其进行批准的可能性,请确保指定预留期的推荐值

  9. 共享类型部分,执行以下操作:

    1. 如需指定共享未来预留请求,请选择共享

    2. 点击 添加项目,然后从当前项目的组织中选择要共享未来预留请求的项目。 您最多可以选择 100 个项目。

  10. 对于虚拟机实例数量,请输入您要为此未来预留请求中指定的期限、虚拟机配置和项目预留的虚拟机总数

  11. 机器配置部分中,执行以下操作:

    1. 选择使用现有虚拟机

    2. 对于现有虚拟机,请选择要使用其属性来创建预留的虚拟机。

  12. 自动生成的预留自动删除时间部分,执行以下操作之一:

    • 如需使 Compute Engine 能够自动删除未来预留请求的自动创建预留,请执行以下操作:

      1. 点击启用自动删除切换开关,以将其切换为开启位置(如果尚未设置为开启)。

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

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

  13. 如需完成未来预留请求草稿的创建,请点击保存草稿

此时会打开预留页面。创建未来预留请求最多可能需要一分钟才能完成。

创建未来预留请求草稿后,您可以确定 Compute Engine 将为该请求预配的虚拟机数量

直接指定属性

如果要将为未来预留配置的自动创建的预留附加到承诺,则必须停用自动删除选项。如需了解详情,请参阅创建后限制

如需通过直接指定属性来创建单项目未来预留,请选择以下选项之一:

控制台

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

    转到“预留”

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

  3. 点击 创建未来预留

    创建未来预留页面会打开。

  4. 名称字段中,为未来预留请求输入名称。

  5. 前缀中,输入名称前缀。此未来预留请求中每个自动创建预留的名称以此前缀开头。

  6. 对于区域可用区,请选择要预留资源的区域和可用区。

  7. 开始时间字段中,输入预留期的开始时间。开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。如需有足够的时间在未来预留进入锁定时间之前选择修改、取消或删除未来预留,请指定建议的开始时间

  8. 结束时间字段中,输入预留期的结束时间。预留期必须至少持续 24 小时。

    时长摘要部分中,您可以查看预留期时长。为了提高 Google Cloud 在提交未来预留请求以供审核后对其进行批准的可能性,请确保指定预留期的推荐值

  9. 共享类型部分中,选择本地(如果尚未选择)。

  10. 对于虚拟机实例数量,请输入您要为此未来预留请求中指定的期限、虚拟机配置和项目预留的虚拟机总数

  11. 机器配置部分中,执行以下操作:

    1. 选择指定机器类型(如果尚未选择)。

    2. 指定要用于预留虚拟机的机器类型。

  12. 自动生成的预留自动删除时间部分,执行以下操作之一:

    • 如需使 Compute Engine 能够自动删除未来预留请求的自动创建预留,请执行以下操作:

      1. 点击启用自动删除切换开关,以将其切换为开启位置(如果尚未设置为开启)。

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

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

  13. 如需完成未来预留请求草稿的创建,请点击保存草稿

此时会打开预留页面。创建未来预留请求最多可能需要一分钟才能完成。

gcloud

如需通过直接指定属性来创建单项目未来预留请求,请使用 gcloud beta compute future-reservations create 命令

如需通过直接指定属性而不添加任何可选标志来创建未来预留请求草稿,并在预留期结束时自动删除自动创建的预留,请运行以下命令:

gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
    --auto-delete-auto-created-reservations \
    --machine-type=MACHINE_TYPE \
    --start-time=START_TIME \
    --end-time=END_TIME \
    --total-count=TOTAL_COUNT \
    --zone=ZONE

替换以下内容:

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

  • MACHINE_TYPE:要用于每个预留虚拟机的机器类型。

  • START_TIME:采用 RFC 3339 时间戳格式的预留期开始时间,必须采用以下格式:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    替换以下内容:

    • YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-) 分隔的日期。

    • HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:) 分隔的采用 24 小时制的时间。

    • OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定 -08:00。或者,如果不使用偏移量,请指定 Z

    开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。为了在批准之后且在其进入锁定时间之前有足够的时间选择性地取消、删除或修改未来预留请求,请指定开始时间的建议值

  • END_TIME:采用 RFC 3339 时间戳格式的预留期结束时间。预留期必须至少持续 24 小时。或者,您可以将 --end-time 标志替换为 --duration=END_DURATION 标志。将 END_DURATION 替换为预留期的时长,以秒为单位。例如,指定 1209600 表示 1,209,600 秒(14 天)。

    为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定建议的最短时长

  • TOTAL_COUNT:您要预留的虚拟机的总数

  • ZONE:预留资源的可用区。

例如,假设您想在可用区 us-central1-a 中创建一项名为 fr-01 的未来预留请求草稿,其中包含以下属性:

  • 预留期采用世界协调时间 (UTC),从 2024 年 11 月 10 日半夜 12 点开始,到 2024 年 12 月 10 日半夜 12 点结束。

  • 总计 80 台虚拟机。

  • 具有 4 个 vCPU 的 N2 预定义机器类型。
  • 已启用自动删除选项。自动创建的预留将在预留期结束时删除。

如需创建 fr-01,请运行以下命令:

gcloud beta compute future-reservations create fr-01 \
    --auto-delete-auto-created-reservations \
    --machine-type=n2-standard-4 \
    --start-time=2024-11-10T00:00:00Z \
    --end-time=2024-12-10T00:00:00Z \
    --total-count=80 \
    --zone=us-central1-a

您可以选择执行以下一项或多项操作:

  • 如需将 GPU 挂接到预留 N1 虚拟机,请添加 --accelerator 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --accelerator=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE \
        --auto-delete-auto-created-reservations \
        --machine-type=MACHINE_TYPE \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    替换以下内容:

    • NUMBER_OF_ACCELERATORS:要为每个预留虚拟机添加的 GPU 数量。

    • ACCELERATOR_TYPEN1 虚拟机支持的 GPU 模型。为避免出错,请确保您选择的 GPU 型号在您创建未来预留请求的可用区中可用。

  • 如需在预留期结束时间后删除自动创建预留,请选择以下方法之一:

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

      gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
          --auto-created-reservations-delete-time=AUTO_CREATED_RESERVATIONS_DELETE_TIME \
          --auto-delete-auto-created-reservations \
          --machine-type=MACHINE_TYPE \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

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

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

      gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
          --auto-created-reservations-duration=DURATION_BEFORE_DELETE \
          --auto-delete-auto-created-reservations \
          --machine-type=MACHINE_TYPE \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

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

  • 如需为自动创建的预留停用自动删除选项,请将 --auto-delete-auto-created-reservations 标志替换为 --no-auto-delete-auto-created-reservations 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --no-auto-delete-auto-created-reservations \
        --machine-type=MACHINE_TYPE \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    
  • 如需向每个预留的虚拟机添加一个或多个本地 SSD 磁盘,请添加一个或多个 --local-ssd 标志。您最多可以指定 24 个本地 SSD 磁盘。 每个本地 SSD 磁盘为 375 GB。

    例如,如需在创建未来预留请求草稿时指定两个本地 SSD 磁盘,请添加两个 --local-ssd 标志,如下所示:

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --auto-delete-auto-created-reservations \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        --machine-type=MACHINE_TYPE \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    INTERFACE_1INTERFACE_2 替换为您希望本地 SSD 磁盘使用的接口类型,如下所示:

    确保您为已预留虚拟机指定的机器类型支持所选的磁盘接口。否则,创建未来的预留请求将失败。如需了解详情,请参阅如何选择磁盘接口

  • 如需让预留的虚拟机使用特定的满足最低要求的 CPU 平台(而不是该可用区的默认 CPU 平台),请添加 --min-cpu-platform 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --auto-delete-auto-created-reservations \
        --machine-type=MACHINE_TYPE \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    MIN_CPU_PLATFORM 替换为满足最低要求的 CPU 平台。 为确保 CPU 平台在要预留资源的可用区可用,请按可用区查看可用的 CPU 平台

  • 如需为自动创建的预留指定名称前缀,请添加 --name-prefix 标志。

    gcloud beta compute future-reservations create FUTURE_RESERVATION_NAME \
        --auto-delete-auto-created-reservations \
        --machine-type=MACHINE_TYPE \
        --name-prefix=NAME_PREFIX \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    NAME_PREFIX 替换为每个自动创建的预留的名称前缀。为了帮助您识别此未来预留请求的自动创建预留,Google Cloud 建议您指定唯一的名称前缀。

REST

如需通过直接指定属性创建单项目未来预留请求,请向 beta.futureReservations.insert 方法发出 POST 请求。

如需通过直接指定属性且不添加任何可选字段来创建未来预留请求草稿,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations

{
  "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
  "name": "FUTURE_RESERVATION_NAME",
  "specificSkuProperties": { 
    "instanceProperties": {
      "machineType": "MACHINE_TYPE"
    },
    "totalCount": TOTAL_COUNT
  },
  "timeWindow": {
    "startTime": "START_TIME",
    "endTime": "END_TIME"
  }
}

替换以下内容:

  • PROJECT_ID:您要在其中预留资源的项目的 ID。

  • ZONE:预留资源的可用区。

  • AUTO_DELETE_AUTO_CREATED_RESERVATIONS:如果您将此字段设置为 true,则 Compute Engine 会在预留期结束时间后的两小时内自动删除此未来预留的自动创建预留。如果要将自动创建的预留附加到承诺,请将此字段设置为 false

  • TOTAL_COUNT:您要预留的虚拟机的总数

  • START_TIME:采用 RFC 3339 时间戳格式的预留期开始时间,必须采用以下格式:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    替换以下内容:

    • YYYY-MM-DD:格式为 4 位数年份、2 位数月份和 2 位数日期而且相互之间以连字符 (-) 分隔的日期。

    • HH:MM:SS:格式为 2 位数小时、2 位数分钟和 2 位数秒而且相互之间以冒号 (:) 分隔的采用 24 小时制的时间。

    • OFFSET:采用世界协调时间 (UTC) 的偏移量格式的时区。 例如,要使用太平洋标准时间 (PST),请指定 -08:00。或者,如果不使用偏移量,请指定 Z

    开始时间不能比您提交未来预留请求以供审核的日期和时间晚 1 年。为了在批准之后且在其进入锁定时间之前有足够的时间选择性地取消、删除或修改未来预留请求,请指定开始时间的建议值

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

    "duration": {
      "seconds": END_DURATION
    }
    

    END_DURATION 替换为持续时间,以秒为单位。例如,指定 1209600 表示 1,209,600 秒(14 天)。

    为了提高 Google Cloud 在您提交未来预留请求以供审核后批准该请求的可能性,请指定其中一个预留期建议值

例如,假设您想在可用区 us-central1-a 中创建一项名为 fr-01 的未来预留请求草稿,其中包含以下属性:

  • 预留期采用世界协调时间 (UTC),从 2024 年 11 月 10 日半夜 12 点开始,到 2024 年 12 月 10 日半夜 12 点结束。

  • 总计 80 台虚拟机。

  • 具有 4 个 vCPU 的 N2 预定义机器类型。
  • 已启用自动删除选项。自动创建的预留将在预留期结束时删除。

要创建 fr-01,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations

{
  "autoDeleteAutoCreatedReservations": true,
  "name": "fr-01",
  "specificSkuProperties": { 
    "instanceProperties": {
      "machineType": "n2-standard-4"
    },
    "totalCount": 80
  },
  "timeWindow": {
    "startTime": "2024-11-10T00:00:00Z",
    "endTime": "2024-12-10T00:00:00Z"
  }
}

您可以选择执行以下一项或多项操作:

  • 如需为自动创建的预留指定名称前缀,请添加 namePrefix 字段。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
    
    {
      "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
      "name": "FUTURE_RESERVATION_NAME",
      "namePrefix": "NAME_PREFIX",
      "specificSkuProperties": { 
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        },
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    NAME_PREFIX 替换为每个自动创建的预留的名称前缀。为了帮助您识别此未来预留请求的自动创建预留,Google Cloud 建议您指定唯一的名称前缀。

  • 如需将 GPU 挂接到预留 N1 虚拟机,请添加 guestAccelerators 字段。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
    
    {
      "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
      "name": "FUTURE_RESERVATION_NAME",
      "specificSkuProperties": {
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          "machineType": "MACHINE_TYPE"
        },
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    替换以下内容:

    • NUMBER_OF_ACCELERATORS:要为每个预留虚拟机添加的 GPU 数量。

    • ACCELERATOR_TYPEN1 虚拟机支持的 GPU 模型。为避免出错,请确保您选择的 GPU 型号在您创建未来预留请求的可用区中可用。

  • 如需向每个预留的虚拟机添加一个或多个本地 SSD 磁盘,请添加 localSsds 字段。您最多可以指定 24 个本地 SSD 磁盘。 每个本地 SSD 磁盘为 375 GB。

    例如,如需在创建未来预留请求草稿时指定两个本地 SSD 磁盘,请发出如下 POST 请求:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
    
    {
      "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
      "name": "FUTURE_RESERVATION_NAME",
      "specificSkuProperties": {
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          "machineType": "MACHINE_TYPE"
        },
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    INTERFACE_1INTERFACE_2 替换为您希望本地 SSD 磁盘使用的接口类型:

    确保您为已预留虚拟机指定的机器类型支持所选的磁盘接口。否则,创建未来的预留请求将失败。如需了解详情,请参阅如何选择磁盘接口

  • 如需让预留的虚拟机使用特定的满足最低要求的 CPU 平台(而不是该可用区的默认 CPU 平台),请添加 minCpuPlatform 标志。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
    
    {
      "autoDeleteAutoCreatedReservations": AUTO_DELETE_AUTO_CREATED_RESERVATIONS,
      "name": "FUTURE_RESERVATION_NAME",
      "specificSkuProperties": {
        "instanceProperties": {
          "machineType": "MACHINE_TYPE",
          "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
        },
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    MIN_CPU_PLATFORM 替换为满足最低要求的 CPU 平台。 为确保 CPU 平台在要预留资源的可用区可用,请按可用区查看可用的 CPU 平台

  • 如需在预留期结束时间后删除自动创建预留,请选择以下方法之一:

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

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
      
      {
        "autoCreatedReservationsDeleteTime": "DELETE_TIME",
        "autoDeleteAutoCreatedReservations": true,
        "name": "FUTURE_RESERVATION_NAME",
        "specificSkuProperties": { 
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          },
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

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

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

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations
      
      {
        "autoCreatedReservationsDuration": {
          "seconds": "DURATION_BEFORE_DELETE"
        },
        "autoDeleteAutoCreatedReservations": true,
        "name": "FUTURE_RESERVATION_NAME",
        "specificSkuProperties": { 
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          },
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

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

创建未来预留请求草稿后,您可以确定 Compute Engine 将为该请求预配的虚拟机数量

提交草稿请求

在未来预留请求已提交、获得 Google Cloud 的批准以及过了其锁定时间之后,您可以删除未来预留,并且只有在未来预留的预留期结束之后才能删除其自动创建预留。如果您需要创建另一个具有相同属性的未来预留,则删除现有未来预留非常有用。因此,在创建未来预留请求之前,请确保满足以下条件:

  • 项目中的任何现有预留或未来预留都会限制您可以创建的未来预留请求的共享设置。为了确保您可以成功创建未来预留请求,并且您的请求不会在您与之共享未来预留请求或预留的其他项目中出现问题,请参阅限制

  • 无论是否使用自动创建预留,您都必须承诺为 Compute Engine 在整个预留期预配的预留资源付费。有关详情,请参阅结算

如果您想在提交未来预留请求草稿以供审核时修改一个或多个属性,请参阅修改未来预留请求

如需将未来预留请求草稿提交给 Google Cloud 以供审核,请选择以下选项之一:

控制台

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

    转到“预留”

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

  3. 名称列中,点击采购状态为正在草拟的未来预留请求的名称。

    系统会打开未来预留页面,其中包含未来预留请求的详细信息。

  4. 点击 修改草稿

    系统随即会打开用于更新未来预留请求草稿的页面。

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

此时会打开预留页面。在您刚刚提交的未来预留请求的状态列中,采购状态设置为待审批

gcloud

如需提交未来预留请求草稿以供审核,请使用 gcloud beta compute future-reservations update 命令,并将 --planning-status 标志设置为 SUBMITTED

gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
    --planning-status=SUBMITTED \
    --zone=ZONE

替换以下内容:

  • FUTURE_RESERVATION_NAME:现有未来预留请求草稿的名称。

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

REST

如需提交未来预留请求草稿以供审核,请向 beta.futureReservations.update 方法发出 PATCH 请求。在请求正文中,添加 planningStatus 字段并将其设置为 SUBMITTED

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

{
  "name": "FUTURE_RESERVATION_NAME",
  "planningStatus": "SUBMITTED"
}

替换以下内容:

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

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

  • FUTURE_RESERVATION_NAME:现有未来预留请求草稿的名称。

提交未来预留请求草稿以供审核后,您可以执行以下操作:

问题排查

如果您在创建未来预留请求时遇到错误,请参阅如何排查未来预留请求问题

如果您在排查问题后仍遇到问题,请与您的技术支持客户经理销售团队联系。

后续步骤