升级 Migrate to Containers 和插件

本文档介绍如何将当前安装的 Migrate to Containers 升级到 1.15.0 版,并将 Migrate to Containers 插件升级到最新版本。

您通常会在执行升级之前删除所有现有迁移。如果当前正在运行任何迁移,请等待这些迁移完成,然后再删除它们。但是,不要删除迁移来源。迁移来源会在升级过程中更新。

使用 migctl 执行升级

您使用的升级过程基于 migctl 的运行环境:

升级 Migrate to Containers

如需将旧版 Migrate to Containers 升级到版本 1.15.0,请执行以下操作:

  1. 连接到您的处理集群:

    Google Cloud 上的 migctl

    1. 访问 Google Cloud 控制台中的 GKE 菜单。

      访问 GKE 菜单

    2. 在集群列表中,找到用作处理集群的集群,然后点击其连接按钮。

    3. 连接到集群对话框的命令行访问权限下,点击在 Cloud Shell 中运行,从而在 Cloud Shell 中运行连接命令。

      gcloud container clusters get-credentials cluster-name --zone zone-name --project project-name
      

    Google Distributed Cloud Virtual for Bare Metal 上的 migctl

    1. 连接到您的集群。如需了解详情,请参阅通过 Google Cloud 控制台管理集群
  2. 检查任何现有迁移并将其删除:

    1. 列出当前迁移:

      migctl migration list
      
      NAME                STATUS      CURRENT-OPERATION
      my-migration        Completed   GenerateArtifacts
      another-migration   Running     GenerateMigrationPlan
    2. 使用以下命令逐个删除所有已完成的迁移:

      migctl migration delete my-migration
    3. 针对当前正在运行的任何迁移,重复上面的“步骤 a”并等待它完成。然后将其删除。

  3. 使用 migctl version 命令确定当前版本。例如:

    migctl version

    返回:

    Migrate to Containers version: 1.10.1
  4. 升级集群:

    Google Cloud 上的 migctl

    1. 升级到 1.15.0:

      1. 在 Cloud Shell 中,运行以下命令:

        migctl setup upgrade

        命令:

        • 卸载旧版 Migrate to Containers,然后安装 1.15.0 版。

        • 将现有的迁移来源升级到 1.15.0 版。

    Google Distributed Cloud Virtual for Bare Metal 上的 migctl

    1. 在管理员工作站上部署 migctl

      wget https://modernize-release.storage.googleapis.com/v1.15.0/linux/amd64/migctl
      sudo cp migctl /usr/local/bin/
      sudo chmod +x /usr/local/bin/migctl
      . <(migctl completion bash)
    2. 升级到 1.15.0:

      1. 运行升级:

        migctl setup upgrade --gkeop

        命令:

        • 卸载旧版 Migrate to Containers,然后安装 1.15.0 版。

        • 将现有的迁移来源升级到 1.15.0 版。

  5. 通过运行 migctl doctor 命令验证升级。

    升级完成之前,您可能会看到如下所示的消息。如果是这样,请等待几分钟,直到升级完成,然后再次运行 migctl doctor

    migctl doctor
    [✓] Deployment
      [✓] Admission Controller
      [!] Components
        Job controllers-deploy-cert is not ready
        Job controllers-upgrade is not ready
    

    以下示例输出中的对勾标记表示 Migrate to Containers 已成功升级。

    migctl doctor
    [✓] Deployment
    [✓] Docker registry
    [✓] Artifacts repo
    [✓] Source Status
    

    如果您要升级到 1.6 或更高版本,migctl doctor 现在会显示 Docker registryArtifacts repoSource Status 字段,其中:

  6. 升级完成后,您必须重新创建迁移以验证迁移来源已成功升级。请参阅创建迁移

升级 Migrate to Containers 插件

Migrate to Containers 使用插件来管理受支持工作负载的不同历程的现代化改造逻辑。如需使用最新版本的插件提供的功能,您需要升级插件,然后创建新的迁移。升级插件不会影响正在进行的迁移。

如需将插件升级到最新版本,请运行以下命令:

JOB_NAME=plugins-updater-NAME
kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
  name: $JOB_NAME
  namespace: v2k-system
spec:
  backoffLimit: 20
  template:
    spec:
      serviceAccountName: plugins-updater-sa
      containers:
      - name: plugins-updater
        image: us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/plugins-updater:latest
        imagePullPolicy: Always
      restartPolicy: OnFailure
EOF

NAME 替换为要添加到作业名称的字符串。

如需查看升级的状态,请运行以下命令:

kubectl get job -n v2k-system  plugins-updater-NAME

NAME 替换为您添加到作业名称的同一字符串。

输出会显示作业的状态,如下所示:

NAME                                COMPLETIONS   DURATION   AGE
plugins-updater-upgrade             1/1           12s        37s

如果您在应完成数列中看到 1/1,则表示作业已完成且插件已更新。

升级完成后,如需删除作业,请运行以下命令:

kubectl delete  job -n v2k-system  plugins-updater-NAME

NAME 替换为您添加到作业名称的同一字符串。

后续步骤