Google Compute Engine:使用另一个项目的快照?
Google Compute Engine : Use snapshot from another project?
我的开发者控制台中有两个项目。我对项目 1 中的其中一个虚拟机进行了 "Snapshot"。我想使用在项目 1 中创建的快照在项目 2 中创建一个新虚拟机。现在快照没有显示在选项中。
如何将快照从一个项目导入到另一个项目?
据我所知,这是不可能的。要完成您所描述的内容,最好的做法是使用 this tutorial。您需要几个步骤来创建一个空白磁盘,将其附加到有问题的机器上,压缩引导分区并将其上传到云存储。完成后,将其下载到本地,切换项目并上传到另一个项目。单击 New Instance
时,您将能够从图像列表中 select 机器
您可以从项目 1 中的快照创建一个图像,然后使用项目 2 从该图像创建一个实例。
我假设您在这两个项目中都有编辑权限。
你的问题是说你有一个快照,想从项目 1 中的快照在项目 2 中创建一个实例。
如果您的快照磁盘仍然可用,请确保它不再附加到实例。如果它仍然附加到实例,请取消选中 "delete boot disk when deleting instance" 并删除实例。转到图像并单击从磁盘创建图像,然后从该磁盘创建图像。
如果您没有可用的磁盘,只有快照,请创建一个实例并将启动磁盘设置为快照和select您的快照。然后按照上面的说明先删除实例来创建图像。
现在项目 1 中有一个图像。您应该会在图像下看到它。
我不确定为什么,但是您不会在项目 2 的控制台中看到该图像,但是您可以使用 gcloud 使用项目 1 中的图像在项目 2 中创建一个实例。在项目 1 中,点击图片点击"view REST"会有一个完整的URL到图片,类似这样:
https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
使用项目1中的镜像在项目2中使用gcloud创建一个实例:
gcloud config set project <project-id-of-project-2>
gcloud config list
(您应该确认您在项目 2 中)
gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
显然你的 URL 会有所不同。
我刚刚测试了这个并且它有效。如果您需要更多帮助,请告诉我。
"chrispomeroy" 提供的解决方案工作正常,但需要首先使用您的个人 google 用户帐户(而不是 project2 服务帐户)初始化 gcloud(因为它有权访问两个项目):
gcloud init (and chose [2] Login with new credentials)
然后您确实可以在项目 2 上创建 VM(从项目 1 上的基础映像):
gcloud compute instances create testimg --image --image-project (no need for URL)
I tested today (nov 2015) and works fine
@chrispomeroy 发布的答案对我有用,但我能够稍微简化它,因为我需要越来越多地这样做。
假设您在 project-1 中有一个图像,并且需要在 project-2 中使用该图像创建一个实例。
gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
--image <name-of-your-image-from-project-1> \
--image-project "project-1"
这消除了为任何事情使用 URL
的担忧。
编辑: 我的回答在这一点上看起来很像他的,但是这些东西的文档在这里:
可以使用图像在整个项目中创建实例。现在,如果您在项目 1 中有图像,您也可以 select 在项目 2 中。
但是,到今天为止,您看不到整个项目的磁盘。如果您必须将具有相关附加磁盘的 VM 从项目 1 迁移到项目 2,请按照以下步骤操作。
连接gcloud
命令界面,使用项目2中的快照和创建磁盘。
连接到项目2,然后执行:
gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
以上将在 Project2 中创建磁盘。那么需要通过保留启动盘来删除Project1中的实例。
然后,从磁盘 myserver-bootdisk
创建映像。
创建图像后,切换到项目 2,然后从图像创建服务器,使用下拉菜单和 select 来自项目 1 的图像。
添加您从快照创建的额外磁盘并创建 VM。
这是仅通过浏览器点击的解决方案。你需要什么?
你需要有形象。要从磁盘创建映像,磁盘必须与任何实例分离。
如果您在 Project1 中只有实例,步骤是什么:
从 Project1 中的实例创建快照。
在 Project1 中从此快照创建实例。取消勾选“删除引导
删除实例时的磁盘”。此实例仅用于
现在将被删除
删除刚刚创建的实例
转到 "Disks" 菜单,您必须在那里看到来自
实例.
转到 "Images" 菜单 -> "Create an image"。在这里您可以创建图像。如果你没有分离的磁盘,你将没有任何磁盘
在下拉列表中可用。
转到项目 2 并使用您为项目 1 创建的自定义图像创建实例。怎么做?启动盘->更改->自定义
图片-> Select 项目 1-> 在这里你可以看到你的自定义图片
您不需要映像或临时 VM,也不必中断源 VM。只需在源项目中创建一个快照:
$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].
然后在目标项目中创建一个磁盘 --source-snapshot
指向上面返回的 'Created' URL:
$ gcloud compute --project p2 disks create the-disk \
--source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
这个用法在gcloud
docs中没有显示,我在@krishna praveen的回答中找到了,但是他的解释是不正确的;您不需要删除任何实例或使用图像。即使源和目标都是引导磁盘,这也有效:
$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes
如果出于某种原因您需要映像,您仍然可以将快照还原到磁盘并使用它来创建映像而无需临时 VM。如果临时 VM 会在启动时自动启动服务,这可能会干扰同一项目网络上的其他 运行 VM,那么这是更可取的。
$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1
此图像现在可以从另一个项目中使用(如上面@jiminikiz 所示)。
$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
--image-project p1 --zone=zone
我的开发者控制台中有两个项目。我对项目 1 中的其中一个虚拟机进行了 "Snapshot"。我想使用在项目 1 中创建的快照在项目 2 中创建一个新虚拟机。现在快照没有显示在选项中。 如何将快照从一个项目导入到另一个项目?
据我所知,这是不可能的。要完成您所描述的内容,最好的做法是使用 this tutorial。您需要几个步骤来创建一个空白磁盘,将其附加到有问题的机器上,压缩引导分区并将其上传到云存储。完成后,将其下载到本地,切换项目并上传到另一个项目。单击 New Instance
您可以从项目 1 中的快照创建一个图像,然后使用项目 2 从该图像创建一个实例。
我假设您在这两个项目中都有编辑权限。
你的问题是说你有一个快照,想从项目 1 中的快照在项目 2 中创建一个实例。
如果您的快照磁盘仍然可用,请确保它不再附加到实例。如果它仍然附加到实例,请取消选中 "delete boot disk when deleting instance" 并删除实例。转到图像并单击从磁盘创建图像,然后从该磁盘创建图像。
如果您没有可用的磁盘,只有快照,请创建一个实例并将启动磁盘设置为快照和select您的快照。然后按照上面的说明先删除实例来创建图像。
现在项目 1 中有一个图像。您应该会在图像下看到它。
我不确定为什么,但是您不会在项目 2 的控制台中看到该图像,但是您可以使用 gcloud 使用项目 1 中的图像在项目 2 中创建一个实例。在项目 1 中,点击图片点击"view REST"会有一个完整的URL到图片,类似这样:
https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
使用项目1中的镜像在项目2中使用gcloud创建一个实例:
gcloud config set project <project-id-of-project-2>
gcloud config list
(您应该确认您在项目 2 中)
gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
显然你的 URL 会有所不同。
我刚刚测试了这个并且它有效。如果您需要更多帮助,请告诉我。
"chrispomeroy" 提供的解决方案工作正常,但需要首先使用您的个人 google 用户帐户(而不是 project2 服务帐户)初始化 gcloud(因为它有权访问两个项目):
gcloud init (and chose [2] Login with new credentials)
然后您确实可以在项目 2 上创建 VM(从项目 1 上的基础映像):
gcloud compute instances create testimg --image --image-project (no need for URL) I tested today (nov 2015) and works fine
@chrispomeroy 发布的答案对我有用,但我能够稍微简化它,因为我需要越来越多地这样做。
假设您在 project-1 中有一个图像,并且需要在 project-2 中使用该图像创建一个实例。
gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
--image <name-of-your-image-from-project-1> \
--image-project "project-1"
这消除了为任何事情使用 URL
的担忧。
编辑: 我的回答在这一点上看起来很像他的,但是这些东西的文档在这里:
可以使用图像在整个项目中创建实例。现在,如果您在项目 1 中有图像,您也可以 select 在项目 2 中。
但是,到今天为止,您看不到整个项目的磁盘。如果您必须将具有相关附加磁盘的 VM 从项目 1 迁移到项目 2,请按照以下步骤操作。
连接
gcloud
命令界面,使用项目2中的快照和创建磁盘。 连接到项目2,然后执行:gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
以上将在 Project2 中创建磁盘。那么需要通过保留启动盘来删除Project1中的实例。 然后,从磁盘
myserver-bootdisk
创建映像。 创建图像后,切换到项目 2,然后从图像创建服务器,使用下拉菜单和 select 来自项目 1 的图像。添加您从快照创建的额外磁盘并创建 VM。
这是仅通过浏览器点击的解决方案。你需要什么? 你需要有形象。要从磁盘创建映像,磁盘必须与任何实例分离。
如果您在 Project1 中只有实例,步骤是什么:
从 Project1 中的实例创建快照。
在 Project1 中从此快照创建实例。取消勾选“删除引导 删除实例时的磁盘”。此实例仅用于
现在将被删除删除刚刚创建的实例
转到 "Disks" 菜单,您必须在那里看到来自 实例.
转到 "Images" 菜单 -> "Create an image"。在这里您可以创建图像。如果你没有分离的磁盘,你将没有任何磁盘 在下拉列表中可用。
转到项目 2 并使用您为项目 1 创建的自定义图像创建实例。怎么做?启动盘->更改->自定义 图片-> Select 项目 1-> 在这里你可以看到你的自定义图片
您不需要映像或临时 VM,也不必中断源 VM。只需在源项目中创建一个快照:
$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].
然后在目标项目中创建一个磁盘 --source-snapshot
指向上面返回的 'Created' URL:
$ gcloud compute --project p2 disks create the-disk \
--source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
这个用法在gcloud
docs中没有显示,我在@krishna praveen的回答中找到了,但是他的解释是不正确的;您不需要删除任何实例或使用图像。即使源和目标都是引导磁盘,这也有效:
$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes
如果出于某种原因您需要映像,您仍然可以将快照还原到磁盘并使用它来创建映像而无需临时 VM。如果临时 VM 会在启动时自动启动服务,这可能会干扰同一项目网络上的其他 运行 VM,那么这是更可取的。
$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1
此图像现在可以从另一个项目中使用(如上面@jiminikiz 所示)。
$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
--image-project p1 --zone=zone