查看 Spot 虚拟机的抢占率和价格

本文档介绍如何查看 Spot 虚拟机的抢占率和价格。

在创建 Spot 虚拟机之前,您可以查看 希望 Spot 虚拟机使用的机器类型的 历史抢占率和当前抢占率以及价格。查看这些数据有助于您比较不同机器类型和位置的稳定性和费用,从而找到最适合您的工作负载和预算的选项。

如果您想查看有关 Spot 虚拟机的实时数据,请参阅以下内容:

限制

您无法查看挂接了 GPU 的 N1 机器类型、自定义机器类型或 TPU 的抢占率和价格趋势。

了解 Spot 虚拟机的抢占率和价格

当您向 advice.capacityHistory API 发送请求时,输出会显示以下指标。通过了解这些指标,您可以查看和比较不同机器类型和可用区的抢占率趋势和价格趋势,然后在创建 Spot 虚拟机时使用这些数据来做出明智的决策。

历史抢占率

历史抢占率 (preemptionHistory) 显示了过去 30 天内您指定的机器类型和可用区的每日抢占率。 Compute Engine 在美国太平洋时间 (PT) 午夜设置此费率的数据边界。当天的抢占率可能会全天发生变化。

Compute Engine 通过将一天内被抢占的 Spot 虚拟机数量除以当天停止运行的 Spot 虚拟机数量来计算抢占率,如以下 公式所示。 Google Cloud 这些停止包括用户或程序化操作(例如运行时有限)暂停、停止或删除 Spot 虚拟机,或者 Compute Engine 抢占它们。

$${preemptionHistory}=\frac{\text{Total preempted Spot VMs in a day}}{\text{Total Spot VMs that stopped running in a day}}$$

抢占率的范围为 0.001.00。例如,费率为 0.50 表示,在当天停止运行的具有特定机器类型 且位于特定可用区的 Spot 虚拟机中 Google Cloud, Compute Engine 抢占了 50% 的虚拟机。

历史价格

历史价格 (priceHistory) 显示了过去一年内您指定的机器类型和区域的价格变化(以美元为单位)。每个条目都表示该价格处于有效状态的时间间隔内的每小时价格。 Compute Engine 在 PT 午夜 (00:00) 设置价格变化。如果数据不可用,则时间间隔会有间隙。

准备工作

所需的角色

如需获得查看 Spot 虚拟机的抢占率和价格所需的权限,请让管理员向您授予项目的Compute Viewer (roles/compute.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含 查看 Spot 虚拟机的抢占率和价格所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需查看 Spot 虚拟机的抢占率和价格,需要具备以下权限:

  • 如需查看 Spot 虚拟机的抢占率和价格: compute.advice.capacityHistory 针对项目的

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

查看 Spot 虚拟机的抢占率和价格

如需查看 Spot 虚拟机的历史抢占率和价格,您必须指定要创建虚拟机的机器类型以及区域或可用区。根据结果,您可以创建 Spot 虚拟机,也可以查看其他 位置或不同机器的抢占率和价格。

如需查看 Spot 虚拟机的抢占率和价格,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,前往 容量顾问 页面。

    前往“容量顾问”

  2. 过滤条件 窗格中,完成以下步骤:

    1. 位置 部分的区域 列表中,选择要在其中创建 Spot 虚拟机的区域。

    2. 机器规格 部分中,指定要创建的机器配置和 Spot 虚拟机数量:

      1. 机器系列 列表中,选择一个 机器系列

      2. 系列 列表中,最多选择三个机器系列。

      3. 机器类型 列表中,最多选择五种机器类型。

      4. 虚拟机数量 字段中,输入 Spot 虚拟机的数量。

      5. 可选:默认情况下,系统会隐藏资源有限的可用区。如需查看这些可用区,请取消选中隐藏可用性受限的区域 复选框。

    3. 点击 搜索

  3. 根据您的使用场景,选择以下选项之一:

    • 如需查看特定位置的价格、可用性和抢占率,请完成以下步骤:

      1. 预配模型的结果 窗格中,点击地图 标签页。

      2. 在地图上,点击一个区域。系统会显示一个窗格,其中显示了该区域的价格和可用区抢占率。

    • 如需比较不同机器类型的历史价格和抢占率,请完成以下步骤:

      1. 预配模型的结果 窗格中,点击列表 标签页。

      2. 选择包含要比较的机器类型的两行或多行。

      3. 点击 比较价格 。系统会显示机器类型比较 窗格。

      4. 如需查看价格数据或抢占率,请点击价格抢占 标签页。

      5. 可选:如需更改要比较的机器类型,请执行以下操作之一:

        • 如需添加机器类型,请点击添加机器类型,然后 选择要添加的机器类型。

        • 如需移除机器类型,请在要移除的机器类型的操作 列中,点击 移除行

gcloud

如需查看 Spot 虚拟机的抢占率和价格,请使用 gcloud beta compute advice capacity-history 命令

根据您的使用场景,添加以下标志:

  • 如需查看某个区域的抢占率和价格,请添加 --types=PREEMPTION,PRICE--region 标志:

    gcloud beta compute advice capacity-history \
        --provisioning-model=SPOT \
        --machine-type=MACHINE_TYPE \
        --types=PREEMPTION,PRICE \
        --region=REGION
    
  • 如需查看某个可用区的抢占率,请添加 --types=PREEMPTION--zone 标志:

    gcloud beta compute advice capacity-history \
        --provisioning-model=SPOT \
        --machine-type=MACHINE_TYPE \
        --types=PREEMPTION \
        --zone=ZONE
    

替换以下内容:

  • MACHINE_TYPE:您希望 Spot 虚拟机使用的机器类型。

  • REGION:您要在其中创建 Spot 虚拟机的区域。

  • ZONE:您要在其中创建 Spot 虚拟机的可用区。

输出类似于以下内容:

location: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
machineType: n2-standard-32
preemptionHistory:
- interval:
    endTime: "2026-04-21T07:00:00Z"
    startTime: "2026-04-20T07:00:00Z"
  preemptionRate: 0.52
- interval:
    endTime: "2026-04-22T07:00:00Z"
    startTime: "2026-04-21T07:00:00Z"
  preemptionRate: 0.64
...
priceHistory:
- interval:
    endTime: "2026-05-11T07:00:00Z"
    startTime: "2026-04-27T07:00:00Z"
  listPrice:
    currencyCode: "USD"
    nanos: "478720000"
- interval:
    endTime: "2026-05-12T07:00:00Z"
    startTime: "2026-05-11T07:00:00Z"
  listPrice:
    currencyCode: "USD"
    nanos: "502720000"
...

REST

如需查看 Spot 虚拟机的抢占率和价格,请向 Beta 版 advice.capacityHistory 方法发出 POST请求。

根据您的使用场景,发出以下请求之一:

  • 如需查看某个区域的抢占率和价格,请发出以下请求:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/capacityHistory
    
    {
      "types": [
        "PREEMPTION",
        "PRICE"
      ],
      "instanceProperties": {
        "scheduling": {
          "provisioningModel": "SPOT"
        },
        "machineType": "MACHINE_TYPE"
      }
    }
    
  • 如需查看某个可用区的抢占率,请发出以下请求:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/capacityHistory
    
    {
      "types": [
        "PREEMPTION"
      ],
      "instanceProperties": {
        "scheduling": {
          "provisioningModel": "SPOT"
        },
        "machineType": "MACHINE_TYPE"
      },
      "locationPolicy": {
        "location": "zones/ZONE"
      }
    }
    

替换以下内容:

  • PROJECT_ID:您的项目的 ID。

  • REGION:您要在其中创建 Spot 虚拟机的区域。

  • MACHINE_TYPE:您希望 Spot 虚拟机使用的机器类型。

  • ZONE:您要在其中创建 Spot 虚拟机的可用区,该可用区必须位于 REGION 内。

输出类似于以下内容:

{
  "machineType": "n2-standard-32",
  "location": "https://compute.googleapis.com/compute/beta/projects/example-project/regions/us-central1",
  "preemptionHistory": [
    {
      "interval": {
        "startTime": "2026-04-20T07:00:00Z",
        "endTime": "2026-04-21T07:00:00Z"
      },
      "preemptionRate": 0.52
    },
    {
      "interval": {
        "startTime": "2026-04-21T07:00:00Z",
        "endTime": "2026-04-22T07:00:00Z"
      },
      "preemptionRate": 0.64
    },
    ...
  ],
  "priceHistory": [
    {
      "interval": {
        "startTime": "2026-04-27T07:00:00Z",
        "endTime": "2026-05-11T07:00:00Z"
      },
      "listPrice": {
        "currencyCode": "USD",
        "nanos": "478720000"
      }
    },
    {
      "interval": {
        "startTime": "2026-05-11T07:00:00Z",
        "endTime": "2026-05-12T07:00:00Z"
      },
      "listPrice": {
        "currencyCode": "USD",
        "nanos": "502720000"
      }
    },
    ...
  ]
}

后续步骤