本文以swarm-piggymetrics-cluster集群为例,为您介绍如何迁移该集群的配置,配置迁移主要包含创建Kubernetes集群、VPC网络互联互通验证、数据卷迁移、配置项迁移等操作。

前提条件

待迁移的Swarm集群已完成标准化改造。请参见标准化Swarm集群

背景信息

本文以swarm-piggymetrics-cluster集群为例,为您介绍如何迁移该集群的配置,配置迁移主要包含创建Kubernetes集群、VPC网络互联互通验证、数据卷迁移、配置项迁移等操作。

创建Kubernetes集群

基于已有Swarm集群(swarm-piggymetrics-cluster)创建一个Kubernetes集群,建议您创建Kubernetes 托管版集群。创建集群时,您需要注意以下情况:
  • 地域和可用区选择上,选择跟swarm-piggymetrics-cluster集群同地域同可用区,以保证像VPC网络这类无法跨地域的资源能正常迁移。
  • Kubernetes 集群只支持VPC网络,不支持经典网络。
    • 如果swarm-piggymetrics-cluster集群为VPC网络,请创建Kubernetes 托管版集群时共用swarm-piggymetrics-cluster集群的VPC网络。
    • 如果swarm-piggymetrics-cluster集群为经典网络,则需要做VPC网络迁移,详情参见混挂混访方案
      VPC网络迁移
  • 请创建Kubernetes 托管版集群时,请确保已安装云监控插件,方便后续灰度或切流时,可通过云监控平台查看ECS实例的监控信息。
  • 如果swarm-piggymetrics-cluster集群有使用阿里云日志服务,请创建Kubernetes 托管版集群时打开日志服务,并选择复用已有Project,避免需要重新迁移日志服务配置。
  • 如果swarm-piggymetrics-cluster集群有使用RDS云产品,请在创建Kubernetes 托管版集群时,选择对应的RDS白名单,避免出现网络权限问题。
    网络权限

迁移Node标签

如果swarm-piggymetrics-cluster集群有对 Node 节点打用户标签,并在应用配置里面通过用户标签指定Node 节点部署;则需要做 Node 用户标签的迁移。迁移过程如下:

  1. 查看Swarm 集群用户标签。
    1. 登录容器服务Swarm控制台,在左侧导航栏单击集群,在目标集群右侧单击管理

      集群管理
    2. 单击用户标签,在swarm-piggymetrics-cluster集群右侧可以看到对应的用户标签

      用户标签
  2. 在创建Kubernetes 托管版集群中对应 Node 节点打上同样的标签。
    1. 登录容器服务管理控制台,选择集群 > 节点,在节点列表右侧单击标签管理

      标签管理
    2. 标签管理页面,勾选目标节点,单击添加标签,填写标签的名称及值,单击确定

      添加标签

VPC互联互通验证

如果swarm-piggymetrics-cluster集群是经典网络,而创建Kubernetes 托管版集群是VPC网络,则可能访问RDS、OSS 这类产品时,出现网络不通的情况;其中RDS会有白名单限制(我们在上述创建Kubernetes 托管版集群时,已选择添加RDS白名单),而OSS本身则针对经典网络和VPC网络提供两个不同的访问域名,故需要在创建Kubernetes 托管版集群上进行网络连通性验证。

  1. 登录RDS控制台,单击目标实例,进入实例基本信息页面,单击左侧导航栏数据安全性,在白名单设置中,确认RDS白名单已添加成功。

    添加RDS白名单
  2. 单击数据库连接,在实例连接页签中,看到的内网地址即为RDS的VPC网络域名。

    VPC网络域名
  3. 登录ESC管理控制台,根据界面提示操作,确认网络连通性是否正常。

    网络连通性
    • 网络连通,进行下一步操作。
    • 网通不同,可能存在如下原因。
      网络不通
      • RDS白名单添加失败。并没有将当前创建Kubernetes 托管版集群的ECS实例添加到RDS的白名单列表中;您可以登录RDS控制台,在RDS实例 > 数据安全性上,设置访问白名单,具体参见设置白名单
        设置白名单
      • 其他问题请参见解决无法连接实例问题
      请排查并修改完成后,再登录ESC管理控制台,确保网络已连通后,进行下一步操作。
      网络连通
  4. 登录OSS 管理控制台,可以看到针对经典网络和VPC网络有各自对应的域名地址。

    域名地址
如果swarm-piggymetrics-cluster集群通过经典网络域名访问OSS的,后续需修改为通过VPC网络域名访问(后面集群数据卷迁移时也需要用到)。

数据卷迁移

Swarm数据卷,对应到 Kubernetes 的存储卷都是挂在集群维度下面的;所以,可按集群维度先统一做数据卷配置本身的迁移;当后面应用迁移时,只需做数据卷引用迁移即可。一个Swarm数据卷,对应到Kubernetes的存储卷PV和存储声明 PVC 两个概念。

Swarm数据卷支持NAS、云盘、OSS 三种类型,而这三种类型在中使用方式上均支持直接使用Volume方式使用 PV/PVC 两种方式来使用存储卷(详细参见存储管理概述),本文档中以使用 PV/PVC使用方式为示例。

  1. 登录容器服务Swarm控制台,在左侧导航栏单击数据卷,集群选择swarm-piggymetrics-cluster,在数据卷列表中分别找到NAS、云盘、OSS这三种类型的数据卷。

    数据卷列表
  2. 在创建的Kubernetes托管版集群中,依次创建这三类数据卷对应的存储卷PV和存储声明PVC。分别可以参见如下文档:
数据卷迁移说明
  • 因为云盘是阿里云存储团队提供的非共享存储,只能同时被一个pod挂载;若Swarm 和Kubernetes 一起写入会报错。因此,若在Swarm集群里面存在使用云盘的场景则无法做到不停机迁移,请选择切换到共享存储NAS/OSS或在业务低峰期做停机迁移。只有将云盘先从Swarm集群卸载之后,才能在Kubernetes集群里面挂载。云盘操作详见卸载数据盘查看或删除数据卷
  • Kubernetes集群中,数据卷名不支持大写字母和下划线;所以,如果数据卷名存在大写字母或下划线,请做如下统一转换:
    • 大写字母请转换为小写字母。
    • 下划线请转换为中划线。

    存储卷
  • 在创建OSS存储卷时,访问域名需要选择为vpc域名,因为Kubernetes只支持VPC网络。
    访问域名
  • 创建存储声明PVC,名称请默认与数据卷名一致(后面应用配置转换工具kompose工具会与此保持一致)。
    数据卷

配置项迁移

在Swarm里面,支持创建配置项,并通过配置参数传递配置,以方便对多个容器的环境变量进行统一管理,在应用发布时通过选择配置文件进而实现替换编排模板yaml文件里面的变量符$。

但是阿里云容器服务Swarm控制台提供的增强功能,在标准Kubernetes 里面并没有完全对应的功能实现。其中,Kubernetes集群的配置项实体与此有差异,暂无法实现自动迁移;只能在迁移应用配置概述章节,手动处理Swarm编排模板yaml文件里面的变量符$。