11.4.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 部分。当 MigPlan CR 中指定 includedResources 字段时,计划会将 group-kind 的列表作为输入。只有列表中显示的资源才会包含在迁移中。
  • 添加可选的 labelSelector 参数,以过滤 MigPlan 中的 includedResources。当指定此字段时,迁移中仅包含与标签选择器匹配的资源。例如,您可以使用标签 app: frontend 作为过滤器来过滤 SecretConfigMap 资源列表。

流程

  1. 更新 MigPlan CR,使其包含 Kubernetes 资源,并可选择性地通过添加 labelSelector 参数来过滤包含的资源:

    1. 更新 MigPlan CR 使其包含 Kubernetes 资源:

      apiVersion: migration.openshift.io/v1alpha1
      kind: MigPlan
      metadata:
        name: <migplan>
        namespace: openshift-migration
      spec:
        includedResources:
        - kind: <kind> 1
          group: ""
        - kind: <kind>
          group: ""
      1
      指定 Kubernetes 对象,如 SecretConfigMap
    2. 可选:要通过添加 labelSelector 参数来过滤包含的资源:

      apiVersion: migration.openshift.io/v1alpha1
      kind: MigPlan
      metadata:
        name: <migplan>
        namespace: openshift-migration
      spec:
        includedResources:
        - kind: <kind> 1
          group: ""
        - kind: <kind>
          group: ""
      ...
        labelSelector:
          matchLabels:
            <label> 2
      1
      指定 Kubernetes 对象,如 SecretConfigMap
      2
      指定要迁移的资源标签,如 app: frontend
  2. 创建一个 MigMigration CR 来迁移所选 Kubernetes 资源。验证 migPlanRef 引用了了正确的 MigPlan

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigMigration
    metadata:
      generateName: <migplan>
      namespace: openshift-migration
    spec:
      migPlanRef:
        name: <migplan>
        namespace: openshift-migration
      stage: false