×

容器迁移工具包 (MTC) 允许您以命名空间为粒度将有状态应用程序工作负载从 OpenShift Container Platform 3 迁移到 4.17。

在开始迁移之前,请务必查看OpenShift Container Platform 3 和 4 之间的区别

MTC 提供基于 Kubernetes 自定义资源的 Web 控制台和 API,以帮助您控制迁移并最大限度地减少应用程序停机时间。

MTC 控制台默认安装在目标集群上。您可以配置容器迁移工具包 Operator 以在OpenShift Container Platform 3 源集群或远程集群上安装控制台。

MTC 支持文件系统和快照数据复制方法,用于将数据从源集群迁移到目标集群。您可以选择适合您环境并受您的存储提供商支持的方法。

OpenShift Container Platform 4 中的服务目录已弃用。您可以将使用服务目录在 OpenShift Container Platform 3 中配置的工作负载资源迁移到 4,但迁移后您无法对这些工作负载执行服务目录操作(例如 `provision`、`deprovision` 或 `update`)。如果无法迁移服务目录资源,MTC 控制台将显示一条消息。

术语

表 1. MTC 术语
术语 定义

源集群

从中迁移应用程序的集群。

目标集群[1]

将应用程序迁移到的集群。

复制存储库

在间接迁移期间用于复制镜像、卷和 Kubernetes 对象,或在直接卷迁移或直接镜像迁移期间用于复制 Kubernetes 对象的对象存储。

复制存储库必须可供所有集群访问。

主机集群

运行 `migration-controller` pod 和 Web 控制台的集群。主机集群通常是目标集群,但这并非必需。

主机集群不需要公开的注册表路由即可进行直接镜像迁移。

远程集群

远程集群通常是源集群,但这并非必需。

远程集群需要一个包含 `migration-controller` 服务帐户令牌的 `Secret` 自定义资源。

远程集群需要一个公开的安全注册表路由才能进行直接镜像迁移。

间接迁移

镜像、卷和 Kubernetes 对象从源集群复制到复制存储库,然后从复制存储库复制到目标集群。

直接卷迁移

持久卷直接从源集群复制到目标集群。

直接镜像迁移

镜像直接从源集群复制到目标集群。

阶段迁移

在不停止应用程序的情况下将数据复制到目标集群。

多次运行阶段迁移可以缩短切换迁移的持续时间。

切换迁移

应用程序在源集群上停止,其资源迁移到目标集群。

状态迁移

通过将特定的持久卷声明复制到目标集群来迁移应用程序状态。

回滚迁移

回滚迁移将回滚已完成的迁移。

1 在 MTC Web 控制台中称为目标集群。

MTC 工作流程

您可以使用容器迁移工具包 (MTC) Web 控制台或 Kubernetes API 将 Kubernetes 资源、持久卷数据和内部容器镜像迁移到 OpenShift Container Platform 4.17。

MTC 迁移以下资源

  • 迁移计划中指定的命名空间。

  • 命名空间范围的资源:当 MTC 迁移命名空间时,它会迁移与该命名空间关联的所有对象和资源,例如服务或 Pod。此外,如果命名空间中存在但在集群级别不存在的资源依赖于集群级别存在的资源,则 MTC 会迁移这两个资源。

    例如,安全上下文约束 (SCC) 是在集群级别存在的资源,而服务帐户 (SA) 是在命名空间级别存在的资源。如果 MTC 迁移的命名空间中存在 SA,则 MTC 会自动查找链接到 SA 的任何 SCC 并迁移这些 SCC。类似地,MTC 会迁移链接到命名空间的持久卷声明的持久卷。

    根据资源的不同,可能需要手动迁移集群范围的资源。

  • 自定义资源 (CR) 和自定义资源定义 (CRD):MTC 会自动迁移命名空间级别的 CR 和 CRD。

使用 MTC Web 控制台迁移应用程序包括以下步骤

  1. 在所有集群上安装容器迁移工具包 Operator。

    您可以在具有有限或无互联网访问权限的受限环境中安装容器迁移工具包 Operator。源集群和目标集群必须能够相互访问,并且能够访问镜像注册表。

  2. 配置复制存储库,这是一个 MTC 用于迁移数据的中间对象存储。

    迁移期间,源集群和目标集群必须能够访问复制存储库。如果您使用的是代理服务器,则必须将其配置为允许复制存储库和集群之间的网络流量。

  3. 将源集群添加到 MTC Web 控制台。

  4. 将复制存储库添加到 MTC Web 控制台。

  5. 创建一个迁移计划,其中包含以下数据迁移选项之一

    • 复制:MTC 将数据从源集群复制到复制存储库,然后从复制存储库复制到目标集群。

      如果您使用的是直接镜像迁移或直接卷迁移,则镜像或卷将直接从源集群复制到目标集群。

      migration PV copy
    • 迁移:MTC 将卸载源集群上的远程卷(例如,NFS),在目标集群上创建指向该远程卷的 PV 资源,然后将远程卷挂载到目标集群。目标集群上运行的应用程序将使用与源集群相同的远程卷。远程卷必须可供源集群和目标集群访问。

      尽管此图中未显示复制存储库,但它是迁移所必需的。

      migration PV move
  6. 运行迁移计划,选择以下选项之一:

    • 分阶段迁移:在不停止应用程序的情况下将数据复制到目标集群。

      可以多次运行分阶段迁移,以便在迁移之前将大部分数据复制到目标集群。运行一次或多次分阶段迁移可以缩短切换迁移的持续时间。

    • 切换迁移:停止源集群上的应用程序并将资源迁移到目标集群。

      可选:您可以清除迁移期间停止源集群上的事务复选框。

OCP 3 to 4 App migration

关于数据复制方法

容器迁移工具包 (MTC) 支持文件系统和快照数据复制方法,用于将数据从源集群迁移到目标集群。您可以选择适合您环境并受您的存储提供商支持的方法。

文件系统复制方法

MTC 将数据文件从源集群复制到复制存储库,然后从复制存储库复制到目标集群。

文件系统复制方法使用 Restic 进行间接迁移或使用 Rsync 进行直接卷迁移。

表 2. 文件系统复制方法概要
优点 限制
  • 集群可以具有不同的存储类。

  • 支持所有 S3 存储提供商。

  • 可选的校验和数据验证。

  • 支持直接卷迁移,这显著提高了性能。

  • 比快照复制方法慢。

  • 可选的数据验证会显著降低性能。

Restic 和 Rsync PV 迁移假设支持的 PV 仅为volumeMode=filesystem。对于文件系统迁移,不支持使用volumeMode=Block

快照复制方法

MTC 将源集群数据的快照复制到云提供商的复制存储库。数据将在目标集群上恢复。

快照复制方法可与 Amazon Web Services、Google Cloud Provider 和 Microsoft Azure 配合使用。

表 3. 快照复制方法概要
优点 限制
  • 比文件系统复制方法快。

  • 云提供商必须支持快照。

  • 集群必须位于同一个云提供商。

  • 集群必须位于相同的区域或位置。

  • 集群必须具有相同的存储类。

  • 存储类必须与快照兼容。

  • 不支持直接卷迁移。

直接卷迁移和直接镜像迁移

您可以使用直接镜像迁移 (DIM) 和直接卷迁移 (DVM) 将镜像和数据直接从源集群迁移到目标集群。

如果使用位于不同可用区中的节点运行 DVM,则迁移可能会失败,因为迁移的 Pod 无法访问持久卷声明。

DIM 和 DVM 具有显著的性能优势,因为跳过了将文件从源集群备份到复制存储库并将文件从复制存储库还原到目标集群的中间步骤。数据使用Rsync传输。

DIM 和 DVM 具有其他前提条件。