本文档介绍了如何在批量创建虚拟机 (VM) 时指定实例灵活性。进行此规范时,您需要指定适合虚拟机的机器类型列表,然后 Compute Engine 会根据区域中的容量和配额可用性,使用任何指定的机器类型来预配虚拟机。
如需详细了解批量创建的虚拟机的实例灵活性,请参阅批量创建的虚拟机的实例灵活性简介。
准备工作
- 对于您打算创建的虚拟机和任何相关资源,请确保您有足够的配额和所需权限。
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
gcloud
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
- 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 时进行身份验证。
所需的角色
如需获得批量创建虚拟机所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) 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权限
创建具有多个同等偏好机器类型的虚拟机
如果您的工作负载可以在多种不同的机器类型上运行,您可以在单个实例选择中指定所有兼容的机器类型的列表。以下示例展示了如何指定多个偏好程度相同的机器类型。
gcloud
如需批量创建具有单个实例选择的虚拟机,请将
gcloud compute instances bulk create命令与--instance-selection-machine-types标志结合使用。gcloud compute instances bulk create \ --name-pattern=test-bulk-# \ --region=REGION \ --count=COUNT \ --instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8REST
在 Compute Engine API 中,向
regionInstances.bulkInsert方法发出POST请求。 在请求正文中,添加instanceFlexibilityPolicy,其中包含一个列出机器类型的instanceSelections条目。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { "count": COUNT, "namePattern": "test-bulk-#", "instanceFlexibilityPolicy": { "instanceSelections": { "selection-1": { "machineTypes": [ "c3-standard-8", "n2-standard-8", "c2-standard-8" ] } } } }替换以下内容:
COUNT:要创建的虚拟机数量。PROJECT_ID:您的项目 ID。REGION:要在其中创建虚拟机的区域。
创建具有多个按偏好程度排序的机器类型的虚拟机
如果您希望 Compute Engine 按特定顺序选择机器类型,可以配置多个实例选择。每个实例选择都包含一个机器类型列表和一个排名(一个用于定义机器类型偏好级别的整数)。排名越低,偏好程度越高。 Compute Engine 会尝试使用偏好级别更高(排名更低)的机器类型创建虚拟机。如果这些机器类型不可用,Compute Engine 会使用偏好级别较低(排名较高)的机器类型。
以下示例展示了如何指定具有排名的多个实例选择。
gcloud
如需批量创建具有多个实例选择的虚拟机,请使用
gcloud compute instances bulk create命令并多次指定--instance-selection标志。gcloud beta compute instances bulk create \ --name-pattern=test-bulk-# \ --region=REGION \ --count=COUNT \ --instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16, machine-type=c2-standard-16" \ --instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8, machine-type=c2-standard-8"REST
在 Compute Engine API 中,向
regionInstances.bulkInsert方法发出POST请求。 在请求正文中,添加instanceFlexibilityPolicy并在instanceSelections中指定多个条目,每个条目都包含一个机器类型列表和一个rank。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { "count": COUNT, "namePattern": "test-bulk-#", "instanceFlexibilityPolicy": { "instanceSelections": { "most-preferred": { "machineTypes": [ "c3-standard-16", "c2-standard-16" ], "rank": 1 }, "least-preferred": { "machineTypes": [ "n2-standard-16", "c3-standard-8", "n2-standard-8", "c2-standard-8" ], "rank": 2 } } } }替换以下内容:
COUNT:要创建的虚拟机数量。PROJECT_ID:您的项目 ID。REGION:要在其中创建虚拟机的区域。
在实例选择中指定磁盘替换项
默认情况下,通过批量请求创建的虚拟机会使用
instanceProperties中的磁盘配置。不过,您可以在实例选择中指定磁盘配置。如果您在实例选择中指定了磁盘,那么对于使用该实例选择的虚拟机,该磁盘配置会替换instanceProperties中的磁盘配置。以下示例展示了如何在实例选择中指定磁盘。
REST
在 Compute Engine API 中,向
regionInstances.bulkInsert方法发出POST请求。 在请求正文中,添加instanceFlexibilityPolicy,并针对任何instanceSelections条目添加disks字段以替换instanceProperties.disks。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { "count": COUNT, "namePattern": "test-bulk-#", "instanceFlexibilityPolicy": { "instanceSelections": { "selection-1": { "machineTypes": [ "n2-standard-8", "c2-standard-8" ], "disks": [ { "type": "PERSISTENT", "initializeParams": { "diskType": "pd-ssd", "diskSizeGb": 50, "sourceImage": "IMAGE_URL" }, "boot": true }, { "type": "SCRATCH", "initializeParams": { "diskType": "local-ssd" } } ] }, "selection-2": { "machineTypes": [ "c3-standard-8" ], "disks": [ { "type": "PERSISTENT", "initializeParams": { "diskType": "hyperdisk-balanced", "diskSizeGb": 50, "sourceImage": "IMAGE_URL" }, "boot": true }, { "type": "PERSISTENT", "initializeParams": { "diskType": "hyperdisk-balanced", "diskSizeGb": 128, "sourceImage": "IMAGE_URL" } } ] } } } }替换以下内容:
COUNT:要创建的虚拟机数量。IMAGE_URL:启动磁盘映像的网址。PROJECT_ID:您的项目 ID。REGION:要在其中创建虚拟机的区域。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2026-02-11。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2026-02-11。"],[],[]] -