Google Cloud Platform (GCP) 是领先的云服务提供商之一,提供各种各样的工具和服务,帮助企业和开发者无缝地构建、部署和扩展应用。GCP 中使用最广泛的服务之一是Compute Engine,它允许你创建和管理根据你的具体需求定制的虚拟机 (VM)。无论你运行的是 Web 应用、数据库还是开发环境,Compute Engine 都能提供现代工作负载所需的灵活性和可扩展性。
然而,随着组织的发展或重组,你可能需要将 Compute Engine 实例从项目 A转移到项目 B。在团队之间迁移资源、合并项目,甚至与其他组织协作时,经常会出现这种情况。虽然 GCP 不提供在项目之间移动虚拟机实例的直接“复制”功能——尤其是在项目属于不同帐户时——但可以使用快照和共享权限实现可靠的变通方法。
在本综合指南中,我们将逐步带你完成整个过程,涵盖从创建虚拟机快照到设置权限,再到在目标项目中部署实例的所有内容。无论你是经验丰富的云工程师还是探索 GCP 的初学者,本指南都将为你提供高效执行此任务所需的知识和工具。读完本文后,你将能够无缝迁移 GCP Compute Engine 实例,即使是在属于不同帐户的项目之间。
让我们深入了解,并简化乍一看可能很复杂的迁移过程。
目录
为什么要在项目之间复制 GCP 计算实例?
你可能需要将虚拟机实例在项目之间复制的原因有以下几点:
- 项目迁移:将资源迁移到新项目,以便更好地组织或计费。
- 协作:与另一个团队或组织共享虚拟机。
- 备份和恢复:在不同的项目中创建虚拟机备份,用于灾难恢复。
前提条件
开始之前,请确保满足以下条件:
- 访问权限:
- 你拥有所有者或编辑者权限,位于项目 A(源项目)中。
- 你拥有足够的权限(例如roles/compute.admin),位于项目 B(目标项目)中。
- 已启用账单:
- 两个项目都必须启用账单才能创建和使用资源。
- 已安装 Cloud SDK:
- 在本地计算机上安装Google Cloud SDK,或使用 Cloud Shell。
- 源虚拟机快照:
- 你需要创建源虚拟机实例的快照。
复制 GCP 计算实例的分步指南
第 1 步:在项目 A 中创建源虚拟机的快照
快照是虚拟机磁盘的时间点副本。创建快照的方法:
- 打开Google Cloud Console,选择项目 A。
- 转到Compute Engine> 快照。
- 点击创建快照。
- 填写所需详细信息:
- 名称:为快照指定一个唯一的名称(例如
my-vm-snapshot)。 - 源磁盘:选择源虚拟机的磁盘。
- 位置:选择多区域或靠近目标项目的区域。
- 名称:为快照指定一个唯一的名称(例如
- 点击创建。
或者,你可以使用以下gcloud命令:
gcloud compute snapshots create my-vm-snapshot \
--source-disk=SOURCE_DISK_NAME \
--source-disk-zone=SOURCE_DISK_ZONE \
--project=PROJECT_A_ID
替换:
SOURCE_DISK_NAME替换为源虚拟机磁盘的名称。SOURCE_DISK_ZONE替换为源虚拟机所在的可用区(例如us-central1-a)。PROJECT_A_ID替换为项目 A 的 ID。
第 2 步:与项目 B 共享快照
要允许项目 B 访问快照,你必须向目标帐户授予权限。
- 在项目 A中,转到Compute Engine> 快照。
- 选择你创建的快照。
- 点击显示信息面板(或用于编辑的铅笔图标)。
- 添加一个IAM 策略绑定:
- 成员:
user:[email protected](替换为目标帐户的电子邮件)。 - 角色:
Compute Storage Admin。
- 成员:
或者,使用以下gcloud命令:
gcloud compute snapshots add-iam-policy-binding my-vm-snapshot \
--member="user:[email protected]" \
--role="roles/compute.storageAdmin" \
--project=PROJECT_A_ID
第 3 步:使用快照在项目 B 中创建磁盘
现在快照已共享,你可以在项目 B中使用快照创建新磁盘。
- 切换到项目 B(在 Google Cloud Console 或 Cloud Shell 中):
gcloud config set project PROJECT_B_ID
- 从共享快照创建新磁盘:
gcloud compute disks create my-new-disk \
--source-snapshot=projects/PROJECT_A_ID/global/snapshots/my-vm-snapshot \
--zone=TARGET_ZONE \
--project=PROJECT_B_ID
替换:
PROJECT_A_ID替换为项目 A 的 ID。my-vm-snapshot替换为快照的名称。TARGET_ZONE替换为要创建磁盘的可用区(例如us-central1-a)。PROJECT_B_ID替换为项目 B 的 ID。
第 4 步:使用磁盘在项目 B 中创建新的虚拟机
磁盘创建完成后,你可以使用它在项目 B 中启动新的虚拟机。
- 运行以下命令以创建新的虚拟机:
gcloud compute instances create my-new-vm \
--zone=TARGET_ZONE \
--disk=name=my-new-disk,boot=yes,auto-delete=no \
--project=PROJECT_B_ID
- 将占位符替换为相应的值:
my-new-vm:新虚拟机的名称。my-new-disk:从快照创建的磁盘的名称。TARGET_ZONE:将创建虚拟机的可用区。PROJECT_B_ID:项目 B 的 ID。
第 5 步:验证新的虚拟机
创建虚拟机后,验证它正在运行且可以访问:
- 转到Compute Engine> 虚拟机实例,选择项目 B。
- 检查新虚拟机的状态。
- 通过 SSH 连接到虚拟机,确保它按预期工作。
最佳实践
- 清理资源:如果不再需要快照,请删除项目 A 中的快照,以避免不必要的费用:
gcloud compute snapshots delete my-vm-snapshot --project=PROJECT_A_ID
- 使用标签:为项目 B 中的新虚拟机和磁盘添加标签,以便更好地管理资源。
- 监控成本:留意两个项目的账单,以避免意外费用。
结论
将 GCP Compute Engine 实例从一个项目复制到另一个项目,尤其是在项目属于不同帐户的情况下,需要创建快照、共享快照,然后使用它来创建新的虚拟机。按照本指南中概述的步骤,你可以成功迁移虚拟机,同时确保安全和高效。
如果你觉得本指南有帮助,请随时与他人分享,或在下方留言。如果你有任何问题或管理 GCP 资源的更多提示,请告诉我们!