×

容器迁移工具包 (MTC) 允许您以命名空间为粒度在 OpenShift Container Platform 4 集群之间迁移有状态应用程序工作负载。

您可以使用状态迁移在同一集群内或集群之间迁移应用程序。

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

MTC 控制台默认安装在目标集群上。您可以配置容器迁移工具包运算符以在 远程集群 上安装控制台。

有关以下主题的信息,请参阅 高级迁移选项

  • 使用迁移挂钩和 MTC API 自动化您的迁移。

  • 配置您的迁移计划以排除资源、支持大规模迁移并为直接卷迁移启用自动 PV 调整大小。

MTC 1.8 支持

  • 使用 OADP 1.3.z 的 MTC 1.8.3 及更早版本在所有 OpenShift 4.15 及更早版本上受支持。

  • 使用 OADP 1.3.z 的 MTC 1.8.4 及更高版本目前在所有 OpenShift 4.15 及更早版本上受支持。

  • 使用 OADP 1.4.z 的 MTC 1.8.4 及更高版本目前在所有受支持的 OpenShift 4.13 及更高版本上受支持。

术语

表 1. MTC 术语
术语 定义

源集群

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

目标集群[1]

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

复制存储库

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

复制库必须可被所有集群访问。

主机集群

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

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

远程集群

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

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

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

间接迁移

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

直接卷迁移

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

直接镜像迁移

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

分阶段迁移

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

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

切换迁移

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

状态迁移

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

回滚迁移

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

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

MTC 工作流

您可以使用迁移工具包 for Containers (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. 在所有集群上安装迁移工具包 for Containers 运算符。

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

  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

关于数据复制方法

迁移工具包 for Containers (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 具有其他前提条件。