本文档介绍如何在 MIG 中使用批量模式,同时创建所需的所有虚拟机 (VM) 实例。一次性创建实例可确保 MIG 仅在所有必要资源都可用时创建实例。
如需了解批量模式的工作原理,请参阅 关于在 MIG 中批量创建实例。
创建实例模板
MIG 中的批量模式仅支持指定了“受预留约束”或“灵活启动”预配模型的实例模板。如需使用批量模式,请使用以下部分中所述的其中一种预配模型创建实例模板。如需详细了解预配模型,请参阅 Compute Engine 实例预配模型。
使用“受预留约束”预配模型
如需创建实例模板,请选择以下选项之一:
控制台
在 Cloud de Confiance 控制台中,转到实例模板页面。
点击创建实例模板。 系统会打开创建实例模板页面。
在名称字段中,输入实例模板的名称。
在位置部分,选择以下选项之一:
如需创建区域级实例模板,请选择区域级(推荐),然后选择要创建模板的区域。
如需创建全球实例模板,请选择全球 。
在机器配置 部分中,指定机器类型。
在预配模型 部分中,完成以下步骤:
展开虚拟机预配模型高级设置 。
在虚拟机终止时列表中,选择删除。
可选:如需更改启动磁盘类型或映像的默认值,请在启动磁盘部分中,点击更改。然后,按照提示更改启动磁盘。
展开高级选项部分,然后执行以下操作:
展开管理部分。
在预留部分中,选择选择预留,然后点击选择预留。 在随即显示的窗格中,按照提示选择您要使用的预留。
点击创建。
gcloud
如需创建实例模板,请将
instance-templates create 命令与以下标志设置结合使用:
将
--instance-termination-action标志设置为DELETE。将
--maintenance-policy标志设置为TERMINATE。将
--provisioning-model标志设置为RESERVATION_BOUND。将
--reservation-affinity标志设置为specific。--reservation标志。
以下示例命令会创建一个区域级实例模板。如果您要创建全球实例模板,请使用相同的命令,但不使用 --instance-template-region 标志。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-termination-action=DELETE \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--provisioning-model=RESERVATION_BOUND \
--reservation-affinity=specific \
--reservation=RESERVATION_URL
替换以下内容:
INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。IMAGE_PROJECT:映像所属的映像项目;例如debian-cloud。如需详细了解支持的映像项目,请参阅公共映像。IMAGE_FAMILY:一個 映像系列。指定映像系列以使用最新的未弃用操作系统映像。例如,如果您指定debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅 映像系列最佳实践。REGION:要在其中创建实例模板的区域。MACHINE_TYPE:您要使用的预留中指定的机器类型。RESERVATION_URL:为您要使用的日历模式下的未来预留自动创建的预留的网址。请指定以下某个值:如果自动创建的预留存在于您的项目中:
RESERVATION_NAME。如果自动创建的预留存在于其他项目中:
projects/PROJECT_ID/reservations/RESERVATION_NAME。
REST
如需创建实例模板,请向以下方法之一发出 POST 请求:
如需创建区域级实例模板:
regionInstanceTemplates.insert方法如需创建全球实例模板:
instanceTemplates.insert方法
在请求正文中,添加以下字段:
设置为
SPECIFIC_RESERVATION的reservationAffinity.consumeReservationType字段。设置为
compute.googleapis.com/reservation-name的reservationAffinity.key字段。设置为自动创建的预留的网址的
reservationAffinity.values字段。设置为
DELETE的scheduling.instanceTerminationAction字段。设置为
TERMINATE的scheduling.onHostMaintenance字段。设置为
RESERVATION_BOUND的scheduling.provisioningModel字段。
例如,如需创建区域级实例模板,请发出如下请求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_URL"
]
},
"scheduling": {
"instanceTerminationAction": "DELETE",
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND"
}
}
}
替换以下内容:
PROJECT_ID:要创建实例模板的项目 ID。REGION:要在其中创建实例模板的区域。INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。IMAGE_PROJECT:映像所属的映像项目;例如debian-cloud。如需详细了解支持的映像项目,请参阅公共映像。IMAGE:指定以下其中一项:MACHINE_TYPE:您要使用的预留中指定的机器类型。RESERVATION_URL:为您要使用的日历模式下的未来预留自动创建的预留的网址。请指定以下某个值:如果自动创建的预留存在于您的项目中:
RESERVATION_NAME。如果自动创建的预留存在于其他项目中:
projects/PROJECT_ID/reservations/RESERVATION_NAME。
如需详细了解如何创建实例模板,请参阅 创建实例模板。
使用“灵活启动”预配模型
如需创建实例模板,请选择以下选项之一:
控制台
在 Cloud de Confiance 控制台中,转到实例模板页面。
点击创建实例模板。 系统会打开创建实例模板页面。
在名称字段中,输入实例模板的名称。
在位置部分,选择以下选项之一:
如需创建区域级实例模板,请选择区域级(推荐),然后选择要创建模板的区域。
如需创建全球实例模板,请选择全球 。
在机器配置 部分中,指定机器类型。
在预配模型 部分中,完成以下步骤:
在虚拟机预配模型列表中,选择灵活启动。
展开虚拟机预配模型高级设置 。
选中为虚拟机设置时间限制 复选框。
如需为通过实例模板创建的虚拟机设置运行时长,请在输入小时数 字段中输入小时数。该值必须介于 36 秒 (
0.01) 到 7 天 (168) 之间。
可选:如需更改启动磁盘类型或映像的默认值,请在启动磁盘部分中,点击更改。然后,按照提示更改启动磁盘。
点击创建。
gcloud
如需创建实例模板,请将
instance-templates create 命令与以下标志设置结合使用:
将
--instance-termination-action标志设置为DELETE。将
--maintenance-policy标志设置为TERMINATE。--max-run-duration标志。将
--provisioning-model标志设置为FLEX_START。将
--reservation-affinity标志设置为none。
以下示例命令会创建一个区域级实例模板。如果您要创建全球实例模板,请使用相同的命令,但不使用 --instance-template-region 标志。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-template-region=REGION \
--instance-termination-action=DELETE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--max-run-duration=RUN_DURATION \
--provisioning-model=FLEX_START \
--reservation-affinity=none
替换以下内容:
INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。IMAGE_PROJECT:映像所属的映像项目;例如debian-cloud。如需详细了解支持的映像项目,请参阅公共映像。IMAGE_FAMILY:一個 映像系列。指定映像系列以使用最新的未弃用操作系统映像。例如,如果您指定debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅 映像系列最佳实践。REGION:要在其中创建实例模板的区域。MACHINE_TYPE:要用于灵活启动虚拟机的机器类型。如果您指定 N1 机器类型,则 必须添加--accelerator标志 以定义要挂接到虚拟机的 GPU 的数量和类型。RUN_DURATION:您希望请求的虚拟机运行的时长。您必须将该值的格式设置为天数、小时数、分钟数或秒数,并分别添加对应的后缀d、h、m或s。例如,指定30m表示 30 分钟,或指定1d2h3m4s表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。
REST
如需创建实例模板,请向以下方法之一发出 POST 请求:
如需创建区域级实例模板:
regionInstanceTemplates.insert方法如需创建全球实例模板:
instanceTemplates.insert方法
在请求正文中,添加以下字段:
设置为
NO_RESERVATION的reservationAffinity.consumeReservationType字段。设置为
DELETE的scheduling.instanceTerminationAction字段。scheduling.maxRunDuration字段。设置为
TERMINATE的scheduling.onHostMaintenance字段。设置为
FLEX_START的scheduling.provisioningModel字段。
以下示例请求会创建一个区域级实例模板:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
},
"scheduling": {
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": RUN_DURATION
},
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START"
}
}
}
替换以下内容:
PROJECT_ID:要创建实例模板的项目 ID。REGION:要在其中创建实例模板的区域。INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。IMAGE_PROJECT:映像所属的映像项目;例如debian-cloud。如需详细了解支持的映像项目,请参阅公共映像。IMAGE:指定以下其中一项:MACHINE_TYPE:要用于虚拟机的机器类型。如果您指定 N1 机器类型,则必须添加guestAccelerators字段 以定义要挂接到虚拟机的 GPU 的数量和类型。RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。该值必须介于600(600 秒,即 10 分钟)到604800(604,800 秒,即 7 天)之间。
如需详细了解如何创建实例模板,请参阅 创建实例模板。
创建使用批量模式的 MIG
如需在 MIG 中启用批量创建实例,请在 MIG 的配置中将 targetSizePolicy.mode 字段设置为 BULK。使用此批量模式时,MIG 会等待所有资源都可用,然后一次性创建实例。
控制台
前往实例组页面。
点击创建实例组。 此时会打开创建实例组页面。
在名称 字段中,输入 MIG 的名称。
在选择实例模板之前,您必须执行以下操作:
- 如果您使用“灵活启动”预配模型,则必须按如下方式关闭修复功能:
- 在虚拟机实例生命周期 部分中,取消选中允许在备用可用区中修复虚拟机 复选框。
- 在失败时的默认操作 列表中,选择无操作 。
- 在位置 部分中,执行以下操作:
- 如需创建可用区级 MIG,请选择单个可用区 。
- 如需创建区域级 MIG,请选择多个可用区 。在 目标分布形状 中,选择任意单个可用区。在随即显示的对话框中,选择停用实例重新分配 。
- 如果您使用“灵活启动”预配模型,则必须按如下方式关闭修复功能:
返回到实例模板 字段。在实例模板 列表中,选择您在上一部分中创建的实例模板。
在实例数 字段中,指定您要一次性创建的实例数。
选中使用批量目标大小政策一次性获取所有虚拟机 复选框。
点击创建 。
gcloud
如需创建启用了批量创建的 MIG,请使用
gcloud compute instance-groups managed create 命令
并将 --target-size-policy-mode 标志设置为 bulk。
如果您使用“灵活启动”预配模型,则必须在 MIG 中关闭修复功能,方法是在以下命令中添加 --default-action-on-vm-failure=do-nothing 标志。
- 如需创建可用区级 MIG,请运行以下命令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE \
- 如需创建区域级 MIG,请运行以下命令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zones=LIST_OF_ZONES \
替换以下内容:
INSTANCE_GROUP_NAME:MIG 的名称。SIZE:MIG 中的实例数。INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:- 对于区域级实例模板:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 对于全球实例模板:
INSTANCE_TEMPLATE_ID
- 对于区域级实例模板:
ZONE:MIG 在其中创建实例的可用区。LIST_OF_ZONES:区域级 MIG 在其中创建实例的可用区的逗号分隔列表。例如,us-central1-a, us-central1-b, us-central1-c。
REST
如需创建启用了批量创建的 MIG,请发出 POST 请求,如下所示。在请求正文中,将 targetSizePolicy.mode 字段设置为 bulk。
如果您使用“灵活启动”预配模型,则必须在 MIG 中关闭修复功能
,方法是在以下请求中添加
"instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"}字段
。
如需创建可用区级 MIG,请向
instanceGroupManagers.insert方法发出POST请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }如需创建区域级 MIG,请向
regionInstanceGroupManagers.insert方法发出POST请求。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }
替换以下内容:
PROJECT_ID:项目 ID。ZONE:MIG 在其中创建实例的可用区。REGION:MIG 在其中创建实例的区域。INSTANCE_GROUP_NAME:MIG 的名称。SIZE:MIG 中的实例数。INSTANCE_TEMPLATE_URL:您要用于在 MIG 中创建实例的实例模板的网址。网址可以包含实例模板的 ID 或名称。请指定以下某个值:- 对于区域级实例模板:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 对于全球实例模板:
INSTANCE_TEMPLATE_ID
- 对于区域级实例模板:
添加或删除实例
在使用批量模式的 MIG 中,您可以通过手动增加或减少 MIG 的目标大小来添加或移除实例。
添加实例:当您将目标大小从零增加时,MIG 会以与创建 MIG 相同的方式添加 实例。当 MIG 中没有实例时,您还可以使用
createInstances方法创建具有特定名称的实例。如需创建具有特定名称的实例,请参阅 在 MIG 中创建具有特定名称的实例。删除实例:当您将目标大小减小到零时,MIG 会删除组中的所有现有实例,并取消任何正在进行的创建操作 。 您可以通过将目标大小减小到
0来移除实例。如需减小到非零大小,MIG 不得有正在进行的批量实例操作(bulkInstanceOperation.inProgress必须为false)。
如需通过更改目标大小来在 MIG 中添加或移除实例,请参阅 手动设置 MIG 的大小。
后续步骤
- 了解如何在 MIG 中查看或取消批量创建实例。
- 了解如何使用代管式实例。
- 查看有关 MIG 和代管式实例的信息