批量创建使用 RDMA 的 HPC 优化实例


本教程介绍了如何创建大量相同且独立的高性能计算 (HPC) 虚拟机 (VM) 实例。实例使用 H4D HPC 优化型机器类型,并在预留的容量上运行。本教程还介绍了如何配置 H4D 实例以使用 Cloud RDMA。

本教程适用于 HPC 工程师、平台管理员和运维人员,以及对创建互连的 HPC 实例集群感兴趣的数据和 MPI 专家。生成的实例不使用编排器进行实例管理或作业调度。

目标

  1. 为部署预留容量块。
  2. 可选:如果您不是在同一块或子块上创建虚拟机,请创建布置政策。
  3. 创建 Virtual Private Cloud 网络。
  4. 批量创建启用了 RDMA 的实例。
  5. 清理。

费用

本教程使用 Google Cloud的收费组件,包括:

如需根据您的预计使用量来估算费用,请使用价格计算器

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

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

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the required API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  8. Install the Google Cloud CLI.

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

  10. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the required API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  14. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1,roles/compute.networkAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  15. 为部署预留容量块

    本文档介绍了如何通过让您的客户服务团队为您创建未来预留请求来预留容量块。使用此预留类型可为虚拟机实例的密集部署获取容量。如需大致了解所有消费选项,请参阅:

    此操作可让您预留一定时长的容量块,从您选择的特定日期和时间开始。Google 会根据您的请求创建未来预留请求草稿。在您审核并提交此草稿请求后,如果 Google Cloud 批准了该请求,Compute Engine 会自动创建(自动创建)一个空预留。然后,在您选择的开始时间,Compute Engine 会将您请求的容量预配到自动创建的预留中。然后,您可以使用预留来创建虚拟机 (VM) 实例,直到预留期结束。

    在未来预留请求流程中,Google 会管理预留资源的配额。您无需申请配额。在获批的未来预留的开始时间,如果您缺少预留资源所需的配额,Google 会增加您的配额。

    如需预留容量块,请完成以下步骤:

    1. 请与您的客户支持团队联系,并提供以下信息,以便 Google 创建未来预留请求草稿:

      • 项目编号:您的客户服务团队创建请求且 Compute Engine 预配容量的项目编号。 如需了解如何查找项目编号,请参阅 Resource Manager 文档中的查找项目名称、编号和 ID

      • 机器类型:一种经过 HPC 优化的 H4D 机器类型

      • 总数:要预留的虚拟机总数。您只能预留 2 的倍数的虚拟机。每个块的块大小和虚拟机数量因机器类型和可用性而异。您的客户支持团队可以提供有关您的请求的更多详细信息。

      • 可用区:您要在其中预留容量的可用区。如需查看 H4D 机器系列的可用区域和可用区,请参阅可用区域和可用区,然后在选择机器系列列表中选择 H4D

      • 开始时间:预留期的开始时间。将开始时间的格式设置为 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

      • 结束时间:预留期的结束时间。将其格式设置为 RFC 3339 时间戳。

      • 共享类型:是否只有您的项目可以使用自动创建的预留 (LOCAL),还是其他项目也可以使用该预留 (SPECIFIC_PROJECTS)。

        如需与组织中的其他项目共享预留容量,请执行以下操作:

        1. 如果尚未验证,请验证 Google 创建请求的项目是否允许创建共享预留

        2. 提供要与之共享预留容量的项目的编号。您最多可以指定组织内的 100 个项目。

      • 预留名称:Compute Engine 自动创建的预留的名称,用于交付预留容量。Compute Engine 仅创建明确定向预留

      • 承诺名称:如果预留期为一年或更长时间,您必须购买基于资源的承诺并将其附加到预留资源。您可以购买 1 年期或 3 年期承诺方案。如果您与其他项目共享预留容量,则这些项目只有在使用与预留容量的项目相同的 Cloud Billing 账号时才能获得折扣。如需了解详情,请参阅为基于资源的承诺启用 CUD 共享

    2. Google 会创建未来预留请求草稿,然后您的客户团队会与您联系。

    3. 查看草稿请求。查看预订请求时,请注意以下事项:

      • 您只能在指定的开始日期和时间之后开始使用预留容量。
      • 当达到指定的结束时间时,Compute Engine 会执行以下操作:

        • 删除自动创建的预留。
        • 停止或删除使用相应预留的任何虚拟机。所采取的操作取决于您在创建虚拟机时指定的终止操作
      • 提交预留请求后,您无法更改预留容量是否共享。

      如需查看未来预留请求草稿,请选择以下选项之一:

      控制台

      1. 在 Google Cloud 控制台中,前往预留页面。

        转到“预留”

      2. 点击未来预留标签页。未来预留表格会列出项目中的每个未来预留请求,表格中的每一列会描述一个属性。

      3. 名称列中,点击 Google 为您创建的草稿请求的名称。系统会打开一个显示相应未来预留请求详细信息的页面。

      4. 基本信息部分中,验证请求详细信息(例如日期共享类型)是否正确无误。此外,如果您请求了承诺,请验证是否已指定承诺。

      5. 如果上述任何详情有误,请与您的客户团队联系。

      gcloud

      1. 如需查看项目中的未来预留请求列表,请使用 gcloud beta compute future-reservations list 命令,并将 --filter 标志设置为 PROCUREMENT_STATUS=DRAFTING

        gcloud beta compute future-reservations list --filter=PROCUREMENT_STATUS=DRAFTING
        
      2. 在命令输出中,查找您向客户服务团队提供的名称对应的预留请求。

      3. 如需查看草稿请求的详细信息,请使用 gcloud beta compute future-reservations describe 命令

        gcloud beta compute future-reservations describe FUTURE_RESERVATION_NAME \
            --zone=ZONE
        

        替换以下内容:

        • FUTURE_RESERVATION_NAME:未来预留请求草稿的名称。
        • ZONE:Google 创建请求的可用区。

        输出类似于以下内容:

        autoCreatedReservationsDeleteTime: '2026-02-10T19:20:00Z'
        creationTimestamp: '2025-11-27T11:14:58.305-08:00'
        deploymentType: DENSE
        id: '7979651787097007552'
        kind: compute#futureReservation
        name: example-draft-request
        planningStatus: DRAFT
        reservationName: example-reservation
        schedulingType: INDEPENDENT
        selfLink: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request
        selfLinkWithId: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552
        specificReservationRequired: true
        specificSkuProperties:
          instanceProperties:
            localSsds:
            - diskSizeGb: '375'
              interface: NVME
            ...
          machineType: h4d-highmem-192-lssd
        totalCount: '2'
        status:
          autoCreatedReservations:
          - https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/reservations/example-reservation
          fulfilledCount: '2'
          lockTime: '2026-01-27T19:15:00Z'
          procurementStatus: DRAFTING
        timeWindow:
          endTime: '2026-02-10T19:20:00Z'
          startTime: '2026-01-27T19:20:00Z'
        zone: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b
        
      4. 在命令输出中,验证请求详细信息(例如预订期限和共享类型)是否正确。 此外,如果您购买了承诺,请验证是否已指定承诺。

      5. 如果详细信息不正确,请与您的客户支持团队联系。

      REST

      1. 如需查看项目中的未来预留请求列表,请向 Beta 版 futureReservations.list 方法发出 GET 请求。在请求网址中添加 filter 查询参数并将其设置为 status.procurementStatus=DRAFTING

        GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations?filter=status.procurementStatus=DRAFTING
        

        替换以下内容:

        • PROJECT_ID:Google 在其中创建了未来预留请求草稿的项目的 ID。
        • ZONE:请求所在的可用区。
      2. 在请求输出中,找到您提供给客户支持团队的预订请求名称。

      3. 如需查看草稿请求的详细信息,请向 Beta 版 futureReservations.get 方法发出 GET 请求:

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

        FUTURE_RESERVATION_NAME 替换为未来预留请求草稿的名称。

        输出类似于以下内容:

        {
          "specificSkuProperties": {
            "instanceProperties": {
              "machineType": "h4d-highmem-192-lssd",
              "localSsds": [
                {
                  "diskSizeGb": "375",
                  "interface": "NVME"
                },
                ...
              ]
            },
            "totalCount": "2"
          },
          "kind": "compute#futureReservation",
          "id": "7979651787097007552",
          "creationTimestamp": "2025-11-27T11:14:58.305-08:00",
          "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request",
          "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552",
          "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b",
          "name": "example-draft-request",
          "timeWindow": {
            "startTime": "2026-01-27T19:20:00Z",
            "endTime": "2026-02-10T19:20:00Z"
          },
          "status": {
            "procurementStatus": "DRAFTING",
            "lockTime": "2026-01-27T19:15:00Z"
          },
          "planningStatus": "DRAFT",
          "specificReservationRequired": true,
          "reservationName": "example-reservation",
          "deploymentType": "DENSE",
          "schedulingType": "INDEPENDENT",
          "autoCreatedReservationsDeleteTime": "2026-02-10T19:20:00Z"
        }
        
      4. 在输出中,验证预订时段和共享类型等请求详细信息是否正确。此外,如果您请求了承诺,请验证是否已指定承诺。

      5. 如果详细信息不正确,请与您的客户支持团队联系。

    4. 如果一切正常,请提交预订请求。您必须在请求开始时间之前提交请求。

      如需提交未来预留请求草稿,请选择以下选项之一:

      控制台

      1. 在 Google Cloud 控制台中,前往预留页面。

        转到“预留”

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

      3. 名称列中,点击 Google 为您创建的草稿请求的名称。

      4. 点击提交

      gcloud

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

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

      REST

      如需提交草稿请求以供审核,请向 Beta 版 futureReservations.update 方法发出 PATCH 请求。在请求网址中添加 updateMask 查询参数并将其设置为 planningStatus

      PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=planningStatus
      
      {
        "name": "FUTURE_RESERVATION_NAME",
        "planningStatus": "SUBMITTED"
      }
      
    5. Google Cloud 立即批准您提交的请求。

    6. Compute Engine 会创建包含您请求的资源的空预留。

    7. 如需查看预留,请参阅 AI Hypercomputer 文档中的查看预留容量

    可选:创建布置政策

    如果您希望虚拟机尽可能彼此靠近,请使用放置政策。不过,如果您希望虚拟机位于特定块中,请跳过此步骤,并在批量创建虚拟机期间提供所需块的名称。

    使用 Cloud RDMA 进行通信的实例必须位于单个可用区内,更严格地说,必须位于单个集群网络结构内。您可以创建紧凑布置政策并指定最大距离值,以设置可用区内的最低紧凑度。指定距离上限值时,您可以为紧凑布置政策分配的实例数量有限制,并且该限制会根据您选择的值而变化。

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

    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 可将虚拟机放置在同一块中。我们会尽最大努力放置虚拟机。
    • 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
    • REGION:要用于创建放置政策的区域。指定您要使用的机器类型所在的区域。如需了解可用区域,请参阅可用区域和可用区
    • POLICY_NAME:紧凑布置政策的名称
    • MAX_DISTANCE:虚拟机实例的最大距离配置。指定 3 可将虚拟机放置在相邻的块中,指定 2 可将虚拟机放置在同一块中。我们会尽最大努力放置虚拟机。

    创建虚拟私有云网络

    启用 RDMA 的实例至少需要两个网络接口 (NIC):

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

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

    请查看以下有关为实例配置网络接口的规则:

    • 每个网络接口都必须连接到不同的 Virtual Private Cloud 网络。
    • 如需配置 IRDMA 网络接口,您必须先在与实例相同的区域和可用区中创建采用 Falcon RDMA 网络配置文件的 VPC 网络。
    • 对于 GVNIC 网络接口,如果您没有指定网络或子网,Compute Engine 会使用默认 VPC 网络以及与实例位于同一区域的自动子网。
    • 如果您指定了子网,但未指定网络,Compute Engine 会根据指定的子网推断网络。
    • 如果您指定了网络,则必须指定子网,并且此子网必须属于同一个网络。否则,实例创建将失败。

    如需设置 Falcon Virtual Private Cloud (VPC) 网络以供实例使用,您可以按照文档中的说明操作,也可以使用提供的脚本。

    说明指南

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

    脚本

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

    1. 可选:在运行脚本之前,列出 Falcon VPC 网络配置文件,以验证是否有可用的配置文件。Falcon VPC 网络配置文件并非在所有可用区都可用。

      gcloud beta compute network-profiles list --filter=falcon
      
    2. 复制以下代码,然后在 Linux shell 窗口中运行该代码。

    #!/bin/bash
    
    # Create standard VPC (networks and subnets) for the two GVNIC interfaces
      for N in $(seq 0 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=<var>REGION</var> \
            --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 network for the RDMA over Falcon network interface
    gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
      --network-profile=ZONE-vpc-falcon \
      --subnet-mode custom
    
    # Create a subnet for the RDMA network
    gcloud beta 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
    

    替换以下内容:

    • 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

    批量创建启用了 RDMA 的实例

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

    • 对于具有 Cloud RDMA 网络接口的实例,您无法在主机维护事件期间使用实时迁移。您必须将实例配置为在维护事件期间终止。
    • 您只能将 IPv4 地址与具有 Falcon RDMA 网络配置文件的 RDMA 网络接口和 VPC 网络搭配使用。
    • 您只能使用 H4D 机器系列创建经过 HPC 优化的实例并搭配使用 Cloud RDMA。

    以下步骤展示了如何批量创建启用 RDMA 的实例,其中前两个网络接口配置为 GVNIC 接口,第三个网络接口配置为 IRDMA 网络接口:

    gcloud

    gcloud compute instances create 命令与三个 --network-interface 标志结合使用,其中两个用于 GVNIC 接口,一个用于 IRDMA 接口。如果您选择使用紧凑布置政策,还需添加以下标志:--resource-policies=POLICY_NAME。将 POLICY_NAME 替换为紧凑布置政策的名称。您可以根据需要自定义其余的实例选项。

    gcloud compute instances bulk create \
        --name-pattern=NAME_PATTERN \
        --count=COUNT \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image=project= IMAGE_PROJECT \
        --reservation-affinity=specific \
        --reservation=RESERVATION \
        --provisioning-model=RESERVATION_BOUND \
        --instance-termination=action=DELETE \
        --maintenance-policy=TERMINATE \
        --region=REGION \
        --boot-disk-type=hyperdisk-balanced \
        --boot-disk-size=DISK_SIZE \
        --scopes=cloud-platform \
        --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
    

    替换以下内容:

    • 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
    • RESERVATION:对于此值,您可以指定以下某个值:

      • 如果您使用的是布置政策,或者虚拟机可以放置在预留块中的任何位置,请指定预留名称,例如 h4d-highmem-exfr-prod
      • 如果您希望将实例放置在特定块中,但未使用紧凑布置政策,请使用以下格式指定预留块名称:RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME, for example,h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1。

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

    • REGION:您要使用的机器类型在其中可用的区域,例如 europe-west1。如需了解可用区域,请参阅可用区域和可用区

    • DISK_SIZE(可选):启动磁盘的大小(以 GiB 为单位)。该值必须是整数。

    • 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 网络和子网时使用的名称前缀。

    REST

    如需批量创建启用了 RDMA 的实例,请向 beta instances.bulkInsert 方法发出 POST 请求,并使用以下设置:

    • 添加 networkInterfaces 对象,其中包含至少两个网络配置,一个用于 gVNIC 网络接口,另一个用于 RDMA 网络接口。
    • 如果您选择使用紧凑布置政策,还需将 resourcePolicies 对象添加到请求正文中。
    • 如需在创建实例时使用预留的容量块,请将 provisioningModel 设置为 RESERVATION_BOUND
    • 您可以根据需要自定义其余的实例属性。
    POST https://compute.googleapis.com/compute/beta/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"
          }
        ],
        "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",
          }
        ],
        "reservationAffinity":{
            "consumeReservationType":"SPECIFIC_RESERVATION",
            "key":"compute.googleapis.com/reservation-name",
            "values":[
                "RESERVATION"
            ],
            "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 接口的操作系统映像版本。
      • GVNIC_NAME_PREFIX:您在为 GVNIC 接口创建 VPC 网络和子网时使用的名称前缀

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

      • EXTERNAL_IPV4_ADDRESS(可选):要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址

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

      • RESERVATION:对于此值,您可以指定以下某个值:

        • 如果您使用的是布置政策,或者虚拟机可以放置在预留块中的任何位置,请指定预留名称,例如 h4d-highmem-exfr-prod
        • 如果您希望将实例放置在特定区块中,但未使用紧凑布置政策,请将预留区块名称指定为 RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME, for example,h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1`。

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

    2. 可选:如果您使用的是紧凑布置政策,请将请求正文中的 ... 替换为以下字段:

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

      替换以下内容:

      • PROJECT_ID:紧凑布置政策的项目 ID。
      • REGION:紧凑布置政策的区域。
      • POLICY_NAME:紧凑布置政策的名称。
    3. 提交申请。

    清理

    为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

    删除项目

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    删除资源

    1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

      转到虚拟机实例

    2. 选择包含您在本教程中创建的虚拟机实例的行。

    3. 点击 删除,然后点击删除进行确认。

    4. 如需删除布置政策,请使用 gcloud compute resource-policies delete 命令

      gcloud compute resource-policies delete POLICY_NAME \
          --region=REGION
      

      替换以下内容:

      • POLICY_NAME:放置政策的名称
      • REGION:布置政策所在的区域

    后续步骤