为单个项目创建预留


本文档介绍如何创建只能由同一项目中的虚拟机 (VM) 实例使用的单项目预留。如需了解预留,请参阅 Compute Engine 可用区级资源的预留

如需了解创建预留的其他方法,请参阅以下页面:

  • 如果您在当前项目中具有任何 1 年期或 3 年期承诺,则您的预留资源会自动获得任何适用的承诺使用折扣。您还可以在购买承诺时创建预留并将其附加到该承诺。如需了解详情,请参阅将预留附加到承诺

  • 如需创建可供多个项目使用的预留,请参阅创建共享预留

准备工作

  • 查看预留的要求限制
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

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

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. 安装 Google Cloud CLI。
      2. 如需初始化 gcloud CLI,请运行以下命令:

        gcloud init
      3. 为您的 Google 账号创建本地身份验证凭据:

        gcloud auth application-default login

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

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

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

        gcloud init

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

所需的角色

如需获得创建单项目预留所需的权限,请让您的管理员向您授予项目的 Compute Admin (roles/compute.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

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

所需权限

创建单项目预留需要以下权限:

  • 项目的 compute.reservations.create 权限
  • 如需指定实例模板:实例模板的 compute.instanceTemplates.useReadOnly 权限

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

创建单项目预留

本部分介绍如何创建单项目预留。

如需使用预留,虚拟机必须具有与该预留完全匹配的属性。如需指定要预留的虚拟机的属性,请选择本文档中的以下部分之一:

默认情况下,具有与预留相匹配的属性的虚拟机可以自动使用该预留。如果您想要控制预留的使用,请执行以下一项或多项操作:

此外,您可以在创建单项目预留时指定紧凑布置政策。紧凑布置政策指定虚拟机尽可能彼此靠近,以缩短网络延迟时间。

指定实例模板

如需通过指定实例模板创建单项目预留,请使用 Google Cloud 控制台、gcloud CLI 或 REST。

控制台

如需通过指定实例模板创建单项目预留,请执行以下操作:

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

    转到“预留”

  2. 点击 创建预留

    此时会打开创建预留页面。

  3. 名称字段中,为预留输入名称。

  4. 选择您要预留资源的区域可用区

  5. 共享类型部分中,点击本地(默认)。

  6. 搭配虚拟机实例使用部分中,选择以下选项之一:

    • 如需允许匹配的虚拟机自动使用此预留,请点击自动使用预留(默认)。

    • 如需在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请点击选择特定预留

  7. 虚拟机实例数量字段中,输入要预留的虚拟机数量。

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

    1. 如需根据现有实例模板指定虚拟机的属性,请选择使用实例模板

    2. 实例模板字段中,选择所需的实例模板。 如果选择区域级实例模板,则只能在实例模板的区域内预留资源。

  9. 自动删除部分中,您可以启用自动删除选项,以让 Compute Engine 在特定日期和时间自动删除预留。当您停止使用预留时,自动删除预留有助于避免产生不必要的费用。

  10. 要创建预留,请点击创建

    此时会打开预留页面。创建单项目预留可能需要一分钟时间才能完成。

gcloud

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

如需通过指定不带任何可选标志的实例模板来创建单项目预留,请运行以下命令:

gcloud compute reservations create RESERVATION_NAME \
    --project=PROJECT_ID \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

替换以下内容:

  • RESERVATION_NAME:要创建的预留的名称。

  • PROJECT_ID:要在其中预留资源以及实例模板所在的项目的 ID。

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

    • 对于全球实例模板:global

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

  • INSTANCE_TEMPLATE_NAME:现有实例模板的名称。如果指定包含紧凑布置政策的实例模板,则必须指定 --require-specific-reservation 标志。这表示只有明确指向此预留的虚拟机才能使用它。

  • NUMBER_OF_VMS:要预留的虚拟机数量。

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

例如,如需通过指定全局实例模板为可用区 us-central1-a 中的 10 个虚拟机创建预留,请运行以下命令:

gcloud compute reservations create my-reservation \
    --project=example-project \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

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

  • 如需指定只有明确指向此预留的虚拟机才能使用该虚拟机,请添加 --require-specific-reservation 标志。

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • 如需让 Compute Engine 自动删除预留,请选择以下方法之一:

    • 如需在特定日期和时间删除预留,请使用 gcloud beta compute reservations create 命令并添加 --delete-at-time 标志。

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      DELETE_AT_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

    • 如需在特定时间段后删除预留,请使用 gcloud beta compute reservations create 命令并添加 --delete-after-duration 标志。

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

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

REST

如需通过指定实例模板创建单项目预留,请向 reservations.insert 方法发出 POST 请求。

如需通过指定没有任何可选标志的实例模板来创建单项目预留,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

替换以下内容:

  • PROJECT_ID:要在其中预留资源以及实例模板所在的项目的 ID。

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

  • RESERVATION_NAME:要创建的预留的名称。

  • NUMBER_OF_VMS:要预留的虚拟机数量。

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

    • 对于全球实例模板:global

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

  • INSTANCE_TEMPLATE_NAME:现有实例模板的名称。如果指定包含紧凑布置政策的实例模板,您必须在请求正文中指定 specificReservationRequired 字段并将其设置为 true。这表示只有明确指向此预留的虚拟机才能使用它。

例如,如需通过指定全局实例模板为可用区 us-central1-a 中的 10 个虚拟机创建预留,请发出以下 POST 请求:

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

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

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

  • 如需指定只有明确指向此预留的虚拟机才能使用该预留,请在请求正文中添加 specificReservationRequired 字段并将其设置为 true

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • 如需让 Compute Engine 自动删除预留,请选择以下方法之一:

    • 如需在特定日期和时间删除预留,请向 beta.reservations.insert 方法发出 POST 请求。在请求正文中,包含 deleteAtTime 字段。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      DELETE_AT_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

    • 如需在特定时间段后删除预留,请向 beta.reservations.insert 方法发出 POST 请求。在请求正文中,包含 deleteAfterDuration 字段。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      DELETE_AFTER_DURATION 替换为持续时间,以秒为单位。例如,指定 86400 标识 86400 秒(1 天)。

直接指定属性

如需通过直接指定属性来创建单项目预留,请使用 Google Cloud 控制台、gcloud CLI、Terraform 或 REST。

控制台

如需创建单项目预留,请执行以下操作:

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

    转到“预留”

  2. 点击 创建预留

    此时会打开创建预留页面。

  3. 名称字段中,为预留输入名称。

  4. 选择您要预留资源的区域可用区

  5. 共享类型部分中,点击本地(默认)。

  6. 搭配虚拟机实例使用部分中,选择以下选项之一:

    • 如需允许匹配的虚拟机自动使用此预留,请点击自动使用预留(默认)。

    • 如需在创建通过名称明确指向此预留的匹配虚拟机时使用此预留的资源,请点击选择特定预留

  7. 虚拟机实例数量字段中,输入要预留的虚拟机数量。

  8. 机器配置部分中,选择指定机器类型,然后指定以下内容:

    1. 机器系列系列机器类型字段中,选择机器系列、系列和机器类型。

    2. 可选:如需指定满足最低要求的 CPU 平台和/或 GPU,请执行以下操作:

      1. 如需展开 CPU 平台和 GPU 部分,请点击 展开箭头。

      2. 可选:如需指定满足最低要求的 CPU 平台,请在 CPU 平台列表中选择一个选项。

      3. 可选:如需添加 GPU,请点击 添加 GPU。然后,在 GPU 类型GPU 数量字段中,选择每个虚拟机的 GPU 类型和数量。

    3. 可选:如需添加本地 SSD,请执行以下操作:

      1. 磁盘数量字段中,选择每个虚拟机的本地 SSD 数量。

      2. 接口类型字段中,选择本地 SSD 的接口。

    4. 可选:如需为符合要求的预留指定紧凑布置政策,请点击选择或创建组布置政策列表,然后执行以下操作之一:

      • 如需创建要在此预留中指定的紧凑布置政策,请按照以下步骤操作:

        1. 点击创建组布置政策

          系统会显示创建组布置政策窗格。

        2. 政策名称字段中,输入政策的名称。

        3. 点击创建

          创建紧凑布置政策可能需要几秒钟才能完成。

      • 否则,请选择现有的紧凑布置政策。

  9. 自动删除部分中,您可以启用自动删除选项,以让 Compute Engine 在特定日期和时间自动删除预留。当您停止使用预留时,自动删除预留有助于避免产生不必要的费用。

  10. 要创建预留,请点击创建

    创建单项目预留可能需要一些时间才能完成。此操作会将您重定向到预留页面。

gcloud

如需创建单项目预留,请使用 gcloud compute reservations create 命令

如需创建没有任何可选标志的单项目预留,请运行以下命令:

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

替换以下内容:

  • RESERVATION_NAME:要创建的预留的名称。

  • MACHINE_TYPE:要用于每个虚拟机的机器类型。 请指定以下某个值:

    • 对于预定义机器类型:MACHINE_FAMILY-standard-CPUS

    • 对于自定义机器类型:MACHINE_FAMILY-custom-CPUS-MEMORY。在指定自定义机器类型之前,请查看自定义机器类型的虚拟机的限制

    替换以下内容:

    • MACHINE_FAMILY:机器家族。

    • CPUS:vCPU 的数量。

    • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供。

    例如,如需指定配备 4 个 vCPU 和 5 GB(即 5,120 MB)内存的 N2 自定义机器类型,请指定 n2-custom-4-5120

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

  • NUMBER_OF_VMS:要预留的虚拟机数量。

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

例如,如需在 us-central1-a 可用区中为 10 个虚拟机创建预留,每个虚拟机使用具有 4 个 vCPU 的 N2 预定义机器类型,请运行以下命令:

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --project=example-project \
    --vm-count=10 \
    --zone=us-central1-a

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

  • 如需向每个预留的虚拟机添加图形处理单元 (GPU),请添加 --accelerator 标志。

    gcloud compute reservations create my-reservation \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        ...
    

    替换以下内容:

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

    • ACCELERATOR_TYPE:要添加到已预留虚拟机的 GPU 的类型。

    确保您在预留中指定的机器类型支持您指定的 GPU 类型,并且 GPU 在您预留资源的可用区中可用。否则,创建预留将失败。

  • 如需向每个预留虚拟机添加一个或多个本地 SSD,请添加一个或多个 --local-ssd 标志。您最多可以指定 24 个本地 SSD。每个本地 SSD 为 375 GB。

    例如,如需在创建预留时指定两个本地 SSD,请添加两个 --local-ssd 标志。

    gcloud compute reservations create my-reservation \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        ...
    

    INTERFACE_1INTERFACE_2 替换为您希望本地 SSD 使用的接口类型。请指定以下某个值:

    • 对于 NVME 磁盘接口:nvme

    • 对于 SCSI 磁盘接口:scsi

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

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

    gcloud compute reservations create my-reservation \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        ...
    

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

  • 如需指定只有明确指向此预留的虚拟机才能使用该虚拟机,请添加 --require-specific-reservation 标志。

    gcloud compute reservations create example-reservation \
        --require-specific-reservation \
        ...
    
  • 如需指定紧凑布置政策以降低虚拟机之间的网络延迟时间,请添加 --resource-policies=policy 标志。

    gcloud compute reservations create example-reservation \
        --resource-policies=policy=COMPACT_PLACEMENT_POLICY_NAME \
        --require-specific-reservation \
        ...
    

    COMPACT_PLACEMENT_POLICY_NAME 替换为现有紧凑布置政策的名称。此外,为了避免在创建指定紧凑布置政策的单项目预留时发生错误,请务必指定以下内容:

    • 紧凑布置政策支持的机器类型

    • 紧凑布置政策所在区域内的可用区。

    • --require-specific-reservation 标志。 这表示只有明确指向预留的虚拟机才能使用它。

  • 如需让 Compute Engine 自动删除预留,请选择以下方法之一:

    • 如需在特定日期和时间删除预留,请使用 gcloud beta compute reservations create 命令并添加 --delete-at-time 标志。

      gcloud beta compute reservations create reservation-example \
          --delete-at-time=DELETE_AT_TIME \
          ...
      

      DELETE_AT_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

    • 如需在特定时间段后删除预留,请使用 gcloud beta compute reservations create 命令并添加 --delete-after-duration 标志。

      gcloud beta compute reservations create reservation-example \
          --delete-after-duration=DELETE_AFTER_DURATION \
          ...
      

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

Terraform

如需创建单项目预留,请使用 google_compute_reservation Terraform 资源


resource "google_compute_reservation" "default" {
  name = "gce-reservation-local"
  zone = "us-central1-a"

  /**
   * To specify a single-project reservation, omit the share_settings block
   * (default) or set the share_type field to LOCAL.
   */
  share_settings {
    share_type = "LOCAL"
  }

  specific_reservation {
    count = 1
    instance_properties {
      machine_type = "n2-standard-2"
    }
  }

  /**
   * To let VMs with affinity for any reservation consume this reservation, omit
   * the specific_reservation_required field (default) or set it to false.
   */
  specific_reservation_required = false
}

如需详细了解如何使用 Terraform,请参阅将 Terraform 与 Google Cloud 搭配使用

REST

如需创建单项目预留,请向 reservations.insert 方法发出 POST 请求。

如需创建没有任何可选字段的单项目预留,请发出以下 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  }
}

替换以下内容:

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

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

  • RESERVATION_NAME:要创建的预留的名称。

  • NUMBER_OF_VMS:要预留的虚拟机数量。

  • MACHINE_TYPE:要用于每个虚拟机的机器类型。 请指定以下某个值:

    • 对于预定义机器类型:MACHINE_FAMILY-standard-CPUS

    • 对于自定义机器类型:MACHINE_FAMILY-custom-CPUS-MEMORY。在指定自定义机器类型之前,请查看自定义机器类型的虚拟机的限制

    替换以下内容:

    • MACHINE_FAMILY:机器家族。

    • CPUS:vCPU 的数量。

    • MEMORY:预留虚拟机的总内存。内存必须是 256 MB 的整数倍,且必须以 MB 为单位提供。

    例如,如需指定配备 4 个 vCPU 和 5 GB(即 5,120 MB)内存的 N2 自定义机器类型,请指定 n2-custom-4-5120

例如,如需在 us-central1-a 可用区中为 10 个虚拟机创建预留,每个虚拟机使用具有 4 个 vCPU 的 N2 预定义机器类型,请发出以下 POST 请求:

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

{
  "name": "my-reservation",
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

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

  • 如需向每个预留的虚拟机添加图形处理单元 (GPU),请在请求正文中添加 guestAccelerators 字段。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          ...
        },
        ...
      }
    }
    

    替换以下内容:

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

    • ACCELERATOR_TYPE:要添加到已预留虚拟机的 GPU 的类型。

    确保您在预留中指定的机器类型支持您指定的 GPU 类型,并且 GPU 在您预留资源的可用区中可用。否则,创建预留将失败。

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

    例如,如需在创建预留时指定两个本地 SSD,请指定以下内容:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          ...
        },
        ...
      }
    }
    

    INTERFACE_1INTERFACE_2 替换为您希望每个本地 SSD 使用的接口类型。请指定以下某个值:

    • 对于 NVME 磁盘接口:NVME

    • 对于 SCSI 磁盘接口:SCSI

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

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

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservation": {
        "instanceProperties": {
          "minCpuPlatform": "MIN_CPU_PLATFORM",
          ...
        },
        ...
      }
    }
    

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

  • 如需指定紧凑布置政策以减少预留虚拟机中的网络延迟,请在请求正文中添加 resourcePolicies 字段。

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "resourcePolicies": {
        "policy" : "projects/example-project/regions/REGION/resourcePolicies/COMPACT_PLACEMENT_POLICY_NAME"
      },
      "specificReservationRequired": true,
      ...
    }
    

    替换以下内容:

    • REGION:紧凑布置政策所在的区域。您必须在布置政策的同一区域内预留资源。否则,创建预留将失败。

    • COMPACT_PLACEMENT_POLICY_NAME:现有紧凑布置政策的名称。

    此外,为了避免在创建指定紧凑布置政策的单项目预留时发生错误,请务必指定以下内容:

  • 如需指定只有明确指向此预留的虚拟机才能使用该预留,请在请求正文中添加 specificReservationRequired 字段并将其设置为 true

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations
    
    {
      "name": "example-reservation",
      "specificReservationRequired": true,
      ...
    }
    
  • 如需让 Compute Engine 自动删除预留,请选择以下方法之一:

    • 如需在特定日期和时间删除预留,请向 beta.reservations.insert 方法发出 POST 请求。在请求正文中,包含 deleteAtTime 字段。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAtTime": "DELETE_AT_TIME",
        ...
      }
      

      DELETE_AT_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

    • 如需在特定时间段后删除预留,请向 beta.reservations.insert 方法发出 POST 请求。在请求正文中,包含 deleteAfterDuration 字段。

      POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/reservations
      
      {
        "name": "example-reservation",
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        ...
      }
      

      DELETE_AFTER_DURATION 替换为持续时间,以秒为单位。例如,指定 86400 标识 86400 秒(1 天)。

问题排查

了解如何排查预留创建问题

后续步骤