【发布时间】:2021-04-27 12:03:30
【问题描述】:
我有两个 GCP 项目,projectA 和 projectB。在 projectB 中,我有一个机器映像 B-machine-image。我的目标是在 projectA 中制作机器映像的副本。但是由于没有办法直接将projectB中的机器镜像复制到projectA,所以我想我可以使用projectB中的机器镜像在projectA中创建一个实例,然后使用projectA中的新实例在本地创建机器镜像。
我为此找到了一个谷歌文档:https://cloud.google.com/compute/docs/machine-images/create-instance-from-machine-image 并按照步骤首先将 projectA 管理员角色中的服务帐户授予 projectB 中的机器映像 B-machine-image,然后运行命令使实例如下:
gcloud beta 计算实例创建 my-new-instance --project=projectA --zone us-central1-b --source-machine-image projects/projectB/global/machineImages/B-machine-image --service-帐号 123456789000-compute@developer.gserviceaccount.com
我得到了错误:
错误:(gcloud.beta.compute.instances.create)无法获取资源:
- 字段“resource.networkInterfaces[0].network”的值无效:“projects/123456789000/global/networks/projectB-vpc”。找不到引用的网络资源。
在 projectB 中,我确实有一个名为 projectB-vpc 的 VPC。
我不明白的是,在“projects/123456789000/global/networks/projectB-vpc”中,123456789000 似乎是针对 projectA 的,因为它是 projectA 服务帐户的电子邮件的一部分,而 projectB-vpc 是针对 projectB 的。在我的命令中我有“projects/projectB/....”,为什么命令将“projectB”替换为 123456789000?
知道我哪里做错了吗?
谢谢, 菲利普
【问题讨论】:
-
机器映像与常规计算引擎映像不同。机器映像已针对特定 VM 环境进行了预配置。我建议您创建一个常规的计算引擎实例映像。对于此问题,请尝试添加命令行选项
--network=default和--subnet=default或替换为您的实际网络名称。 -
注意:您可能必须重复此过程并为存储在机器映像中的每个配置值指定覆盖。