11.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
中保留。 - 应用程序的清单在中央存储库中可用,它们同时可从源和目标集群访问。
流程
将持久性卷数据从源迁移到目标集群。
您可以根据需要多次执行此步骤。源应用程序继续运行。
静止源应用程序。
您可以通过在源集群上直接将工作负载资源副本设置为
0
来完成此操作,或者更新 GitHub 中的清单并重新同步 Argo CD 应用程序。将应用程序清单克隆到目标集群。
您可以使用 Argo CD 将应用程序清单克隆到目标集群。
将剩余的卷数据从源迁移到目标集群。
通过执行最终数据迁移,在状态迁移过程中迁移应用程序创建的任何新数据。
- 如果克隆的应用程序处于静默状态,请取消静止它。
- 将 DNS 记录切换到目标集群,将用户流量重新定向到已迁移的应用程序。
在执行状态迁移时,MTC 1.6 无法自动静止应用程序。它只能迁移 PV 数据。因此,您必须使用 CD 机制来静止或取消静止应用程序。
MTC 1.7 引入了明确的 Stage 和 Cutover 流。您可以根据需要,使用暂存来执行初始数据传输。然后,您可以执行一个可自动静止源应用程序。
先决条件
-
源集群中的应用程序状态在通过
PersistentVolumeClaims
置备的PersistentVolume
中保留。 - 应用程序的清单在中央存储库中可用,它们同时可从源和目标集群访问。
流程
将持久性卷数据从源迁移到目标集群。
您可以根据需要多次执行此步骤。源应用程序继续运行。
静止源应用程序。
您可以通过在源集群上直接将工作负载资源副本设置为
0
来完成此操作,或者更新 GitHub 中的清单并重新同步 Argo CD 应用程序。将应用程序清单克隆到目标集群。
您可以使用 Argo CD 将应用程序清单克隆到目标集群。
将剩余的卷数据从源迁移到目标集群。
通过执行最终数据迁移,在状态迁移过程中迁移应用程序创建的任何新数据。
- 如果克隆的应用程序处于静默状态,请取消静止它。
- 将 DNS 记录切换到目标集群,将用户流量重新定向到已迁移的应用程序。
在执行状态迁移时,MTC 1.6 无法自动静止应用程序。它只能迁移 PV 数据。因此,您必须使用 CD 机制来静止或取消静止应用程序。
MTC 1.7 引入了明确的 Stage 和 Cutover 流。您可以根据需要,使用暂存来执行初始数据传输。然后,您可以执行一个可自动静止源应用程序。
其他资源
- 请参阅从迁移中排除 PVC 以选择状态迁移的 PVC。
- 请参阅映射 PVC,将源 PV 数据迁移到目标集群上置备的 PVC。
- 请参阅迁移 Kubernetes 对象 以迁移组成应用程序状态的 Kubernetes 对象。