快速入门

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

准备工作

启用对 Compute Engine 的支持

  1. 登录您的 Google 帐号。

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

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

    转到项目选择器页面

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

  4. 启用 Compute Engine API。

    启用该 API

启用并配置 GKE

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

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

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

使用 gcloud init

  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

使用网络服务器创建虚拟机

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

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

    请指定一个地区,以供在本主题后面部分创建 GKE 时使用。

    gcloud beta compute  --project=project-id instances create \
      quickstart-instance  --zone=zone --machine-type=n1-standard-1 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20200317 \
      --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

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

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

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

    gcloud container clusters create migration-processing --scopes="cloud-platform" \
      --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. 连接到该集群。

    gcloud container clusters get-credentials migration-processing \
      --zone zone --project project-id
    
  3. 在您的处理集群上设置 Migrate for Anthos 组件。

    migctl setup install
    
  4. 验证 Migrate for Anthos 安装。

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

    migctl doctor
    

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

    [✓] Deployment
    

迁移虚拟机

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

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

    migctl source create ce quickstart-source --project project-id --zone zone
    
  2. 创建迁移。

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

    migctl migration create my-migration --source quickstart-source \
      --vm-id quickstart-instance --intent Image
    
  3. 保存您刚刚修改的迁移计划。

  4. 迁移虚拟机,并使用该迁移计划来引导迁移过程。

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

    migctl migration generate-artifacts my-migration
    
  5. 迁移开始后,检查迁移状态,直至迁移完成。

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

    migctl migration status my-migration
    

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

    migctl migration status my-migration
    NAME           PROCESS              STATE       STATUS      PROGRESS   AGE
    my-migration   generate-artifacts   completed   COMPLETED   [15/15]    7m25s
    

部署迁移后的工作负载

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

  1. 迁移完成后,获取生成的 YAML 工件。

    migctl migration get-artifacts my-migration
    

    以下命令会下载在迁移过程中生成的文件:

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

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

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

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: app-quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: app-quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
    
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: 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 删除您不需要的项目。

后续步骤