Compute Engine 可用区级资源预留

预留为获取 Compute Engine 可用区级资源的容量提供了极高保障。例如,借助预留确保项目拥有相关资源,以便应对未来需求的增长,包括:计划内或计划外峰值、大量虚拟机 (VM) 实例迁移、备份和灾难恢复或计划增长和缓冲。

每个预留为具有相同属性(例如可用区、机器类型、CPU 平台、GPU 和磁盘)的一个或多个 VM 提供保证。您可以为单个项目(默认)创建预留,也可以为多个项目(预览)创建共享预留。

创建预留后,预留资源便立即开始计费;这些资源可供项目使用,直到预留被删除。如果不再需要预留,可将其删除以免继续产生费用。由于预留如同普通虚拟机一样消耗资源,因此系统会根据现有的按需使用费率对每个预留收费(其中包含持续使用折扣且有资格享受承诺使用折扣)。

本文档介绍 Compute Engine 可用区级资源的预留的优势、限制、行为和结算。如需了解如何创建、使用和管理预留,请参阅以下内容:

优势

预留具有下列优势:

  • 机器可在您需要时随时使用,即使您不立即使用它们。
  • 没有时间限制。您可以随时创建预留,也可以随时将其删除以免继续产生费用。

  • 折扣。由于预留是按与所预留的资源相同的方式和费率结算的,因此预留资源也享有承诺使用折扣和持续使用折扣。

共享预留的优势

默认情况下,预留只能由单个项目使用,即用于创建该预留的项目。但是,如果您的组织有多个项目,并且需要相同类型的保留实例,则您应考虑使用共享预留:不仅可供创建该预留的项目使用,还可供共享该预留的所有项目使用。

与单项目预留相比,共享预留具有以下优势:

  • 提高预留利用率。可同时由多个项目使用共享预留,这可有效避免未充分利用的预留
  • 减少需要创建和管理的预留数量。如果同一组织中多个项目的相同实例属性有单项目预留,则可以将它们合并到单个共享预留中。

限制

预留存在以下限制:

  • 预留仅适用于 Compute Engine、Dataproc 和 Google Kubernetes Engine 服务中的虚拟机使用。
  • 预留不适用于以下资源:
    • f1-microg1-small 机器类型
    • 抢占式虚拟机
    • 单租户节点
    • 上面未列出的其他服务(如 Cloud SQL 和 Dataflow)
  • 每个预留最多可预留 1000 个虚拟机实例。
  • 您的项目中必须有足够的配额满足要预留的资源。如果预留创建成功,则该资源的配额将产生相应费用。
  • 在您创建预留时,Compute Engine 会尝试分配按需资源。如果请求时可用区中资源不足,则预留会失败,并会因为容量不足,出现资源可用性错误。如果预留成功创建,则资源可供您使用,即使您不立即使用它们。
  • 与承诺使用折扣相结合时,需要遵循以下限制:
    • 您必须具有足够的承诺使用折扣配额
    • 对于 GPU 和本地 SSD 的承诺使用折扣价格,必须在购买承诺使用合约时创建预留。
    • 如果预留附属于某承诺使用合约,则不能删除预留。
    • 对于 K80 GPU,您只能购买 1 年期承诺。
  • 未附加到承诺使用折扣的预留可保留任意时长,但与常规实例一样,最短计费时间为 1 分钟。
  • 使用预留中的实例时,您只能按照有限的方式确定预留使用顺序。如需了解详情,请参阅使用顺序

共享预留的其他限制

共享预留也存在以下限制:

  • 您只能同与创建预留的项目在同一组织中的项目共享预留。
  • 每个共享预留可以与 1 到 100 个使用方项目共享。
  • 您必须在创建该预留的项目和任何使用该预留的项目中拥有足够的资源配额。因此,共享预留所需的每项资源配额是未与其他项目共享的预留的两倍。系统会对共享预留的每项资源收取两次费用,即使同一项目创建和使用该预留也是如此。
  • 对于每个组织,您可以为实例属性的每个唯一组合创建最多 100 个共享预留。
  • 您只能列出由特定项目创建的预留。这意味着每个共享预留仅列在创建它的项目下,您无法列出组织中的所有共享预留或与特定项目共享的所有预留。
  • 如果您将使用共享预留的项目移动到新组织,则其共享预留不会迁移到新组织,并且使用此项目创建的所有共享预留都会被删除。如需了解详情,请参阅共享预留的工作原理

您可以按照共享预留的最佳做法来缓解其中一些限制的影响。

预留工作原理

预留有助于确保在您需要时提供所需的虚拟机实例。创建预留时,您可以选择项目使用预留资源的方式。例如,您可选择与预留的实例属性相匹配的任何新实例或现有实例自动应用预留(默认行为),也可指定只有特定虚拟机实例能使用预留。

在任何情况下,虚拟机实例都只能在其属性与预留的实例属性完全匹配时使用预留:

  • 可用区
  • 机器类型(机器系列、vCPU 和内存)
  • 满足最低要求的 CPU 平台
  • GPU 类型
  • GPU 数量
  • 本地 SSD 接口
  • 本地 SSD 数量

如果虚拟机实例与预留的实例属性匹配,则除非另行指定,否则默认行为是所有现有的和新的虚拟机实例自动使用预留。例如,默认情况下,如果您针对 10 个 custom-8-10240 实例创建了预留,而您已经有 5 个匹配的 custom-8-10240 实例,则这 5 个实例将使用 5 个预留。如果您另外创建了 3 个匹配的实例,则再占用 3 个预留。

您可以通过在创建预留和实例时指定某些选项来替换此默认行为。

  • 如需创建您不希望被自动使用的预留,请指定需要定位特定预留的实例。仅在实例创建期间明确指定预留时,才能使用这些预留。
  • 如需指定您希望实例使用预留,请在创建实例时或在实例模板中使用 reservationAffinity 选项。您可以指定实例自动使用任何匹配预留中的资源、不自动使用匹配预留中的资源或仅使用特定预留中的资源。

如果您停止、暂停或删除正在使用预留的实例,则该实例将不再计入预留,并且预留资源再次可用。

如果删除预留但不删除使用预留资源的实例,则实例将继续存在并照常产生费用。

共享预留的工作原理

单项目预留中的资源(默认)只能由创建该预留的项目使用。但是,共享预留中的资源不仅可以供创建该预留的项目(所有者项目)使用,而且还可供共享该预留的所有项目使用(使用方项目)。

共享预留中的每个资源一次只能供一个项目使用。但是,多个项目可以同时使用来自同一共享预留的不同资源。当项目停止使用共享预留中的资源时,该资源可供其他项目使用。

默认情况下,项目无法创建和修改共享预留。如要使用项目创建和修改共享预留,该项目必须添加到共享预留所有者项目 (compute.sharedReservationsOwnerProjects) 组织政策限制条件的许可名单中。 如果您共享预留,则预留将受到其他限制的影响,并且与未共享的预留的使用行为略有不同。

使用顺序

如需使用预留中的实例,您可以为实例指定自动使用任何匹配的预留、使用特定的预留或不使用任何预留。使用任何匹配预留中的实例(默认)如果项目可以使用来自多个预留的实例,则预留将按以下顺序使用:

  1. 只有此项目可以访问的单项目预留。
  2. 此项目已创建或有权访问的共享预留。

每种类别都没有特定的使用顺序。如果其中一个类别具有多个预留,则该类别中的使用顺序无法预测。例如,如果一个项目只能访问一个单项目预留和两个共享预留,那么首先消耗单个项目预留,但您无法准确预测接下来使用哪个共享预留

此顺序可确保您的项目先使用单项目预留,然后再使用范围更广的共享预留,从而提高预留的利用率和可用性。

预留结算

Compute Engine 预留的费率与预留资源相同。如常规虚拟机一样,持续使用折扣、承诺使用折扣和自定义价格同样适用。

请看以下示例:

  • us-central1 中有一个包含 3 个 vCPU 的承诺使用合约
  • us-central1-a 中正在运行 5 个 vCPU
  • us-central1-a 中有一个包含 10 个 vCPU 的预留

具有部分承诺使用折扣的预留。

将按以下方式结算:

为云端硬盘设置的保全 vCPU 的数量
承诺使用折扣价格 3
按需价格(2 个 vCPU 已使用的预留 + 5 个 vCPU 未使用的预留) 7

共享预留结算

使用共享预留不会产生额外费用,其计费价格与单项目 Compute Engine 预留相同。但是,为共享预留付费的项目会随着消费而变化,因为不同的项目可能有资格获得不同的承诺使用折扣。

共享预留的结算项目和价格的处理方式如下:

  • 结算项目:默认情况下,所有者项目为共享预留付费。但是,如果共享项目的资源已被使用方项目使用,则预留项目将由使用方项目付费。
  • 结算折扣:默认情况下,结算采用按需价格。但是,如果已为正在计费的项目或与该项目关联的计费帐户购买了承诺使用折扣,则将使用承诺使用折扣价格。

后续步骤