9.2.5. 状态迁移

您可以使用 Migration Toolkit for Containers(MTC)迁移组成应用程序状态的持久性卷声明(PVC),执行可重复的、仅状态的迁移。您可以通过从迁移计划中排除其他 PVC 来迁移指定的 PVC。您可以映射 PVC 以确保源和目标 PVC 同步。持久性卷 (PV) 数据复制到目标集群。PV 引用不会被移动,应用程序 pod 将继续在源集群中运行。

State 迁移专门设计用于外部 CD 机制,如 OpenShift Gitops。在使用 MTC 迁移状态时,您可以使用 GitOps 迁移应用程序清单。

如果您有 CI/CD 管道,您可以通过在目标集群中部署无状态组件来迁移它们。然后,您可以使用 MTC 迁移有状态组件。

您可以在集群间或同一集群中执行状态迁移。

重要

状态迁移仅迁移构成应用状态的组件。如果要迁移整个命名空间,请使用 stage 或 cutover migration。

先决条件

  • 源集群中的应用程序状态在通过 PersistentVolumeClaims 置备的 PersistentVolume 中保留。
  • 应用程序的清单在中央存储库中可用,它们同时可从源和目标集群访问。

流程

  1. 将持久性卷数据从源迁移到目标集群。

    您可以根据需要多次执行此步骤。源应用程序继续运行。

  2. 静止源应用程序。

    您可以通过在源集群上直接将工作负载资源副本设置为 0 来完成此操作,或者更新 GitHub 中的清单并重新同步 Argo CD 应用程序。

  3. 将应用程序清单克隆到目标集群。

    您可以使用 Argo CD 将应用程序清单克隆到目标集群。

  4. 将剩余的卷数据从源迁移到目标集群。

    通过执行最终数据迁移,在状态迁移过程中迁移应用程序创建的任何新数据。

  5. 如果克隆的应用程序处于静默状态,请取消静止它。
  6. 将 DNS 记录切换到目标集群,将用户流量重新定向到已迁移的应用程序。
注意

在执行状态迁移时,MTC 1.6 无法自动静止应用程序。它只能迁移 PV 数据。因此,您必须使用 CD 机制来静止或取消静止应用程序。

MTC 1.7 引入了明确的 Stage 和 Cutover 流。您可以根据需要,使用暂存来执行初始数据传输。然后,您可以执行一个可自动静止源应用程序。

先决条件

  • 源集群中的应用程序状态在通过 PersistentVolumeClaims 置备的 PersistentVolume 中保留。
  • 应用程序的清单在中央存储库中可用,它们同时可从源和目标集群访问。

流程

  1. 将持久性卷数据从源迁移到目标集群。

    您可以根据需要多次执行此步骤。源应用程序继续运行。

  2. 静止源应用程序。

    您可以通过在源集群上直接将工作负载资源副本设置为 0 来完成此操作,或者更新 GitHub 中的清单并重新同步 Argo CD 应用程序。

  3. 将应用程序清单克隆到目标集群。

    您可以使用 Argo CD 将应用程序清单克隆到目标集群。

  4. 将剩余的卷数据从源迁移到目标集群。

    通过执行最终数据迁移,在状态迁移过程中迁移应用程序创建的任何新数据。

  5. 如果克隆的应用程序处于静默状态,请取消静止它。
  6. 将 DNS 记录切换到目标集群,将用户流量重新定向到已迁移的应用程序。
注意

在执行状态迁移时,MTC 1.6 无法自动静止应用程序。它只能迁移 PV 数据。因此,您必须使用 CD 机制来静止或取消静止应用程序。

MTC 1.7 引入了明确的 Stage 和 Cutover 流。您可以根据需要,使用暂存来执行初始数据传输。然后,您可以执行一个可自动静止源应用程序。

其他资源