创建迁移计划

如需开始迁移虚拟机,请创建迁移。这会生成一个迁移计划对象。您通常需要先进一步检查和自定义生成的计划,然后才能继续执行迁移。

迁移是您用来执行迁移操作、使用 migctlGoogle Cloud 控制台监控迁移活动和状态的中心对象。迁移对象以 Kubernetes 自定义资源定义 (CRD) 的形式实现,并与 Kubernetes PersistentVolumeClaim 等其他资源一起包含在迁移计划中。

准备工作

  • 添加迁移来源
  • 查找虚拟机 (VM) 实例 ID,如以下部分所述。
  • 使用 Compute Engine 作为迁移来源时,请先停止来源虚拟机,然后再创建迁移。创建迁移对象后,您可以重启虚拟机。

查找虚拟机 ID

您可以通过浏览虚拟机清单或通过手动来查找虚拟机 ID,具体取决于来源类型。

使用虚拟机清单查找 ID

  • 使用 migctl 时,您可以通过发出以下命令来查看虚拟机列表:

    migctl source list-vms <name> [ --refresh ] [ --wide ]
    
  • 使用 Google Cloud 控制台时,浏览到来源类型,您将找到一个列出该类型所有虚拟机的表。

手动查找 ID

您可以按来源类型手动查找虚拟机 ID:

Compute Engine

VMware

  • vmId - 需要迁移的虚拟机的 ID 或名称(与来源平台上已知的内容相同)。 您可以使用下列值之一。

    • 虚拟机名称。如果您确信每个虚拟机名称在整个 VMware 部署中都是独一无二的,则使用简单的虚拟机名称即可。如果虚拟机名称可能重复,请使用下述虚拟机 ID。

      您可以从 vSphere Web 客户端获取虚拟机名称,如下图所示。

    • vSphere 中的虚拟机 ID(也称为 MoRef)。当选择虚拟机时,在 vSphere Web 客户端的网址中可以看到这一 ID。

      MoRef 包含在 vSphere 的网址中

      您也可以使用 PowerCLI 找到 MoRef。

命名要求

在 Migrate to Containers 中创建迁移时,您需要为迁移指定一个名称。名称必须符合以下要求:

  • 最多包含 63 个字符。
  • 只能包含小写字母数字字符或“-”(连字符)。
  • 以字母数字字符开头。
  • 以字母数字字符结尾。

支持的工作负载

创建迁移

Linux 和 Windows 工作负载

使用 migctl 工具或 Google Cloud 控制台创建迁移。

migctl

  1. 停止虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-src --vm-id my-id --type server-type

    其中,--vm-id 指定如来源类型控制台中所示的虚拟机实例的名称。其中 --type--type=windows-iis-containerlinux-system-container

控制台

  1. 如果迁移来源是 Compute Engine 虚拟机,请停止 Compute Engine 虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  3. 点击迁移标签页以显示包含可用迁移的表。

  4. 点击创建迁移

  5. 输入迁移名称

  6. 选择您在添加迁移来源中创建的迁移来源。

  7. 工作负载类型设置为基于映像的系统容器Windows IIS 容器

  8. 输入来源虚拟机 ID。如需详细了解如何确定虚拟机 ID,请参阅准备工作

  9. 点击创建迁移

    迁移创建完成后,状态列会显示已生成迁移计划

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,sourceProviderRef 下的 name 字段指定先前创建的 SourceProvider 的名称,sourceId 字段指定 Compute Engine 实例的名称。Type 将为 --type=windows-iis-containerlinux-system-container

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
     name: my-migration
     namespace: v2k-system
    spec:
     type: linux-system-container
     sourceSnapshotTemplate:
       spec:
         sourceProviderRef:
           name: my-ce-src
         sourceId: my-id
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

Tomcat 工作负载

指定 Tomcat 参数

您需要手动指定 CATALINA_BASECATALINA_HOME 的值。

migctl

  1. 停止 Compute Engine 虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-ce-src --vm-id my-id
    --type tomcat-container --parameters catalina-base=/catalina/base/path1:/catalina/base/path2,catalina-home=/catalina/home/path/,java-version=11
    
    • --vm-id 指定服务控制台中显示的实例名称。
    • catalina-base 指定以英文冒号分隔的 CATALINA_BASE 值列表。
    • catalina-home 指定 CATALINA_HOME 的值。
    • java-version 是可选参数,用于指定容器将使用的 Java 版本。

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,设置以下字段:

    • sourceProvider:指定先前创建的 SourceProvider 的名称。
    • sourceId:指定 Compute Engine 虚拟机实例的名称。
    • parameters:设置特定于 Tomcat 工作负载的参数。

    以下是设置了这些字段值的迁移文件的示例:

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
     name: my-migration
     namespace: v2k-system
    spec:
     type: tomcat-container
     sourceSnapshotTemplate:
       spec:
         sourceProviderRef:
           name: my-ce-src
         sourceId: my-id
         parameters:
         - name: catalina-base
           value: /opt/tomcat
         - name: catalina-home
           value: /opt/tomcat
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

WebSphere 传统工作负载

指定 WAS_HOME

WAS_HOME 环境变量指定 WAS 传统应用的安装位置,例如 /opt/IBM/WebSphere/AppServer/。当您创建迁移以运行提取应用的相关信息的脚本并确定应用配置文件的路径时,Migrate to Containers 会使用此值。 如果 Migrate to Containers 未能找到安装文件夹,您可以设置 WAS_HOME 的值。

migctl

  1. 停止虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-was-src --vm-id my-id
    --type websphere-traditional-container --parameters was-home=/opt/IBM/WebSphere/AppServer/
    

    其中 --vm-id 用于指定服务控制台中显示的实例的名称。

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,设置以下字段:

    • sourceProvider:指定先前创建的 SourceProvider 的名称。
    • sourceId:指定 Compute Engine 虚拟机实例的名称。
    • parameters:设置 WebSphere 工作负载的特定参数。

    以下是设置了这些字段值的迁移文件的示例:

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
     name: my-migration
     namespace: v2k-system
    spec:
     type: websphere-traditional-container
     sourceSnapshotTemplate:
       spec:
         sourceProviderRef:
           name: my-ce-src
         sourceId: my-id
         parameters:
         - name: was_home
           value: /opt/IBM/WebSphere/AppServer/
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

JBoss 工作负载

使用 migctl 工具或 Google Cloud 控制台创建迁移。

migctl

  1. 停止虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-src --vm-id my-id --type=jboss-container --parameters jboss-home=/opt/jboss

    其中,--vm-id 指定如来源类型控制台中所示的虚拟机实例的名称。

控制台

  1. 如果迁移来源是 Compute Engine 虚拟机,请停止 Compute Engine 虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  3. 点击迁移标签页以显示包含可用迁移的表。

  4. 点击创建迁移

  5. 输入迁移名称

  6. 选择您在添加迁移来源中创建的迁移来源。

  7. 工作负载类型设置为 JBoss 容器

  8. 输入来源实例名称。如需详细了解如何确定实例名称,请参阅准备工作

  9. 设置 JBOSS_HOME 参数,使用 JBoss 安装路径。

  10. 点击创建迁移

    迁移创建完成后,状态列会显示已生成迁移计划

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,sourceProviderRef 下的 name 字段指定先前创建的 SourceProvider 的名称,sourceId 字段指定 Compute Engine 实例的名称。对于 type 字段,请输入 jboss-container。您可以在 discoveryParameters 下添加发现参数列表。每个 discoveryParameters 参数都有 2 个属性:namevalue。创建 JBoss 迁移时,名为 jboss-homediscoveryParameters 参数是必需的(该参数指定 JBoss 主路径作为其 value)。

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
      name: my-migration
      namespace: v2k-system
    spec:
      type: jboss-container2
      discoveryParameters:
      - name: jboss-home
        value: /path-to-jboss-home
      sourceSnapshotTemplate:
        spec:
          sourceProviderRef:
            name: my-ce-src
          sourceId: my-id
    
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

Apache 工作负载

使用 migctl 工具或 Google Cloud 控制台创建迁移。

migctl

  1. 停止虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-src --vm-id my-id --type=apache-container

    其中,--vm-id 指定如来源类型控制台中所示的虚拟机实例的名称。

控制台

  1. 如果迁移来源是 Compute Engine 虚拟机,请停止 Compute Engine 虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  3. 点击迁移标签页以显示包含可用迁移的表。

  4. 点击创建迁移

  5. 输入迁移名称

  6. 选择您在添加迁移来源中创建的迁移来源。

  7. 工作负载类型设置为 Apache 容器

  8. 输入来源虚拟机 ID。如需详细了解如何确定虚拟机 ID,请参阅准备工作

  9. 点击创建迁移

    迁移创建完成后,状态列会显示已生成迁移计划

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,sourceProviderRef 下的 name 字段指定先前创建的 SourceProvider 的名称,sourceId 字段指定 Compute Engine 实例的名称。在 type 字段中,输入 apache-container

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
     name: my-migration
     namespace: v2k-system
    spec:
     type: apache-container
     sourceSnapshotTemplate:
       spec:
         sourceProviderRef:
           name: my-ce-src
         sourceId: my-id
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

WordPress 工作负载

使用 migctl 工具或 Google Cloud 控制台创建迁移。

migctl

  1. 停止虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 创建迁移:

    migctl migration create my-migration --source my-src --vm-id my-id --type=wordpress-container

    其中,--vm-id 指定如来源类型控制台中所示的虚拟机实例的名称。

控制台

  1. 如果迁移来源是 Compute Engine 虚拟机,请停止 Compute Engine 虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  2. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  3. 点击迁移标签页以显示包含可用迁移的表。

  4. 点击创建迁移

  5. 输入迁移名称

  6. 选择您在添加迁移来源中创建的迁移来源。

  7. 工作负载类型设置为 WordPress 容器

  8. 输入来源虚拟机 ID。如需详细了解如何确定虚拟机 ID,请参阅准备工作

  9. 点击创建迁移

    迁移创建完成后,状态列会显示已生成迁移计划

CRD

  1. 如需定义迁移,请创建一个名为 my-migration.yamlMigration 文件。

    在此文件中,sourceProviderRef 下的 name 字段指定先前创建的 SourceProvider 的名称,sourceId 字段指定 Compute Engine 实例的名称。在 type 字段中,输入 wordpress-container

    apiVersion: anthos-migrate.cloud.google.com/v1
    kind: Migration
    metadata:
     name: my-migration
     namespace: v2k-system
    spec:
     type: wordpress-container
     sourceSnapshotTemplate:
       spec:
         sourceProviderRef:
           name: my-ce-src
         sourceId: my-id
  2. 如果要迁移 Compute Engine 虚拟机,请停止该虚拟机。您必须先停止虚拟机,然后才能创建迁移。迁移完成后,您可以重启虚拟机。

  3. 应用此文件:

    kubectl apply -f my-migration.yaml

监控迁移创建过程

使用 migctl 工具或 Google Cloud 控制台监控创建迁移的进度。

migctl

  1. 等待迁移创建阶段结束:

    migctl migration status my-migration
    
    NAME           CURRENT-OPERATION      PROGRESS   STEP                   STATUS   AGE
    my-migration   GenerateMigrationPlan  [1/3]      CreateSourceSnapshots  Running  13s 
  2. 如果要迁移 Compute Engine 虚拟机,请先重启它。完成此步骤后无需停止虚拟机。

控制台

当迁移状态显示迁移已创建后,您可以继续执行下一步:

  1. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  2. 点击迁移标签页以显示包含可用迁移的表。

  3. 通过以下方式查看迁移状态:

    • 查看迁移对应的行的状态列。

    • 点击迁移名称。迁移详情页面随即打开。点击监控标签页查看详细状态,或点击事件标签页以查看迁移事件。

  4. 迁移创建完成后,状态将显示已生成迁移计划

  5. 如果要迁移 Compute Engine 虚拟机,请先重启它。完成此步骤后无需停止虚拟机。

CRD

使用 kubectl 通过指定必填字段的 JSONPath 来获取迁移信息和状态 MigrationStatus

  1. 等待迁移创建阶段结束:

    使用两个 kubectl wait 命令,一个用于等待“准备就绪”条件,另一个用于“失败”条件。迁移计划创建阶段会运行,直到满足第一个条件。

    unset pids; for cond in "Ready" "Failed"; do kubectl wait migrations.anthos-migrate.cloud.google.com my-migration -n v2k-system --for condition=$cond --timeout=15m & pids+=($!); done; wait -p met_pid -n ${pids[@]}
    kill ${pids[@]/$met_pid} # terminate the process that did not complete.
    

    等待命令完成后,操作已完成,您可以继续执行下一步。

  2. 获取迁移计划状态:

    kubectl get migrations.anthos-migrate.cloud.google.com -n v2k-system -o jsonpath={.status.conditions[?(@.type==\"Ready\")].status} my-migration

    如果迁移计划已准备就绪,则返回 True,如果迁移计划失败,则返回 False

  3. 如果迁移创建阶段失败,请使用以下命令获取错误消息:

    kubectl get migrations.anthos-migrate.cloud.google.com -n v2k-system  -o jsonpath={.status.conditions[?(@.type=="Ready")].message} my-migration

  4. 如果要迁移 Compute Engine 虚拟机,请先重启它。完成此步骤后无需停止虚拟机。

后续步骤