我有一个基本的 SH 脚本,用于在 GCP 上创建多个虚拟机,它工作正常,但按顺序进行。当虚拟机数量超过 4 或 5 时,就会造成严重的时间延迟。我注意到,在 Dataflow 或 Dataproc 等平台中,几乎同时创建任意数量的虚拟机。有没有办法模仿 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
感谢您的建议!
最佳答案
您可以通过 creating a group of managed VMs 更快地创建多个类似的虚拟机.
首先,create an instance template ,指定您需要的虚拟机配置:
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 \
[...]
注意:
- 您将启动磁盘指定为实例模板的一部分。
- 无需为实例模板指定区域。您将在创建实例组时指定所需的区域。
- 组中所有虚拟机的启动磁盘的设备名称相同。这不是冲突,因为特定磁盘的设备名称是 seen from guest OS每个特定虚拟机的并且是该虚拟机本地的。
- 其他参数与创建虚拟机时相同。
然后,根据此模板创建一组 4 个(或 100 个或 1000 多个)虚拟机:
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
该小组根据您的模板创建多个类似的虚拟机,速度比您通过迭代创建独立虚拟机快得多。
关于google-compute-engine - 同时创建多个 GCE VM 的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51969240/