11.5. 迁移计划选项
您可以在 MigPlan 自定义资源 (CR) 中排除、编辑和映射组件。
11.5.1. 排除资源 复制链接链接已复制到粘贴板!
您可以从 MTC 迁移计划中排除资源,如镜像流、持久性卷(PV)或订阅,以便减少迁移的资源负载,或使用其他工具迁移镜像或 PV。
默认情况下,MTC 会排除服务目录资源和 Operator Lifecycle Manager(OLM)资源。这些资源是服务目录 API 组和 OLM API 组的一部分,目前还不支持迁移。
流程
编辑
MigrationController自定义资源清单:oc edit migrationcontroller <migration_controller> -n openshift-migration
$ oc edit migrationcontroller <migration_controller> -n openshift-migrationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过添加参数以排除特定资源,更新
spec部分。对于没有自己的排除参数的资源,请添加additional_excluded_resources参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
disable_image_migration: true以排除迁移中的镜像流。当MigrationControllerpod 重启时,镜像流会添加到main.yml中的exclude_resources列表中。 - 2
- 添加
disable_pv_migration: true以将 PV 排除在迁移计划之外。当MigrationControllerpod 重启时,persistentvolumes和persistentvolumeclaims会添加到main.yml中的exclude_resources列表中。禁用 PV 迁移会同时在创建迁移计划时禁用 PV 发现功能。 - 3
- 您可以添加要在
additional_excluded_resources列表中排除的 OpenShift Container Platform 资源。
-
等待两分钟,使
MigrationControllerPod 重启,以便应用更改。 验证资源是否排除:
oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1
$ oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出包含排除的资源:
输出示例
name: EXCLUDED_RESOURCES value: resource1,resource2,imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaims
name: EXCLUDED_RESOURCES value: resource1,resource2,imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaimsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5.2. 映射命名空间 复制链接链接已复制到粘贴板!
如果您在 MigPlan 自定义资源 (CR) 中映射命名空间,您必须确保在源或目标集群上不会重复命名空间,因为命名空间的 UID 和 GID 范围在迁移过程中被复制。
两个源命名空间映射到同一目标命名空间
spec:
namespaces:
- namespace_2
- namespace_1:namespace_2
spec:
namespaces:
- namespace_2
- namespace_1:namespace_2
如果您希望源命名空间映射到同一名称的命名空间,则不需要创建映射。默认情况下,源命名空间和目标命名空间具有相同的名称。
命名空间映射不正确
spec:
namespaces:
- namespace_1:namespace_1
spec:
namespaces:
- namespace_1:namespace_1
正确的命名空间引用
spec:
namespaces:
- namespace_1
spec:
namespaces:
- namespace_1
11.5.3. 持久性卷声明除外 复制链接链接已复制到粘贴板!
您可以通过排除您不想迁移的 PVC 来为状态迁移选择持久性卷声明 (PVC)。您可以通过在持久性卷(PV)被发现后设置 MigPlan 自定义资源(CR)的 spec.persistentVolumes.pvc.selection.action 参数来排除 PVC。
先决条件
-
MigPlanCR 处于Ready状态。
流程
将
spec.persistentVolumes.pvc.selection.action参数添加到MigPlanCR 中,并将其设置为skip:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5.4. 映射持久性卷声明 复制链接链接已复制到粘贴板!
您可以通过映射 PVC,将持久性卷(PV)数据从源集群迁移到 MigPlan CR 中目标集群中已置备的持久性卷声明(PVC)。此映射可确保迁移的应用的目标 PVC 与源 PVC 同步。
您可以在 PV 被发现后,通过更新 MigPlan 自定义资源(CR)中的 spec.persistentVolumes.pvc.name 参数来映射 PVC。
先决条件
-
MigPlanCR 处于Ready状态。
流程
更新
MigPlanCR 中的spec.persistentVolumes.pvc.name参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定源集群上的 PVC 和目标集群上的 PVC。如果目标 PVC 不存在,则会创建它。您可以在迁移过程中使用此映射更改 PVC 名称。
11.5.5. 编辑持久性卷属性 复制链接链接已复制到粘贴板!
创建 MigPlan 自定义资源(CR)后,MigrationController CR 会发现持久性卷(PV)。spec.persistentVolumes 块和 status.destStorageClasses 块添加到 MigPlan CR 中。
您可以编辑 spec.persistentVolumes.selection 块中的值。如果您更改了 spec.persistentVolumes.selection 块以外的值,当 MigrationController CR 协调 MigPlan CR 时这些值会被覆盖。
spec.persistentVolumes.selection.storageClass 参数的默认值由以下逻辑决定:
-
如果源集群 PV 是 Gluster 或 NFS,则默认为
cephfs,用于accessMode: ReadWriteMany或cephrbd,表示accessMode: ReadWriteOnce。 -
如果 PV 既不是 Gluster,也不是 NFS,或
cephfs或cephrbd不可用,则默认为同一调配器的存储类。 - 如果没有同一置备程序存储类,则默认是目标集群的默认存储类。
您可以将 storageClass 值改为 MigPlan CR 的 status.destStorageClasses 块中任何 name 参数的值。
如果 storageClass 值为空,则 PV 在迁移后将没有存储类。例如,当您想要将 PV 移到目标集群上的 NFS 卷时,这个选项是合适的。
先决条件
-
MigPlanCR 处于Ready状态。
流程
编辑
MigPlanCR 中的spec.persistentVolumes.selection值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 允许的值包括
move、copy和skip。如果只支持一个操作,则默认值是支持的动作。如果支持多个操作,则默认值为copy。 - 2
- 允许的值是
snapshot和filesystem。默认值为filesystem。 - 3
- 如果您在 MTC web 控制台中为文件系统复制选择了验证选项,则会显示
verify参数。您可以将其设置为false。 - 4
- 您可以将默认值改为
MigPlanCR 的status.destStorageClasses块中任何name参数的值。如果没有指定值,则 PV 在迁移后没有存储类。 - 5
- 允许的值有
ReadWriteOnce和ReadWriteMany。如果没有指定这个值,则默认值是源集群 PVC 的访问模式。您只能在MigPlanCR 中编辑访问模式。您不能使用 MTC web 控制台进行编辑。
11.5.6. 使用 MTC API 执行 Kubernetes 对象的状态迁移 复制链接链接已复制到粘贴板!
迁移所有 PV 数据后,您可以使用 Migration Toolkit for Containers (MTC) API 执行组成应用程序的 Kubernetes 对象的一次性状态迁移。
您可以通过配置 MigPlan 自定义资源 (CR) 字段来提供一个带有额外标签选择器的 Kubernetes 资源列表来进一步过滤这些资源,然后通过创建 MigMigration CR 来执行迁移。MigPlan 资源在迁移后关闭。
选择 Kubernetes 资源是一个仅限 API 的功能。您必须更新 MigPlan CR,并使用 CLI 为它创建一个 MigMigration CR。MTC web 控制台不支持迁移 Kubernetes 对象。
迁移后,MigPlan CR 的 closed 参数被设置为 true。您不能为此 MigPlan CR 创建另一个 MigMigration CR。
使用以下选项之一将 Kubernetes 对象添加到 MigPlan CR 中:
-
将 Kubernetes 对象添加到
includeResources部分。当MigPlanCR 中指定includedResources字段时,计划会将group-kind的列表作为输入。只有列表中显示的资源才会包含在迁移中。 -
添加可选的
labelSelector参数,以过滤MigPlan中的includedResources。当指定此字段时,迁移中仅包含与标签选择器匹配的资源。例如,您可以使用标签app: frontend作为过滤器来过滤Secret和ConfigMap资源列表。
流程
更新
MigPlanCR,使其包含 Kubernetes 资源,并可选择性地通过添加labelSelector参数来过滤包含的资源:创建一个
MigMigrationCR 来迁移所选 Kubernetes 资源。验证migPlanRef引用了了正确的MigPlan:Copy to Clipboard Copied! Toggle word wrap Toggle overflow