快速入门

在本快速入门中,您将创建一个简单的 Compute Engine 虚拟机 (VM),然后使用 Migrate for Anthos 将虚拟机迁移到云端中的 Google Kubernetes Engine (GKE) 处理集群。

您可以使用 migctl 工具或 Google Cloud Console 执行快速入门中的步骤。migctl 命令行工具用于在 Google Cloud 上设置和管理 Migrate for Anthos 迁移环境。migctlCloud Shell 中可用。

准备工作

启用对 Compute Engine 的支持

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册新帐号

  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Compute Engine API。

    启用 API

启用并配置 GKE

在开始之前,请确保您已执行以下任务:

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 选择默认的 Compute Engine 区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project PROJECT_ID
  • 如果您使用的是可用区级集群,请设置默认计算可用区
    gcloud config set compute/zone COMPUTE_ZONE
  • 如果您使用的是区域级集群,请设置默认计算区域
    gcloud config set compute/region COMPUTE_REGION
  • gcloud 更新到最新版本:
    gcloud components update

创建具有 Web 服务器的虚拟机

在接下来的步骤中,您将创建一个提供“Hello World!”网页的简单 Compute Engine 虚拟机。该网页会为您提供一些可在迁移后进行测试的内容。

  1. 运行以下命令以创建要迁移的虚拟机实例。

    指定一个可用区,在本主题的后面部分,您将在该可用区中创建 GKE 集群。

    gcloud compute instances create quickstart-instance \
      --project=project-id  --zone=zone --machine-type=n1-standard-1 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20210119a \
      --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \
      --boot-disk-device-name=quickstart-instance
    
  2. 运行以下命令以创建允许通过 HTTP 向该实例发送请求的防火墙规则。

    gcloud compute --project=project-id firewall-rules create default-allow-http \
      --direction=INGRESS --priority=1000 --network=default --action=ALLOW \
      --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
    
  3. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  4. 在虚拟机实例列表中,点击您刚刚创建的实例所在行中的 SSH。

    如需详细了解如何通过 SSH 进行连接,请参阅连接到实例

  5. 在 quickstart-instance 命令窗口中,使用软件包管理器安装 apache2 软件包。

    sudo apt-get update && sudo apt-get install apache2 -y
    

    安装 Apache 后,操作系统会自动启动 Apache 服务器。

  6. 在同一命令窗口中,使用以下命令覆盖 Apache Web 服务器的默认网页:

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. 虚拟机实例页面中,找到您创建的实例所在的行并复制外部 IP 地址。

  8. 将该实例的 IP 地址粘贴到您的浏览器地址栏中。为该地址加上 http:// 前缀。

    您现在应该会看到“Hello World!”页面。

  9. 虚拟机实例页面中,选中您创建的实例所在行左端的复选框。

  10. 在页面顶部,点击停止按钮以停止该虚拟机。

创建处理集群并安装 Migrate for Anthos

在以下步骤中,您将在 Cloud 中创建用作处理集群的 GKE 集群。您将在该集群中安装 Migrate for Anthos 并执行迁移。

  1. Cloud Shell 中,使用以下命令创建一个新的 Kubernetes 集群以用作处理集群。

    指定 machine-type 值时,请务必指定至少拥有 15 GB 内存的机器类型

    gcloud container clusters create migration-processing \
      --project=project-id --zone=zone --machine-type n1-standard-4 \
      --image-type ubuntu --num-nodes 1 --enable-stackdriver-kubernetes \
      --subnetwork "projects/project-id/regions/region/subnetworks/default"
    
  2. 安装 Migrate for Anthos。

    migctl

    如要使 Migrate for Anthos 能够访问 Container Registry 和 Cloud Storage,您必须创建一个具有 storage.admin 角色的服务帐号

    1. Cloud Shell 中, 创建 m4a-install 服务帐号:

      gcloud iam service-accounts create m4a-install \
        --project=PROJECT_ID
    2. storage.admin 角色授予服务帐号。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-install@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    3. 下载服务帐号的密钥文件:

      gcloud iam service-accounts keys create m4a-install.json \
        --iam-account=m4a-install@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    4. 连接到该集群。

      gcloud container clusters get-credentials migration-processing \
        --zone zone --project project-id
      
    5. Cloud Shell 中,使用 Migrate for Anthos 随附的 migctl 命令行工具在处理集群上设置 Migrate for Anthos 组件:

      migctl setup install --json-key=m4a-install.json
      
    6. 验证 Migrate for Anthos 安装。

      使用 migctl doctor 命令确认部署成功。

      migctl doctor
      

      该命令可能需要一分多钟的时间才能返回以下成功结果。

      [✓] Deployment
      

    控制台

    Google Cloud Console 可以通过生成必要的安装命令并在 Cloud Shell 中运行这些命令来帮助您完成安装过程。

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

      转到 Migrate for Anthos 页面

    2. 点击添加处理集群

    3. 从下拉列表中选择您之前创建的集群 migration-processing

    4. Cloud Shell 中执行每个命令,以执行以下操作:

      • 创建允许 Migrate for Anthos 访问 Container Registry 和 Cloud Storage 的服务帐号。
      • 安装 Migrate for Anthos 组件。
    5. 使用最后一个 Cloud Shell 命令来监控安装状态。

      安装完成之前,您可能会看到如下所示的消息。如果是这样,请等待几分钟,等安装完成后再重新运行 migctl doctor

      migctl doctor
      [!] Deployment
       validation job is in-progress
      

      以下示例输出中的对勾标记表示 Migrate for Anthos 已成功部署。

      migctl doctor
      [✓] Deployment
      
    6. 安装成功后选择完成

迁移虚拟机

在接下来的步骤中,您将创建一个包含迁移详细信息的迁移计划,然后使用该计划来迁移虚拟机。

  1. 将迁移来源指定为 Compute Engine 虚拟机。此步骤会将来源规范添加到迁移计划中。

    migctl

    如要将 Compute Engine 用作迁移来源,您必须首先创建具有 compute.viewercompute.storageAdmin 角色的服务帐号

    1. Cloud Shell 中, 创建 m4a-ce-src 服务帐号:

      gcloud iam service-accounts create m4a-ce-src \
        --project=PROJECT_ID
    2. compute.viewer 角色授予服务帐号。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.viewer"
    3. compute.storageAdmin 角色授予服务帐号。

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.storageAdmin"
    4. 下载服务帐号的密钥文件:

      gcloud iam service-accounts keys create m4a-ce-src.json \
        --iam-account=m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    5. 创建迁移来源:

      migctl source create ce quickstart-source --project project-id --json-key=m4a-ce-src.json
      

      其中,m4a-ce-src.json 指定您之前创建的服务帐号。

    控制台

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

      转到 Migrate for Anthos 页面

    2. 点击添加来源

    3. 从下拉列表中选择已安装 Migrate for Anthos 组件的集群。

    4. 点击下一步

    5. 将迁移的名称指定为 quickstart-source

    6. 来源类型设置为 Compute Engine

    7. 点击下一步

    8. 选择包含要迁移的虚拟机的项目。

    9. 通过选择创建新服务帐号来创建服务帐号,以便将 Compute Engine 用作迁移来源。系统会提示您输入新服务帐号的名称。

    10. 点击下一步

    11. 选择添加来源

  2. 创建迁移。

    migctl

    以下命令会创建一个定义了要迁移的内容的迁移计划。

    migctl migration create my-migration --source quickstart-source \
      --vm-id quickstart-instance --intent Image
    

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

    migctl migration status my-migration
    
    NAME           CURRENT-OPERATION      PROGRESS STEP                   STATUS   AGE
    my-migration   GenerateMigrationPlan  [1/3]    CreateSourceSnapshots  Running  13s

    控制台

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

      转到 Migrate for Anthos 页面

    2. 点击创建迁移

    3. 迁移名称设置为 migration

    4. 选择您在上一步中创建的迁移来源:quickstart-source

    5. 将来源虚拟机名称或 ID 设置为 quickstart-instance

    6. 迁移意图设置为 Image

    7. 点击创建迁移

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

  3. 查看迁移计划。

    在本快速入门中,您将只查看迁移计划。不过,您也可以对其进行修改。如需了解详情,请参阅自定义迁移计划

    migctl

    您必须下载迁移计划才能查看:

    1. 下载迁移计划:

      migctl migration get my-migration
      
    2. 在文本编辑器中打开下载的迁移计划 my-migration.yaml 以进行查看。

    3. 如果您进行了任何更改,请上传修改后的迁移计划(无需进行任何更改即可完成快速入门):

      migctl migration update my-migration --file my-migration.yaml
      

    控制台

    使用 YAML 编辑器在 Google Cloud Console 中查看迁移计划:

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

    2. 查看迁移计划。

    3. 点击右上角的“X”图标以关闭该计划而不进行修改。

  4. 使用迁移计划迁移虚拟机。

    此步骤将迁移虚拟机并生成可用于部署工作负载的工件。

    migctl

    migctl migration generate-artifacts my-migration
    

    控制台

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

      转到 Migrate for Anthos 页面

    2. 在所需的迁移对应的行中,选择后续步骤下拉列表中的生成工件

  5. 迁移开始后,检查迁移状态,直至迁移完成。

    迁移过程可能需要几分钟时间才能完成。在此期间,检查状态会报告迁移的当前状态。

    migctl

    migctl migration status my-migration
    

    迁移完成后,您应该会看到如下所示的消息:

    migctl migration status my-migration
    
    NAME            CURRENT-OPERATION       PROGRESS        STEP            STATUS    AGE
    my-migration    GenerateArtifacts       [1/1]           ExtractImage    Completed 14m23s

    控制台

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

      转到 Migrate for Anthos 页面

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

      • 点击迁移名称。迁移详情面板随即会打开,以显示迁移状态和其他信息。

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

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

部署迁移后的工作负载

在接下来的步骤中,您将获取在迁移过程中生成的部署工件,然后使用它们将迁移后的工作负载部署到集群。最后,您需要确认迁移后的应用可提供“Hello World!”网页。

  1. 迁移完成后,下载生成的 YAML 工件。

    migctl

    migctl migration get-artifacts my-migration
    

    控制台

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

      转到 Migrate for Anthos 页面

    2. 在所需的迁移对应的行中,选择选项下的查看工件

    3. 在右侧打开的面板中,分别下载每个工件。

    迁移过程中生成的已下载的工件文件包括:

    • deployment_spec.yaml - 用于配置工作负载的 YAML 文件。
    • Dockerfile - 用于为迁移后的虚拟机构建映像的 Dockerfile。
    • migration.yaml - 迁移计划的副本。
  2. 打开 deployment_spec.yaml 文件并找到名称为 quickstart-instanceService 对象。

  3. Service 定义下方,粘贴另一个 Service(该服务公开端口 80,用于对 Web 服务器的 HTTP 访问),然后保存该文件。

    粘贴突出显示的代码,以将以下内容添加到您的部署规范中。

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: quickstart-instance
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    

  4. 应用部署规范 YAML,以部署工作负载。

    kubectl apply -f deployment_spec.yaml
    

    部署过程可能需要几分钟时间才能完成。

  5. 检查是否有外部 IP 地址。

    kubectl get service hello-service
    

    当 Web 服务器准备就绪后,您会看到所添加 hello-service 的外部 IP 地址。

    kubectl get service hello-service
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   ##.##.###.##   80:32611/TCP   5m4s
    
  6. 通过以下方式测试迁移:打开浏览器并使用该外部 IP 地址访问网页(请务必使用 HTTP 而非 HTTPS)。

    http://##.##.###.##
    

您可以针对包含迁移后工作负载的容器执行 bash 命令。如需了解详情,请参阅“问题排查”主题

清理

为避免产生不必要的 Google Cloud 费用,请使用 Google Cloud Console 删除您不需要的项目。

后续步骤