自定义迁移计划

在继续执行迁移之前,您应该先检查创建迁移而生成的迁移计划文件,并对其进行自定义。迁移计划的详细信息将用于从来源虚拟机中提取工作负载容器工件,以及生成可用于将容器映像部署到其他集群(如生产集群)的 Kubernetes 部署文件。

本部分介绍迁移计划的内容以及在执行迁移和生成部署工件之前您可以考虑的自定义种类。

准备工作

修改迁移计划

使用 migctl 工具或 GCP Console 修改迁移计划。

migctl

您必须先下载迁移计划,然后才能对其进行修改:

  1. 下载迁移计划。迁移计划由 GenerateArtifactsFlow 表示:

    migctl migration get my-migration
    
  2. 在文本编辑器中修改下载的迁移计划 my-migration.yaml

  3. 修改完成后,上传修改后的迁移计划:

    migctl migration update my-migration --file my-migration.yaml
    
  4. 如果需要进行更多修改,请重复上述步骤。

控制台

使用 YAML 编辑器在界面中修改迁移计划。迁移计划由 GenerateArtifactsFlow 表示:

  1. 在 Cloud Console 中打开 Migrate for Anthos 页面。

    转到 Migrate for Anthos 页面

  2. 在所需的迁移对应的行中,选择后续步骤下拉列表中的查看和修改迁移计划

  3. 根据需要修改迁移计划。

  4. 修改完成后,您可以执行以下任意操作:

    1. 保存迁移计划。然后,您必须使用执行迁移中显示的步骤,手动执行迁移以生成迁移工件。

    2. 保存并生成工件。使用您的修改执行迁移,以生成迁移工件。该过程与执行迁移中所述的过程相同。然后,您可以按照监控迁移中的说明监控迁移。

CRD

您必须下载迁移计划,进行修改,然后应用。迁移计划由 GenerateArtifactsFlow 表示:

  1. 获取 GenerateArtifactsFlow 的名称:

    kubectl get migrations.anthos-migrate.cloud.google.com -n v2k-system my-migration -o jsonpath={.status.resources.generateArtifacts.name}

    系统会以 generate-artifacts-flow-id 格式返回名称。

  2. 按名称获取 GenerateArtifactsFlow 并写入名为 my-plan.yaml 的文件:

    kubectl get generateartifactsflows.anthos-migrate.cloud.google.com -n v2k-system generate-artifacts-flow-id -o yaml > my-plan.yaml
  3. 根据需要修改迁移计划。

  4. 应用此文件:

    kubectl apply -f my-plan.yaml

意图对迁移计划的影响

生成的迁移计划内容因您使用意图标志创建的迁移种类而异。

本主题介绍各个迁移计划部分的用途。每个部分都指示了哪个意图值与该部分中的 YAML 相关。如需详细了解如何使用意图标志,请参阅创建迁移

指定要从迁移中排除的内容

Intent:任何

默认情况下,Migrate for Anthos 会排除 GKE 环境中无关的典型虚拟机内容。您可以自定义该过滤条件。

filters 字段值会列出应从迁移中排除且不属于容器映像或数据卷的路径。 该字段的值列出了 rsync 过滤规则,这些规则指定要转移的文件以及要跳过的文件。在每个路径和文件前面加上减号可指定应从迁移中排除的列表项。系统会按照 YAML 中各行的顺序处理该列表,并相应地评估排除项/包含项。

如需了解详情,请参阅 rsync 手册页的“INCLUDE/EXCLUDE PATTERN RULES”部分

您可以修改此列表以添加或移除路径。

  global:
      # Files and directories to exclude from the migration, in rsync format
      filters:
      - "- *.swp"
      - "- /etc/fstab"
      - "- /boot/"
      - "- /tmp/*"
      - "- /var/log/*.log*"
      - "- /var/log/*/*.log*"
      - "- /var/cache/*"

设置对数据卷的处理

IntentDataImageAndData

dataVolumes 字段指定要在迁移过程中添加到数据卷中的文件夹列表。您必须为具有 DataImageAndData 意图的迁移修改此列表。

默认情况下,folders 包含您必须更改的占位符值。如果不更改占位符值,您会在生成迁移工件时收到错误,格式为 Replace the folder placeholder with the relevant path

        dataVolumes:

        # Folders to include in the data volume, e.g. "/var/lib/mysql"
        # Included folders contain data and state, and therefore are automatically excluded from a generated container image
        # Replace the placeholder with the relevant path and add more items if needed
        - folders:
          - <folders>

下面的示例展示了要包含在数据卷中的文件夹列表:

        - folders:
          - /var/lib/mysql
          - /my-data-folder

设置迁移的名称和命名空间

Intent:任何

您可以使用 metadata 字段指定迁移的名称和命名空间。默认情况下,Migrate for Anthos 会使用您在创建迁移时指定的值(您不应更改 kindapiVersion 值)。对于所有 intent 值,这些字段都是相同的。

  • name - 迁移的名称。
  • namespace - 在此 YAML 文件中定义的迁移的命名空间。 它应为 v2k-system
  apiVersion: anthos-migrate.cloud.google.com/v1beta2
  kind: GenerateArtifactsFlow
  metadata:
    name: generate-artifacts-flow-id
    namespace: v2k-system

设置容器映像的名称

IntentImageImageAndData

image 字段值定义从迁移后的虚拟机创建的两个映像的名称和位置。如果您希望使用其他名称,可以更改这些值。

在迁移期间,Migrate for Anthos 会默认将代表迁移的工作负载的文件和目录复制到 Container Registry,以供迁移时使用。迁移过程会将虚拟机提取的工作负载调整为可在 GKE 上运行的映像。

Migrate for Anthos 会将来自原始虚拟机的文件和目录保留在注册表的 base 路径下。此映像充当不可运行的基础层,其中包含提取的工作负载文件。该基础层随后将与 Migrate for Anthos 运行时软件层组合以构建可执行容器映像。

使用不同的层可让您根据需要对基础层或 Migrate for Anthos 软件层进行单独更新,从而简化了容器映像的后续更新。

此映像不可运行,但 Migrate for Anthos 可以在升级时从该原始映像更新容器。

basename 字段值指定将在注册表中创建的映像。

  • base - 将根据从来源平台复制的虚拟机文件和目录创建的映像的名称。此映像将不能在 GKE 上运行,因为它不适合在其中进行部署。
  • name - 将用于容器的可运行映像的名称。 此映像包含来自来源虚拟机的内容,以及 Migrate for Anthos 运行时(用于使该映像可运行)。
        image:
          # Review and set the name for extracted non-runnable base image
          base: "gcr.io/my-project/centos-mini-non-runnable-base:v1.0.0"

          # Review and set the name for runnable container image
          name: "gcr.io/my-project/centos-mini:v1.0.0"

为部署工件设置 Cloud Storage 位置

Intent:任何

在迁移过程中,Migrate for Anthos 使用 Cloud Storage 来存储稍后将用于在生产集群上部署虚拟机的文件。您可以更改存储分区和文件夹名称,以使用您自己的名称。

  • bucket - 用于存储工件的 Cloud Storage 存储分区的名称。
  • folder - bucket 中用于存储工件的文件夹的名称。
  • appName - 提供给 Kubernetes 控制器以在部署文件中使用的名称。根据您在创建迁移时为 intent 标志指定的值,控制器的类型会有所不同:
    • 对于 image-and-data 值,结果将是具有此名称的 StatefulSet 对象。
    • 对于 image 值,结果将是具有此名称的 Deployment 对象。
        deployment:

         # Review and set the app-name for your StatefulSet or Deployment YAML spec
         appName: app-centos-mini

         # Artifacts will be uploaded to the project-default artifacts repository.
         # In order to specify a custom repository, uncomment the lines below and replace the placeholders with the relevant values
         # artifactsRepository:
         #   spec:
         #     bucket: bucket_name
         #     credentials:
         #       type: gcs
         #       secret: secret

         folder: storage-folder-name/

配置永久性存储空间

IntentDataImageAndData

对于 DataImageAndData 迁移意图,迁移计划包含具有默认值的 pvc 定义。您可以更改这些值,以匹配您系统的需求。

   pvc:
     spec:
       accessModes:
       - ReadWriteOnce
       resources:
         requests:
         # Modify the required disk size on the storage field below based on the capacity needed
           storage: 10G

后续步骤