使用 Migrate to Containers 将虚拟机迁移到容器

Last reviewed 2021-10-21 UTC

本文档适用于负责设计和实现迁移计划以将基于虚拟机的工作负载迁移到容器的云架构师。 该文档提供了有关如何使用 Migrate to Containers 将虚拟机 (VM) 从来源环境迁移到在 Google Kubernetes Engine (GKE) 或 GKE Enterprise 中运行的容器的指导。您的来源环境可能在本地环境、私有托管环境或其他云中运行。

本文档简要介绍了 Migrate to Containers。本文档还包含您在计划将虚拟机迁移到容器时需要考虑的要点。本文是关于如何迁移到 Google Cloud 的系列文章中的一篇。如果您想要了解该系列文章,请参阅迁移到 Google Cloud:选择迁移路径

如果您计划使用 Migrate to Containers 将运行兼容的操作系统 (OS)(例如 Linux 或 Windows)的虚拟机从支持的来源环境迁移到 GKE 或 GKE Enterprise 环境,请阅读本文档。这些来源环境可能包括以下环境:

借助 Migrate to Containers,您可以将基于虚拟机的现有工作负载放入 GKE 和 GKE Enterprise 容器中,而无需以下条件:

  • 提供针对源代码的访问权限
  • 重写工作负载
  • 手动容器化工作负载

使用 Migrate to Containers 迁移基于虚拟机的工作负载具有以下优势:

  • 容器化的环境,包括:
  • 高工作负载密度
  • 丰富的编排机制和政策管理
  • 灵活的服务间通信渠道
  • 可以使用持续集成和持续部署流水线
  • 可以从不受支持的操作系统版本迁移
  • 可以开始停用基于虚拟机的环境

使用 Migrate to Containers 将基于虚拟机的工作负载迁移到容器是工作负载现代化改造之旅中很有可能的一个步骤。使用 Migrate to Containers 迁移基于虚拟机的工作负载有助于避免对工作负载进行现代化改造所需的费用高昂的重写。但是,也不会将这些工作负载转换为专门在云环境运行的工作负载。

理想的迁移候选项包括:

  • 通过完全重写进行现代化改造不可行或费用过高的工作负载
  • 由于具有未知依赖项从而导致迁移会破坏某些关系的工作负载
  • 进行维护但未积极开发的工作负载
  • 不再维护的工作负载
  • 没有源代码访问权限的工作负载

您可以通过多种方式与 Migrate to Containers 进行交互。例如,您可以通过 Google Cloud 控制台进行访问。如果您需要自动执行迁移过程并将其与现有工具链集成,则可以使用命令行界面和 Migrate to Containers Kubernetes 自定义资源定义 (CRD)

如需详细了解 Migrate to Containers 界面,请参阅 API 与参考文档 | Migrate to Containers

本文档假定您已阅读并熟悉以下文档:

设计迁移到 Google Cloud 的过程

如需将虚拟机从来源环境迁移到 Google Cloud 中运行的容器,我们建议您遵循迁移到 Google Cloud 系列中介绍的框架。

下图说明了迁移过程的路径:

迁移路径包含四个阶段。

上图演示的框架有四个阶段:

  1. 评估。在此阶段,您将评估来源环境、评估要迁移到 Google Cloud 的工作负载,并评估哪些虚拟机支持每个工作负载。
  2. 规划。在此阶段,为 Migrate to Containers 创建基本基础架构,例如预配资源层次结构和设置网络访问。
  3. 部署。在此阶段,使用 Migrate to Containers 将虚拟机从来源环境迁移到 GKE 或 GKE Enterprise。
  4. 优化。在此阶段,您将开始利用云技术和功能。

评估来源环境和工作负载

在评估阶段,您将收集有关来源环境和要迁移的基于虚拟机的工作负载的信息。这样做可帮助您合理调整所需的资源 — 无论是针对迁移还是目标环境。

在评估阶段,您将完成以下任务:

  1. 构建一个完整的工作负载清单。
  2. 根据应用的属性和依赖项对应用进行分类。
  3. 为您的团队开展 Google Cloud 培训和指导
  4. 针对 Google Cloud 构建实验和概念验证。
  5. 计算目标环境的总拥有成本 (TCO)。
  6. 选择您首先要迁移的工作负载。

以下部分依赖于迁移到 Google Cloud:评估和发现工作负载中的信息。但是,它们提供了在评估您要使用 Migrate to Containers 迁移到容器的基于虚拟机的工作负载时所需的特定信息。

构建您的清单

如需确定迁移范围,您必须了解当前的基于虚拟机的环境。如需了解您的环境,请收集有关工作负载及其依赖项的信息。

构建应用清单介绍了如何在基于虚拟机的环境中构建工作负载清单及其依赖项。请按照该指南构建您的清单,然后再继续阅读本文档。

构建工作负载清单及其依赖项之后,您就可以优化该清单。评估您的组织在使用 Migrate to Containers 迁移其基于虚拟机的工作负载时涉及的方面和功能。

如需完成工作负载清单,请考虑以下事项:

  • 来源环境。Migrate to Containers 支持从不同的来源环境迁移虚拟机:

    • Compute Engine
    • VMware vSphere
    • Microsoft Azure 虚拟机
    • Amazon EC2

    如需正确设置 Migrate to Containers,以便其可以迁移工作负载,您必须评估来源环境。

  • 在虚拟机中运行的操作系统:收集有关虚拟机中运行的操作系统及其许可的信息,并确保操作系统与 Migrate to Containers 兼容。如果您运行的是 Migrate to Containers 不支持的操作系统,请考虑升级到受支持的版本,或者将操作系统更改为 Migrate to Containers 支持的操作系统

  • 虚拟机中的工作负载:评估每个虚拟机中部署的工作负载。然后,映射工作负载之间以及工作负载与外部服务之间的依赖项。接下来,收集有关工作负载配置来源的信息。例如,您是否使用环境变量、分布式配置系统或元数据服务器来动态地配置工作负载?此外,请评估工作负载如何将信息发送到日志记录系统。

  • Migrate to Containers 适合度分数:评估工作负载是否适合使用 Migrate for Anthos 进行迁移。Migrate to Containers 提供了适用于 Linux 和 Windows 的适合度评估工具,您可以在虚拟机上运行该工具来计算适合度分数。较低的拟合得分表示在迁移工作负载之前存在需要解决的问题。例如,如果您在虚拟机上启用了安全增强型 Linux,则可能需要执行额外工作来缓解此依赖项,然后再迁移它们。

  • 网络服务:收集有关网络服务配置的信息,以及基于虚拟机的工作负载如何使用这些服务。例如,评估您的工作负载如何使用域名系统 (DNS)、多播 DNS、主机文件和其他服务发现机制来确定其他工作负载和服务的位置。接下来,评估您的工作负载所需的任何自定义条目的每个虚拟机的主机文件。如需详细了解主机文件,请参阅检查和验证生成的资源和描述符

  • 硬件依赖项:评估您在基于虚拟机的环境中使用的任何类型的硬件,例如高性能存储设备、GPU、TPU 或网络设备。

  • 无状态和有状态工作负载:无状态工作负载不会将状态存储在集群或永久性存储空间中。有状态工作负载会保存数据供以后使用。由于迁移有状态工作负载通常比迁移无状态工作负载更困难,因此请评估哪些工作负载是无状态工作负载,哪些工作负载是有状态工作负载。

  • 存储:对于有状态工作负载,请列出您的存储要求。在创建列表时,需要考虑以下事项:

    • 存储系统类型(块卷、文件存储或对象存储)
    • 存储系统大小
    • 工作负载对存储系统的访问权限

      • 例如,您的工作负载是使用网络文件系统 (NFS) 还是使用服务器消息块 (SMB) 来通过网络访问文件?
      • 例如,您的虚拟机运行 NFS 服务器还是 SMB 服务器?

        如果您的虚拟机以内核模式运行 NFS 服务器,则需要花费额外的精力来迁移这些服务器。您可以将这些服务器迁移到其他运行时环境,例如 Compute Engine 或 GKE。或者,您可以将数据迁移到 Filestore,这是一项全代管式的网络附加存储服务。

    • 磁盘配置:

      • 请评估虚拟机中所有磁盘、数据分区和卷的配置,以及每个磁盘的安全和保密功能。
  • 数据存放区域:数据存放区域会影响有状态工作负载的性能。外部系统和环境之间的距离和连接会影响延迟时间。对于每个外部数据存储系统,请考虑它必须满足的任何性能和可用性要求。

完成评估

构建与您的环境和基于虚拟机的工作负载相关的清单后,请完成迁移到 Google Cloud:评估和发现您的工作负载中介绍的剩余评估阶段活动。 完成该工作后,请继续阅读本文档。

规划和构建基础

在规划和构建阶段,您需要预配和配置支持 Google Cloud 上的工作负载的云基础架构和服务:

  1. 构建资源层次结构。
  2. 配置身份和访问权限管理。
  3. 设置结算功能。
  4. 设置网络连接。
  5. 强化安全性。
  6. 设置监控和提醒。

如需了解如何构建支持工作负载及其依赖项的云基础架构和服务,请参阅迁移到 Google Cloud:构建您的基础。请遵循这些准则为您的环境构建基础。完成该工作后,请继续阅读本文档。

按照“迁移到 Google Cloud:构建您的基础”中的指导进行操作,通过设置 Migrate to Containers 完成基础工作:

  1. 确认您的工作负载和来源环境是否满足 Migrate to Containers 前提条件
  2. 启用 Migrate to Containers Cloud API
  3. 预配 Migrate to Containers 用于访问目标环境中的资源的服务账号。
  4. 如果要将工作负载迁移到 GKE 或 GKE Clusters on Google Cloud,请设置 Migrate to Virtual Machines
  5. 配置 Migrate to Containers 处理集群。Migrate to Containers 处理集群在迁移过程中运行 Migrate to Containers 组件。
  6. 在处理集群中安装并配置 Migrate to Containers

前面提到的“设置 Migrate to Containers”一文介绍了如何预配和配置 Migrate to Containers 及其依赖项。按照该指南设置 Migrate to Containers。

完成本部分中描述的工作后,请返回本文档。

将基于虚拟机的工作负载迁移到容器

在部署阶段,按照以下里程碑将虚拟机从来源环境迁移到 GKE 或 GKE Enterprise 中运行的容器:

  1. 生成并查看迁移计划。
  2. 生成容器工件和部署描述符。
  3. 检验、验证和自定义 Migrate to Containers 为您生成的资源描述符。
  4. 将容器化工作负载部署到 GKE 或 GKE Enterprise 并进行验证。
  5. 卸载 Migrate to Containers。

如需详细了解使用 Migrate to Containers 来迁移虚拟机所需的步骤,请参阅执行迁移

生成并查看迁移计划

为基于虚拟机的工作负载创建 Migrate to Containers 迁移计划:

  1. 将来源环境配置为 Migrate to Containers 迁移来源。如需迁移基于虚拟机的工作负载,Migrate to Containers 需要有关虚拟机当前在其中运行的来源环境的信息。您可以通过执行本文档的构建您的清单部分中所述的任务来收集这些信息。如需详细了解如何配置来源环境,请参阅添加迁移来源 (Linux)添加迁移来源 (Windows)
  2. 创建迁移计划。如需指定要从来源环境迁移到受支持的目标环境的基于虚拟机的工作负载,请创建迁移计划。例如,您可以配置要用来存储永久性数据的位置。如需详细了解如何创建和监控迁移计划,请参阅创建迁移 (Linux)创建迁移 (Windows)
  3. 查看并自定义迁移计划。为要迁移的每个基于虚拟机的工作负载生成迁移计划后,我们建议您查看并自定义每个迁移计划,以确保它符合您的要求。如需详细了解如何自定义迁移计划,请参阅自定义迁移计划 (Linux)自定义迁移计划 (Windows)

完成本部分中描述的工作后,请返回本文档。

生成容器工件和部署描述符

如需为您的工作负载生成目标容器工件,Migrate to Containers 会创建一个容器映像,其中包含从迁移计划的虚拟机中提取的工作负载和数据。然后,它会将容器映像的副本存储在已配置的容器映像存储库中。Migrate to Containers 还会生成部署描述符,您可以进行自定义并使用它们在目标环境中部署容器映像的实例。

如需详细了解如何生成容器工件,请参阅执行迁移 (Linux)执行迁移 (Windows)

您可以监控您创建和迁移的容器工件的进度。如需详细了解如何监控迁移,请参阅监控迁移 (Linux)监控迁移 (Windows)

如果您要为 Windows 工作负载生成容器工件,请使用 Migrate to Containers 生成的工件和部署描述符来为这些工作负载构建 Windows 容器映像。如需详细了解如何为工作负载构建 Windows 容器映像,请参阅构建 Windows 容器映像

完成本部分中描述的工作后,请返回本文档。

检查和验证生成的资源和描述符

使用 Migrate to Containers 生成容器工件和部署描述符后,请查看并更新这些工件和描述符,以确保它们符合您的要求。更新容器工件和部署描述符所需的时间取决于要迁移的基于虚拟机的工作负载的数量以及它们的复杂程度。如需详细了解如何查看容器工件和部署描述符,请参阅查看生成的部署文件 (Linux)构建 Windows 容器映像。例如,请考虑以下几个方面。

为资源和描述符命名

配置和日志的资源和描述符

政策和配置文件的资源和描述符

其他资源和描述符

完成本部分中描述的工作后,请返回本文档。

部署并验证容器化工作负载

工作负载的部署描述符准备就绪后,请执行以下步骤:

  1. 在目标环境中部署您的迁移后工作负载。如需了解如何部署迁移后的 Linux 和 Windows 工作负载,请参阅以下内容将 Linux 工作负载部署到目标集群将 Windows 工作负载部署到目标集群
  2. 监控迁移后的工作负载。部署迁移后的 Linux 工作负载和 Windows 工作负载之后,您可以收集有关其性能的信息。如需了解详情,请参阅监控迁移的工作负载 (Linux)监控迁移的工作负载 (Windows)

  3. 集成迁移后的工作负载。在目标环境中部署的工作负载开始工作之后,对其进行集成。将工作负载的容器工件生成和部署流程与您的部署流程和流水线进行集成。 如果您目前没有部署自动部署流程并且手动部署工作负载,建议您从手动部署迁移到自动部署

完成本部分中描述的工作后,请返回本文档。

卸载 Migrate to Containers

使用 Migrate to Containers 完成工作负载迁移后,建议您执行以下操作:

  1. 确保您拥有 Migrate to Containers 在迁移过程中生成的工件的所有引用。
  2. 卸载 Migrate to Containers

完成本部分中描述的工作后,请返回本文档。

迁移后优化您的环境

优化环境是迁移的最后一个阶段。如需优化 GKE 和 GKE Enterprise 环境,请参阅优化环境

后续步骤