执行迁移
如需开始迁移虚拟机,您需要使用能够执行以下操作的命令:生成目标容器工件,并使用您在安装 Migrate to Containers 中创建的处理集群提取这些工件。
本主题介绍如何执行迁移以实现下列目的:
- 将虚拟机中的工作负载工件提取到容器映像和数据卷(适用于有状态工作负载)。
- 将虚拟机的容器映像复制到容器注册表中。
- 生成可用于生产部署的迁移部署工件。
完成此步骤后,您将能够执行以下操作:
在处理集群上测试映像和数据卷(适用于有状态工作负载)。
虽然您尚未将映像部署到单独的集群,但映像是可运行且可测试的。迁移完成后,映像并未与来源虚拟机关联。
将映像和数据卷(适用于有状态工作负载)部署到其他集群。
准备工作
为确保迁移成功,您应首先完成以下操作:
- 创建迁移以生成迁移计划。
- 根据工作负载类型自定义迁移计划:
执行迁移并生成工件
在处理虚拟机以进行迁移的过程中,使用 migctl migration generate-artifacts
命令或 Google Cloud 控制台生成目标容器工件。
migctl
执行迁移:
migctl migration generate-artifacts my-migration
获取迁移状态:
migctl migration status my-migration
控制台
打开 Google Cloud 控制台中的 Migrate to Containers 页面。
点击迁移标签页以显示包含可用迁移的表。
在所需的迁移对应的行中,选择后续步骤下拉列表中的生成工件。
通过以下方式查看迁移状态:
查看迁移对应的行的状态列。
点击迁移名称。系统会打开迁移详情标签页。点击监控标签页查看详细状态,或点击事件标签页以查看迁移事件。
当迁移状态是已生成工件时,您可以继续执行下一步。
CRD
Linux、Windows 和 Tomcat
在创建迁移时,使用在 Migration yaml 中指定的名称获取 AppXGenerateArtifactsFlow 的名称:
kubectl get migrations.anthos-migrate.cloud.google.com -n v2k-system my-migration -o jsonpath={.status.migrationPlanRef.name}
创建 AppXGenerateArtifactsTask
my-generate.yaml
文件以定义生成工件任务。在此文件中,
migration
指定创建迁移时的迁移名称,flow
表示您在上一步中获得的迁移的AppxGenerateArtifactsFlow
:apiVersion: anthos-migrate.cloud.google.com/v1beta2 kind: AppXGenerateArtifactsTask metadata: name: my-migration-task namespace: v2k-system spec: migration: name: my-migration flow: name: appx-generateartifactsflow-my-migration
应用此文件:
kubectl apply -f my-generate.yaml
在为工作负载生成工件时,Migrate to Containers 会写入工件,然后将其上传到 Cloud Storage 存储桶。工件目录文件包含:
- Dockerfile - 用于为迁移后的虚拟机构建映像的 Dockerfile。
deployment_spec.yaml
- 用于配置工作负载的 YAML 文件。secrets.yaml
- 包含敏感数据的 Secret YAML 文件也可能会添加到工件目录中。您可以将
kubectl apply
与此文件搭配使用,将工作负载部署到集群(例如生产集群或测试集群)。从来源中提取并供 Dockerfile 使用的目录和文件。
下载生成的工件
如需下载此嵌套目录中生成的容器工件,请运行以下命令:
migctl migration get-artifacts my-migration
根据插件和迁移计划,生成的工件包含一个或多个用于构建容器映像的 dockerfile,以及一个或多个 Kubernetes 部署规范。
此外,Migrate to Containers 会生成 Skaffold 配置,您只需一步即可快速构建和部署所有生成的映像。
后续步骤
- 了解如何监控迁移。