批量创建具有 H4D 的 HPC 优化实例

本文档介绍了如何批量创建大量相同且独立的高性能计算 (HPC) 虚拟机 (VM) 实例。这些实例使用 H4D HPC 优化机器类型,并在预留的容量块上运行。

如需详细了解如何批量创建虚拟机,请参阅虚拟机批量创建简介。如需批量创建不使用预留的实例以获得增强的集群管理功能,请改为参阅批量创建虚拟机

如需了解创建紧密耦合的大型 H4D 虚拟机集群的其他方法,请参阅 HPC 集群创建概览页面。

准备工作

  • 选择使用选项:如需批量创建计算实例并启用增强型集群管理功能,您可以选择日历模式下的未来预留或 Spot 虚拟机

    如果您选择使用 Spot 虚拟机,则这些虚拟机可能不会紧凑地共置。此外,Spot 虚拟机可以根据需要被抢占,并且不符合管理一组虚拟机的主机维护事件的条件。

  • 获取容量:每种使用选项的容量获取流程各不相同。

    如需了解详情,请参阅选择使用选项并获取容量

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 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

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    2. Set a default region and zone.

    REST

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

      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

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

所需的角色

如需获得批量创建虚拟机所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含批量创建虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

批量创建虚拟机需要以下权限:

  • 针对项目的 compute.instances.create 权限
  • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
  • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
  • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
  • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
  • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
  • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
  • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
  • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
  • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
  • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
  • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
  • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
  • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
  • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
  • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限

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

概览

使用 H4D 机器类型批量创建 HPC 实例的步骤如下:

  1. 可选:创建 Virtual Private Cloud 网络
  2. 可选:如果您不是在同一块或子块上创建计算实例,请创建布置政策
  3. 批量创建 H4D 实例

可选:创建 Virtual Private Cloud 网络

创建计算实例时,您可以指定 VPC 网络和子网。如果省略此配置,则系统会使用默认网络和子网。

  • 如果您要将 MIG 中的 H4D 实例配置为使用 Cloud RDMA,请完成本部分中的步骤。
  • 如果您不想使用 Cloud RDMA,可以跳过本部分,改为使用默认网络。

如需将 Cloud RDMA 与 H4D 实例搭配使用,您必须至少配置两个网络,每个网络接口 (NIC) 类型对应一个网络:

  • NIC 类型 GVNIC:使用 gve 驱动程序处理 TCP/IP 和网络流量,以实现正常的虚拟机间和虚拟机到网络的通信。
  • NIC 类型 IRDMA:使用 IDPF/iRDMA 驱动程序在实例之间实现 Cloud RDMA 网络通信。

使用 Cloud RDMA 的实例只能有一个 IRDMA 接口。您最多可以添加 8 个额外的 GVNIC 网络接口,使每个实例的总 vNIC 数达到 10 个。

如需设置要与实例搭配使用的 Falcon VPC 网络,您可以按照文档中的说明操作,也可以使用提供的脚本。

说明指南

如需创建网络,您可以按照以下说明操作:

脚本

您最多可以为每个实例创建 9 个 gVNIC 网络接口和 1 个 IRDMA 网络接口。每个网络接口都必须连接到单独的网络。如需创建网络,您可以使用以下脚本,该脚本会为 gVNIC 创建两个网络并为 IRDMA 创建一个网络。

  1. 可选:在运行脚本之前,列出 Falcon VPC 网络配置文件,以验证是否有可用的配置文件。
      gcloud compute network-profiles list
      
  2. 复制以下代码,然后在 Linux shell 窗口中运行该代码。

      #!/bin/bash
      # Set the number of GVNIC interfaces to create. You can create up to 9.
      NUM_GVNIC=NUMBER_OF_GVNIC
    
      # Create regular VPC networks and subnets for the GVNIC interfaces
        for N in $(seq 0 $(($NUM_GVNIC - 1))); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
              --subnet-mode=custom
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --region=REGION \
              --range=10.$N.0.0/16
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --action=ALLOW \
              --rules=tcp:0-65535,udp:0-65535,icmp \
              --source-ranges=10.0.0.0/8
      done
    
      # Create SSH firewall rules
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
      # Optional: Create a firewall rule for the external IP address for the
      #  first GVNIC network interface
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
      # Create a Falcon VPC network for the Cloud RDMA network interface
      gcloud compute networks create RDMA_NAME_PREFIX-irdma \
          --network-profile=ZONE-vpc-falcon \
          --subnet-mode custom
    
      # Create a subnet in the Falcon VPC network
      gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
          --network=RDMA_NAME_PREFIX-irdma \
          --region=REGION \
          --range=10.2.0.0/16  # offset to avoid overlap with GVNIC subnet ranges
      

    替换以下内容:

    • NUMBER_OF_GVNIC:要创建的 GVNIC 接口的数量。 指定一个 1 到 9 之间的数字。
    • GVNIC_NAME_PREFIX:用于使用 GVNIC NIC 类型的常规 VPC 网络和子网的名称前缀。
    • REGION:要在其中创建网络的区域。此区域必须与创建 Falcon VPC 网络时为 --network-profile 标志指定的可用区对应。 例如,如果您将可用区指定为 europe-west4-b,则区域为 europe-west4
    • IP_RANGE:VPC 网络外部用于 SSH 防火墙规则的 IP 地址范围。 最佳实践是指定您需要允许访问的特定来源 IP 地址范围,而不是所有 IPv4 或 IPv6 来源。 请勿使用 0.0.0.0/0::/0 作为来源范围,因为这会允许来自所有 IPv4 或 IPv6 来源(包括 Google Cloud外部的来源)的流量。
    • RDMA_NAME_PREFIX:用于使用 IRDMA NIC 类型的 VPC 网络和子网的名称前缀。
    • ZONE:您要在其中创建网络和计算实例的可用区。请使用 us-central1-aeurope-west4-b
  3. 可选:如需验证 VPC 网络资源是否已成功创建,请在 Google Cloud 控制台中检查网络设置:

    1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

      进入 VPC 网络页面

    2. 在列表中搜索您在上一步中创建的网络。
    3. 如需查看子网、防火墙规则和其他网络设置,请点击网络的名称。

可选:创建布置政策

您可以通过创建紧凑布置政策来指定虚拟机布置。当您将紧凑布置政策应用于虚拟机时,Compute Engine 会尽力尝试创建尽可能彼此靠近的虚拟机。如果您的应用对延迟时间敏感,并且您希望虚拟机彼此靠近(紧凑性最大),请在创建紧凑布置政策时指定 maxDistance 字段(预览版)。较低的 maxDistance 值可确保虚拟机布置更靠近,但也会增加无法创建某些虚拟机的几率。

如需创建紧凑布置政策,请选择以下选项之一:

gcloud

如需创建紧凑布置政策,请使用 gcloud beta compute resource-policies create group-placement 命令

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --max-distance=MAX_DISTANCE \
    --region=REGION

替换以下内容:

  • POLICY_NAME:紧凑布置政策的名称。
  • MAX_DISTANCE:虚拟机的最大距离配置。该值必须为 3(用于将虚拟机布置在相邻的块中)或 2(用于将虚拟机布置在同一块中)。如需了解每种机器系列支持的每个 maxDistance 的虚拟机数量上限,请参阅 Compute Engine 文档中的紧凑布置政策简介
  • REGION:要用于创建紧凑布置政策的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅可用区域和可用区

REST

如需创建紧凑布置政策,请向 Beta 版 resourcePolicies.insert 方法发出 POST 请求。 在请求正文中,添加设置为 COLLOCATEDcollocation 字段和 maxDistance 字段。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "maxDistance": MAX_DISTANCE
    }
  }

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • POLICY_NAME:紧凑布置政策的名称。
  • MAX_DISTANCE:虚拟机的最大距离配置。该值必须为 3(用于将虚拟机布置在相邻的块中)或 2(用于将虚拟机布置在同一块中)。如需了解每种机器系列支持的每个 maxDistance 的虚拟机数量上限,请参阅 Compute Engine 文档中的紧凑布置政策简介
  • REGION:要用于创建紧凑布置政策的区域。 指定提供您要使用的机器类型的区域。 如需了解区域,请参阅可用区域和可用区

批量创建虚拟机实例

本部分中的说明介绍了如何批量创建 H4D 虚拟机。

在创建具有 Cloud RDMA 的 H4D 实例之前,请查看以下限制:

  • 对于具有 Cloud RDMA 网络接口的实例,您无法在主机维护事件期间使用实时迁移。您必须将实例配置为在维护事件期间终止。
  • gVNIC 网络接口只能有一个 IPv6 地址(内部或外部),但不能同时具有这两者。
  • 您只能将 IPv4 地址与 IRDMA 网络接口和 Falcon VPC 网络搭配使用。

gcloud

如需批量创建虚拟机,请使用 gcloud compute instances create 命令

您需要指定的参数取决于您为此部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

首先运行以下 gcloud compute instances create 命令

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --instance-termination=action=DELETE \
       --maintenance-policy=TERMINATE \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE
   

请完成以下步骤:

  1. 替换以下内容:

    • NAME_PATTERN:实例的名称格式。 例如,将 vm-# 用于名称模式会生成名称为 vm-1vm-2 等依次递增的实例,数量最多为 --count 标志指定的数量。
    • COUNT:要创建的实例数量。
    • MACHINE_TYPE:用于实例的机器类型。 使用 H4D 机器类型之一,例如 h4d-highmem-192-lssd
    • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列,例如 rocky-linux-9-optimized-gcp

      如需查看受支持的操作系统映像列表,请参阅受支持的操作系统。选择支持 IRDMA 接口的操作系统映像版本。

    • IMAGE_PROJECT:操作系统映像的项目 ID,例如 rocky-linux-cloud
    • REGION:指定提供您要使用的机器类型的区域,例如 europe-west4。如需了解可用区域,请参阅可用区域和可用区
    • DISK_SIZE(可选):启动磁盘的大小(以 GiB 为单位)。该值必须是整数。
  2. 可选:如果您选择使用紧凑布置政策,请添加 --resource-policies 标志:

             --resource-policies=POLICY_NAME
             

    POLICY_NAME 替换为紧凑布置政策的名称。

  3. 如需指定预留,请执行以下操作之一:

    • 如果您使用的是布置政策,或者虚拟机可以布置在预留块中的任何位置,请向命令添加以下标志:

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=RESERVATION_NAME \
                 

      RESERVATION_NAME 替换为预留的名称,例如 h4d-highmem-exfr-prod

    • 如果您未使用紧凑布置政策,但希望将实例布置在特定块中,请向命令添加以下标志:

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=<RESERVATION_BLOCK_NAME \
                 

      RESERVATION_BLOCK_NAME 替换为预留中的某个块的名称,例如 h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1

    如需查看预留名称或可用预留块,请参阅查看容量

  4. 可选:如需将实例配置为使用 Cloud RDMA,请向命令添加类似于以下内容的标志。此示例配置了两个 GVNIC 网络接口和一个 IRDMA 网络接口:

            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-0, \
                subnet=GVNIC_NAME_PREFIX-sub-0, \
                stack-type=STACK_TYPE, \
                address=EXTERNAL_IPV4_ADDRESS \
            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-1, \
                subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
            --network-interface=nic-type=IRDMA, \
                network=RDMA_NAME_PREFIX-irdma, \
                subnet=RDMA_NAME_PREFIX-irdma-sub, \
                stack-type=IPV4_ONLY, no-address \
            

    替换以下内容:

    • GVNIC_NAME_PREFIX:您在为 GVNIC 接口创建 VPC 网络和子网时使用的名称前缀。

      对于第一个 GVNIC 网络接口,您可以省略 networksubnet 标志,改为使用 default 网络。

    • STACK_TYPE(可选):GVNIC 网络接口的栈类型。STACK_TYPE 必须是 IPV4_ONLYIPV4_IPV6 中的一个。默认值为 IPV4_ONLY
    • EXTERNAL_IPV4_ADDRESS(可选):要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址。 执行以下任一操作:
      • 指定子网中的有效 IPv4 地址。
      • 如果您不希望网络接口具有外部 IP 地址,请改用 no-address 标志。
      • 如果您希望接口接收临时外部 IP 地址,请指定 address=''

      如需指定外部 IPv6 地址,请改用 --external-ipv6-address 标志。

    • RDMA_NAME_PREFIX:您在为 IRDMA 接口创建 VPC 网络和子网时使用的名称前缀。
  5. 可选:根据需要添加其他标志,以自定义其余的实例属性。
  6. 运行以上命令。

Spot

首先运行以下 gcloud compute instances create 命令

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE \
       --provisioning-model=SPOT \
       --instance-termination=action=TERMINATION_ACTION
   

请完成以下步骤:

  1. 替换以下内容:

    • NAME_PATTERN:实例的名称格式。 例如,将 vm-# 用于名称模式会生成名称为 vm-1vm-2 等依次递增的实例,数量最多为 --count 标志指定的数量。
    • COUNT:要创建的实例数量。
    • MACHINE_TYPE:用于实例的机器类型。 使用 H4D 机器类型之一,例如 h4d-highmem-192-lssd
    • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列,例如 rocky-linux-9-optimized-gcp

      如需查看受支持的操作系统映像列表,请参阅受支持的操作系统。选择支持 IRDMA 接口的操作系统映像版本。

    • IMAGE_PROJECT:操作系统映像的项目 ID,例如 rocky-linux-cloud
    • REGION:指定提供您要使用的机器类型的区域,例如 europe-west4。如需了解可用区域,请参阅可用区域和可用区
    • DISK_SIZE(可选):启动磁盘的大小(以 GiB 为单位)。该值必须是整数。
    • TERMINATION_ACTION:当 Compute Engine 抢占实例时执行的操作(STOP [默认] 或 DELETE)。

  2. 可选:如果您选择使用紧凑布置政策,请向命令添加以下标志:

          --resource-policies=POLICY_NAME \
          

    POLICY_NAME 替换为紧凑布置政策的名称。

  3. 可选:如需将实例配置为使用 Cloud RDMA,请向命令添加类似于以下内容的标志。此示例配置了两个 GVNIC 网络接口和一个 IRDMA 网络接口:

          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-0, \
              subnet=GVNIC_NAME_PREFIX-sub-0, \
              stack-type=STACK_TYPE, \
              address=EXTERNAL_IPV4_ADDRESS \
          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-1, \
              subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
          --network-interface=nic-type=IRDMA, \
              network=RDMA_NAME_PREFIX-irdma, \
              subnet=RDMA_NAME_PREFIX-irdma-sub, \
              stack-type=IPV4_ONLY, no-address \
          

    替换以下内容:

    • GVNIC_NAME_PREFIX:您在为 GVNIC 接口创建 VPC 网络和子网时使用的名称前缀。

      对于第一个 GVNIC 网络接口,您可以省略 networksubnet 标志,改为使用 default 网络。

    • STACK_TYPE(可选):GVNIC 网络接口的栈类型。STACK_TYPE 必须是 IPV4_ONLYIPV4_IPV6 中的一个。默认值为 IPV4_ONLY
    • EXTERNAL_IPV4_ADDRESS(可选):要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址。 执行以下任一操作:
      • 指定子网中的有效 IPv4 地址。
      • 如果您不希望网络接口具有外部 IP 地址,请改用 no-address 标志。
      • 如果您希望接口接收临时外部 IP 地址,请指定 address=''

      如需指定外部 IPv6 地址,请改用 --external-ipv6-address 标志。

    • RDMA_NAME_PREFIX:您在为 IRDMA 接口创建 VPC 网络和子网时使用的名称前缀。
  4. 可选:根据需要添加其他标志,以自定义其余的实例属性。
  5. 运行以上命令。

REST

如需批量创建虚拟机实例,请向 instances.bulkInsert 方法发出 POST 请求

您需要指定的参数取决于您为此部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

首先,向 instances.bulkInsert 方法发送以下 POST 请求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"RESERVATION_BOUND",
            "instanceTerminationAction":"DELETE",
            "onHostMaintenance": "TERMINATE",
            "automaticRestart":true
        }
      }
    }
    

请完成以下步骤:

  1. 替换以下内容:

    • PROJECT_ID:您要在其中创建实例的项目的 ID。
    • ZONE:指定提供您要使用的机器类型的可用区。如果您使用的是紧凑布置政策,请使用与该政策位于同一区域的可用区。如需了解提供 H4D 机器类型的区域,请参阅可用区域和可用区
    • NAME_PATTERN:实例的名称格式。 例如,将 vm-# 用于名称模式会生成名称为 vm-1vm-2 等依次递增的实例,数量最多为 count 字段指定的数量。
    • COUNT:要创建的实例数量。
    • MACHINE_TYPE:用于实例的机器类型。 使用 H4D 机器类型之一,例如 h4d-highmem-192-lssd
    • DISK_SIZE:启动磁盘的大小(以 GiB 为单位)。
    • IMAGE_PROJECT:操作系统映像的项目 ID,例如 debian-cloud
    • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列,例如 rocky-linux-9-optimized-gcp。 如需查看受支持的操作系统映像列表,请参阅受支持的操作系统。选择支持 IRDMA 接口的操作系统映像版本。
  2. 可选:如果您选择使用紧凑布置政策,请在请求正文中添加 resourcePolicies 参数,作为 "instanceProperties" 参数的一部分。

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ],
              

    POLICY_NAME 替换为紧凑布置政策的名称。

  3. 如需指定预留,请执行以下操作之一:

    • 如果您使用的是布置政策,或者虚拟机可以布置在预留块中的任何位置,请将以下内容添加到请求正文中,作为 "instanceProperties" 参数的一部分:

                 "reservationAffinity":{
                   "consumeReservationType":"SPECIFIC_RESERVATION",
                   "key":"compute.googleapis.com/reservation-name",
                   "values":[
                     "RESERVATION_NAME"
                   ],
                 },
                 

      RESERVATION_NAME 替换为预留的名称,例如 h4d-highmem-exfr-prod

    • 如果您未使用紧凑布置政策,或者希望将实例布置在特定块中,请将以下内容作为 "instanceProperties" 参数的一部分添加到请求正文中:

                  "reservationAffinity":{
                    "consumeReservationType":"SPECIFIC_RESERVATION",
                    "key":"compute.googleapis.com/reservation-name",
                    "values":[
                      "RESERVATION_BLOCK_NAME"
                    ],
                  },
                 

      RESERVATION_BLOCK_NAME 替换为预留中的某个块的名称,例如 h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1

    如需查看预留名称或可用预留块,请参阅查看容量

  4. 如果您想将实例配置为使用 Cloud RDMA,请在请求正文中添加一个类似于以下内容的参数块,作为 "instanceProperties" 参数的一部分。此示例配置了两个 GVNIC 网络接口和一个 IRDMA 网络接口:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

    替换以下内容:

    • GVNIC_NAME_PREFIX:您在为 GVNIC 接口创建 VPC 网络和子网时使用的名称前缀。

      对于 GVNIC 网络接口,您可以省略 networksubnetwork 字段,改为使用 default 网络。

    • EXTERNAL_IPV4_ADDRESS(可选):要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址
    • RDMA_NAME_PREFIX:您在为 IRDMA 接口创建 VPC 网络和子网时使用的名称前缀。
  5. 可选:根据需要自定义其余的实例属性。
  6. 提交请求。

Spot

首先,向 instances.bulkInsert 方法发送以下 POST 请求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"SPOT",
            "instanceTerminationAction":"TERMINATION_ACTION"
        }
      }
    }
    

请完成以下步骤:

  1. 替换以下内容:

    • PROJECT_ID:您要在其中创建实例的项目的 ID。
    • ZONE:指定提供您要使用的机器类型的可用区。如果您使用的是紧凑布置政策,请使用与该政策位于同一区域的可用区。如需了解提供 H4D 机器类型的区域,请参阅可用区域和可用区
    • NAME_PATTERN:实例的名称格式。 例如,将 vm-# 用于名称模式会生成名称为 vm-1vm-2 等依次递增的实例,数量最多为 count 字段指定的数量。
    • COUNT:要创建的实例数量。
    • MACHINE_TYPE:用于实例的机器类型。 使用 H4D 机器类型之一,例如 h4d-highmem-192-lssd
    • DISK_SIZE:启动磁盘的大小(以 GiB 为单位)。
    • IMAGE_PROJECT:操作系统映像的项目 ID,例如 debian-cloud
    • IMAGE_FAMILY:您要使用的操作系统映像所属的映像系列,例如 rocky-linux-9-optimized-gcp。 如需查看受支持的操作系统映像列表,请参阅受支持的操作系统。选择支持 IRDMA 接口的操作系统映像版本。
    • TERMINATION_ACTION:当 Compute Engine 抢占实例时执行的操作(STOP [默认] 或 DELETE)。

  2. 可选:如果您选择使用紧凑布置政策,请将 resourcePolicies 参数作为 "instanceProperties" 参数的一部分包含在内。

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ]
              
  3. 如果您想将实例配置为使用 Cloud RDMA,请在请求正文中添加一个类似于以下内容的参数块,作为 "instanceProperties" 参数的一部分。此示例配置了两个 GVNIC 网络接口和一个 IRDMA 网络接口:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

    替换以下内容:

    • GVNIC_NAME_PREFIX:您在为 GVNIC 接口创建 VPC 网络和子网时使用的名称前缀。

      对于 GVNIC 网络接口,您可以省略 networksubnetwork 字段,改为使用 default 网络。

    • EXTERNAL_IPV4_ADDRESS(可选):要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址
    • RDMA_NAME_PREFIX:您在为 IRDMA 接口创建 VPC 网络和子网时使用的名称前缀。
  4. 可选:根据需要自定义其余的实例属性。
  5. 提交请求。

后续步骤