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

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

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

准备工作

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

在目标集群上部署

以下部分介绍了在集群上部署工作负载的可用选项。

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

如需确保目标集群可以访问 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 映像注册表的读取权限。

  2. 部署容器:

    kubectl apply -f deployment_spec.yaml

后续步骤