SMC支持将源服务器迁移到容器镜像服务,实现低成本容器化应用迁移。容器的优势在于提高了资源利用率,降低了计算成本,自动化管理调度及低风险的快速部署。本文介绍源服务器迁移至容器镜像的操作步骤。

前提条件

  • 已确认迁移源的操作系统,Windows操作系统不支持迁移至容器镜像。
  • 已开通容器镜像服务并创建镜像仓库,详情请参见账号开通创建镜像仓库
  • 已创建SMC中转实例所需的RAM角色,配置信息如下所示,具体操作请参见创建可信实体为阿里云服务的RAM角色
    • 可信实体类型选择阿里云服务
    • 角色类型选择普通服务角色
    • 受信服务选择云服务器
  • 已创建满足容器镜像迁移的自定义策略。自定义策略如下所示,并且已为RAM角色授权该策略。具体操作请参见创建自定义策略为RAM角色授权
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:PushRepository",
                    "cr:PullRepository",
                    "cr:CreateRepository"
                ],
                "Resource": [
                    "*"
                ]
            }
        ],
        "Version": "1"
    }
  • 已将源服务器信息导入SMC控制台。具体步骤,请参见步骤一:导入迁移源
    注意 SMC客户端从2.3.0版本开始支持迁移至容器镜像,因此请使用2.3.0及以上版本客户端导入迁移源。点击 下载新版本客户端

背景信息

  • Docker容器镜像服务的基础知识请参见基本概念
  • 迁移任务运行期间会创建中转实例辅助迁移。中转实例会产生少量的费用,计费详情请参见按量付费
  • 当迁移任务为已完成(Finished)状态、已过期(Expired)状态或迁移任务被删除时,中转实例会自动清理释放。

操作步骤

  1. (可选)步骤一:过滤动态数据目录
  2. 步骤二:创建并启动迁移任务
  3. 步骤三:验证容器镜像

(可选)步骤一:过滤动态数据目录

为确保迁移更加稳定,建议您在迁移前,先排除动态数据目录(如大型数据库的数据目录等),等到业务暂停后再迁移。若无需过滤动态数据目录,可跳过本节步骤。

在源服务器系统业务不暂停的情况下,过滤掉源服务器系统的动态数据目录。具体步骤如下:

  1. 登录源服务器。
  2. 配置SMC客户端,排除动态数据目录。
    具体操作,请参见 排除不迁移的文件或目录

步骤二:创建并启动迁移任务

在源服务器系统业务不暂停的情况下,通过SMC控制台创建并启动迁移任务。具体步骤如下:

  1. 登录SMC控制台
  2. 在左侧导航栏,单击迁移源
  3. 选中待迁移的源服务器。
  4. 操作列,单击创建迁移任务
  5. 创建迁移任务页面,设置容器镜像相关配置项。
    容器镜像相关配置项说明如下。 其他配置项的设置,请参见 步骤二:创建并启动迁移任务中的配置项说明。
    • 目标镜像类型:选择容器镜像
    • 容器镜像命名空间:表示存放迁移生成的容器镜像仓库的命名空间。
    • 容器镜像仓库名称:表示存放迁移生成的容器镜像的仓库地址。
    • 容器镜像版本:表示存放迁移生成的容器镜像的版本信息。
    • 容器镜像RAM角色:表示绑定中转实例的实例角色。
    site
    迁移任务创建后立即开始执行。执行结果如下:
    • 当迁移任务状态为已完成(Finished),表示任务完成并得到最终的容器镜像。
    • 当任务状态为出错(InError),表示任务失败。您需要查看日志修复问题后,再次重启迁移任务。常见错误及修复方案,请参见SMC FAQ

步骤三:验证容器镜像

迁移成功获取到最终容器镜像后,您可以进行如下操作验证容器镜像。本操作以部署了Nginx环境的容器镜像为例。

  1. 创建容器服务集群,详情请参见创建Kubernetes专有版集群
  2. 登录容器服务管理控制台
  3. 在左侧导航栏,单击集群,查看您已经创建好的容器服务集群。
  4. 在相应容器服务集群的操作列,单击应用管理
  5. 无状态页签内,单击使用镜像创建进行无状态应用的创建。
    本文中的配置如下所示。未说明的配置项及具体操作请参见 使用镜像创建无状态Deployment应用
    • 应用基本信息页面。配置如下基本信息。
      • 应用名称:示例值nginx。
      • 副本数量:1。
      • 类型:选择无状态
      k8s
    • 容器配置页面。配置如下信息。
      • 镜像名称:单击选择镜像。选择迁移生成的容器镜像(容器镜像仓库和容器服务集群在同一地域时,可以使用容器镜像的VPC地址拉取镜像 )。
      • 镜像Tag:单击选择镜像Tag。选择迁移生成的容器镜像Tag。
      • 设置镜像密钥:如果您的容器镜像为私有镜像,则需要设置镜像密钥。也可以配置免密拉取,详情请参见使用免密组件拉取容器镜像
      • 端口:新增80端口。post
      • 启动执行:设置命令/sbin/initcmd
    • 高级配置页面,创建服务用于访问应用。

      本文配置信息如下图所示。

      server
  6. 创建完成后,单击查看应用详情。查看应用运行情况。
  7. 在左侧导航栏,单击服务,查看服务列表的外部端点地址。
    k8s server
  8. 通过本地浏览器访问外部端点地址。
    nginx