我有一个基本的SH脚本,可用于在GCP上创建多个VM,它工作正常,但顺序正常。如果说多个VM数量大于4或5,则这将成为实质性的时间延迟。我注意到在诸如Dataflow或Dataproc的平台中,几乎同时创建了任意数量的VM。有没有办法模仿GCE中的功能? (毕竟,无论如何,这些似乎都是基本的GCE机器)。
现在,我使用以下(简化的)脚本:
vms=4
for i in `seq 1 $vms`
do
gcloud compute --project PROJECT disks create VM"$i" --size 50 --zone ZONE --type "pd-ssd"
gcloud beta compute --project=PROJECT instances create VM"$i" --zone=ZONE --machine-type=MACHINE_TYPE --subnet=default --maintenance-policy=MIGRATE --scopes=https://www.googleapis.com/auth/cloud-platform --disk=name=VM"$i",device-name=VM"$i",mode=rw,boot=yes,auto-delete=yes
done
谢谢您的建议!
答案 0 :(得分:2)
您可以通过creating a group of managed VMs更快地创建多个相似的VM。
首先,create an instance template,指定所需的VM配置:
gcloud compute instance-templates create TEMPLATE_NAME \
--machine-type MACHINE_TYPE \
--image-project IMAGE_PROJECT \ # project where your boot disk image is stored
--image IMAGE \ # boot disk image name
--boot-disk-type pd-ssd \
--boot-disk-size 50GB \
--boot-disk-auto-delete \
--boot-disk-device-name DEVICE_NAME \ # boot disk device name, the same for all VMs
--subnet default \
--maintenance-policy MIGRATE \
[...]
注意:
然后,基于此模板,创建4个(或100个或1000+个)VM组:
gcloud compute instance-groups managed create GROUP_NAME \
--zone ZONE \
--template TEMPLATE_NAME \ # name of the instance template that you have just created
--size 4 \ number of VMs that you need to create
该小组根据您的模板创建多个类似的VM,其速度比通过迭代创建独立VM的创建速度快得多。
答案 1 :(得分:1)
直接行进
一个捷径就是将--async
参数添加到gcloud
命令中。
此外,您可以使用wait
和&
在bash中添加并行化:
for i in `seq 1 4`
do
gcloud compute instances [...] --async &
done
wait
替代
您可以使用terraform以不同的方式进行操作
答案 2 :(得分:0)
bulk instance creation APIs 允许您使用单个 API 请求创建多个 VM:
gcloud compute instances bulk create \
--name-pattern="VM#" \
--count=4 \
--region=REGION \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \ # project where your boot disk image is stored
--image=IMAGE \ # boot disk image name
--boot-disk-type=pd-ssd \
--boot-disk-size=50GB \
--boot-disk-auto-delete \
--boot-disk-device-name=DEVICE_NAME \ # boot disk device name, the same for all VMs
--subnet=default \
--maintenance-policy=MIGRATE \
[...]
注意: