将 Linux 工作负载部署到目标集群

从来源平台迁移工作负载后,您可以使用该流程生成的部署工件将迁移的工作负载容器部署到其他集群。

Skaffold 可处理用于构建、推送和部署应用的工作流。如需了解详情,请参阅使用 Skaffold 构建和部署多个映像

准备工作

在部署工作负载之前,应先执行以下操作:

  • 使用 Migrate to Containers 工具迁移工作负载
  • 检查生成部署文件
  • 如果您运行的是旧版系统容器,则必须在集群上使用 migctl 安装旧版运行时支持:

    migctl setup install --runtime

在处理集群上部署工作负载

您可以将迁移后的工作负载部署在您用于执行迁移的同一集群上,此集群称为 Migrate to Containers 处理集群。在大多数情况下,您不必对处理集群执行任何额外配置,因为该集群已经是需要有 Docker 注册表的读写访问权限才能执行迁移。

在目标集群上部署并使用 GCR 作为 Docker 注册表

如需确保目标集群可以访问 Google Container Registry (GCR),请创建包含访问 GCR 所需的凭据的 Kubernetes Secret:

  1. 按照创建用于访问 Container Registry 和 Cloud Storage 的服务账号中所述,创建用于部署的服务账号。

    此过程允许您下载名为 m4a-install.json 的 JSON 密钥文件。

  2. 创建包含访问 GCR 所需的凭据的 Kubernetes Secret:

    kubectl create secret docker-registry gcr-json-key \
     --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/m4a-install.json)" \
     --docker-email=account@project.iam.gserviceaccount.com

    其中:

    • docker-registry 用于指定 Kubernetes Secret 的名称,在此示例中为 gcr-json-key
    • docker-server=gcr.io 用于将 GCR 指定为服务器。
    • docker-username=_json_key 用于指定 JSON 密钥文件中包含用户名。
    • docker-password 用于指定使用 JSON 密钥文件中的密码。
    • docker-email 用于指定服务账号的电子邮件地址。
  3. 使用以下任一方法设置 Kubernetes Secret:

    • 更改默认的 imagePullSecrets 值:

      kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'
    • 修改 deployment_spec.yaml 文件以将 imagePullSecrets 值添加到 spec.template.spec 定义中,如下所示:

      spec:
        containers:
        - image: gcr.io/PROJECT_ID/mycontainer-instance:v1.0.0
          name: mycontainer-instance
          ...
        volumes:
        - hostPath:
            path: /sys/fs/cgroup
            type: Directory
          name: cgroups
        imagePullSecrets:
        - name: gcr-json-key

在目标集群上部署并使用具有基本身份验证的 Docker 注册表

如果您使用 Docker 注册表来存储迁移映像,则注册表必须支持使用用户名和密码进行基本身份验证。您可以通过多种方式配置与 Docker 注册表的只读连接,因此您应该使用适合您的集群平台和 Docker 注册表的方法。

应用生成的部署 YAML 文件

使用 kubectl 将部署规范应用于目标集群,例如生产集群。

kubectl

  1. 确保目标集群具有 Docker 映像注册表的读取权限,如上文确保目标集群具有 Docker 映像注册表的读取权限中所述。

  2. 部署容器:

    kubectl apply -f deployment_spec.yaml
  3. 在对迁移的工作负载完成验证测试以确保迁移的工作负载能够正常运行后,您应删除迁移以释放资源。如需了解详情,请参阅删除迁移

删除迁移

在验证迁移后的工作负载并对其进行测试以确保它正常运行后,您应该删除该迁移。删除该迁移将释放迁移使用的所有资源。

migctl

  1. 使用以下命令删除已完成的迁移:

    migctl migration delete MIGRATION_NAME

    其中,MIGRATION_NAME 是迁移的名称。

控制台

  1. 打开 Google Cloud 控制台中的 Migrate to Containers 页面。

    前往 Migrate to Containers 页面

  2. 点击迁移标签页以显示包含可用迁移的表。

  3. 如需删除迁移,请点击表右侧的垃圾箱图标 ,然后选择删除迁移

后续步骤