如何在项目之间复制 GCP Compute Engine 实例

Google Cloud Platform (GCP) 是领先的云服务提供商之一,提供各种各样的工具和服务,帮助企业和开发者无缝地构建、部署和扩展应用。GCP 中使用最广泛的服务之一是Compute Engine,它允许你创建和管理根据你的具体需求定制的虚拟机 (VM)。无论你运行的是 Web 应用、数据库还是开发环境,Compute Engine 都能提供现代工作负载所需的灵活性和可扩展性。

然而,随着组织的发展或重组,你可能需要将 Compute Engine 实例从项目 A转移到项目 B。在团队之间迁移资源、合并项目,甚至与其他组织协作时,经常会出现这种情况。虽然 GCP 不提供在项目之间移动虚拟机实例的直接“复制”功能——尤其是在项目属于不同帐户时——但可以使用快照和共享权限实现可靠的变通方法。

在本综合指南中,我们将逐步带你完成整个过程,涵盖从创建虚拟机快照到设置权限,再到在目标项目中部署实例的所有内容。无论你是经验丰富的云工程师还是探索 GCP 的初学者,本指南都将为你提供高效执行此任务所需的知识和工具。读完本文后,你将能够无缝迁移 GCP Compute Engine 实例,即使是在属于不同帐户的项目之间。

让我们深入了解,并简化乍一看可能很复杂的迁移过程。



为什么要在项目之间复制 GCP 计算实例?

你可能需要将虚拟机实例在项目之间复制的原因有以下几点:

  • 项目迁移:将资源迁移到新项目,以便更好地组织或计费。
  • 协作:与另一个团队或组织共享虚拟机。
  • 备份和恢复:在不同的项目中创建虚拟机备份,用于灾难恢复。

前提条件

开始之前,请确保满足以下条件:

  1. 访问权限:
    • 你拥有所有者或编辑者权限,位于项目 A(源项目)中。
    • 你拥有足够的权限(例如roles/compute.admin),位于项目 B(目标项目)中。
  2. 已启用账单:
    • 两个项目都必须启用账单才能创建和使用资源。
  3. 已安装 Cloud SDK:
  4. 源虚拟机快照:
    • 你需要创建源虚拟机实例的快照。

复制 GCP 计算实例的分步指南

第 1 步:在项目 A 中创建源虚拟机的快照

快照是虚拟机磁盘的时间点副本。创建快照的方法:

  1. 打开Google Cloud Console,选择项目 A。
  2. 转到Compute Engine> 快照。
  3. 点击创建快照。
  4. 填写所需详细信息:
    • 名称:为快照指定一个唯一的名称(例如my-vm-snapshot)。
    • 源磁盘:选择源虚拟机的磁盘。
    • 位置:选择多区域或靠近目标项目的区域。
  5. 点击创建。

或者,你可以使用以下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 访问快照,你必须向目标帐户授予权限。

  1. 在项目 A中,转到Compute Engine> 快照。
  2. 选择你创建的快照。
  3. 点击显示信息面板(或用于编辑的铅笔图标)。
  4. 添加一个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 步:验证新的虚拟机

    创建虚拟机后,验证它正在运行且可以访问:

    1. 转到Compute Engine> 虚拟机实例,选择项目 B。
    2. 检查新虚拟机的状态。
    3. 通过 SSH 连接到虚拟机,确保它按预期工作。

    最佳实践

    • 清理资源:如果不再需要快照,请删除项目 A 中的快照,以避免不必要的费用:
    gcloud compute snapshots delete my-vm-snapshot --project=PROJECT_A_ID
    
    • 使用标签:为项目 B 中的新虚拟机和磁盘添加标签,以便更好地管理资源。
    • 监控成本:留意两个项目的账单,以避免意外费用。

    结论

    将 GCP Compute Engine 实例从一个项目复制到另一个项目,尤其是在项目属于不同帐户的情况下,需要创建快照、共享快照,然后使用它来创建新的虚拟机。按照本指南中概述的步骤,你可以成功迁移虚拟机,同时确保安全和高效。

    如果你觉得本指南有帮助,请随时与他人分享,或在下方留言。如果你有任何问题或管理 GCP 资源的更多提示,请告诉我们!

    发表评论