一种适用于跨kubernetes集群的应用迁移方法技术

技术编号:23890024 阅读:48 留言:0更新日期:2020-04-22 06:05
本发明专利技术涉及应用迁移技术领域,特别涉及一种适用于跨kubernetes集群的应用迁移方法。本发明专利技术方法包括如下步骤:1、原集群导出应用主体对象的编排文件;2、根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息;3、新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序;4、新集群创建迁入对象和应用外部访问信息。本发明专利技术解决了kubernetes集群迁移到另外一个集群时需要用原始的方法导出应用的yaml文件进行重新编排等问题;可以用于跨kubernetes集群的应用迁移。

【技术实现步骤摘要】
一种适用于跨kubernetes集群的应用迁移方法
本专利技术涉及应用迁移
,特别涉及一种适用于跨kubernetes集群的应用迁移方法。
技术介绍
随着Docker容器技术的发展和广泛流行,越来越多的应用采用Docker部署。为了让应用部署更加的便捷,以kubernetes为代表的容器编排技术得到迅速发展;各大云厂商也逐渐将kubernetes结合自身的云服务来支撑用户的应用部署。原生的kubernetes进行应用部署对用户的使用门槛是比较高的,用户要熟悉编写yaml编排文件的语法;因此第三方的产品(如rancher)会对kubernetes进行封装,提供图形化的界面和应用商店方便用户通过简单的配置实现应用的快速部署。然而,这些工具都局限于单个集群的新部署应用,当一个应用需要从一个kubernetes集群迁移到另外一个集群还是需要用原始的方法导出应用的yaml文件进行重新编排;但是一个应用通常依赖较多kubernetes的对象,并不是简单的导出一个配置文件重新执行就可以;普通的用户进行迁移还是会遇到较多的障碍;需要有一种迁移方法指导用户对应用进行完整迁移。
技术实现思路
本专利技术解决的技术问题在于提供一种适用于跨kubernetes集群的应用迁移方法;解决kubernetes集群迁移到另外一个集群时需要用原始的方法导出应用的yaml文件进行重新编排的问题。本专利技术解决上述技术问题的技术方案是:所述方法包括如下步骤:步骤1、原集群导出应用主体对象的编排文件;步骤2、根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息;步骤3、新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序;步骤4、新集群创建迁入对象和应用外部访问信息。所述的步骤1运用kubectl工具导出应用主体对象的编排文件。所述的步骤2的配置信息包括configMap和secretKey两类,configMap是普通的配置信息,secretKey是密码相关的加密信息;配置信息通过在env中找到secretKeyRef和configMapKeyRef,导出名字为pw和ur的两个对象实现。所述步骤3具体包括如下步骤:步骤31、确定存储迁移方案并更新应用主体对象的存储依赖信息;步骤32、检查所有迁入对象在新集群是否存在命名冲突;步骤33、形成最终迁入对象的配置文件并标注配置的执行顺序。所述步骤31通过应用主体对象编排文件查找应用依赖原集群的存储配置,如果新集群和原集群使用相同的存储资源则不修改存储配置,否则将容器挂载路径如/root/test对应的存储路径下的文件进行迁移。所述步骤32进行名字冲突检测;检测包括两部分:一是对象的名字,即每个对象的name属性;二是检测label和selector。所述步骤33对重名的name、selector和label涉及的配置文件进行更新,形成最终迁入对象的配置文件集合。采用本专利技术的跨kubernetes集群的应用迁移方法,用户只需要确保应用数据准确迁移和修改新集群的少量环境信息就可以完成应用的跨集群迁移。降低用户应用迁移的门槛,保障迁移应用的准确和完整且不影响现有应用的正常运行。附图说明下面结合附图对本专利技术进一步说明:图1是本专利技术方法流程图;图2是本专利技术新集群对迁入应用对象的处理流程图。具体实施方式图1是本专利技术实施例中跨kubernetes集群的应用迁移方法流程图。本专利技术的方法基本流程如下:S10:原集群导出应用主体对象的编排文件。Kubernetes中代表一个应用(工作负载)的对象主要包括:无状态应用(Deployment)、有状态应用(StatefulSet)、守护进程(DaemonSet)、作业(Job)和定时作业(CronJob)。当一个应用在kubernetes集群中处于正常运行状态时,可以通过查看对象的yaml接口获取应用的配置信息。但这种方式获取的配置信息通常带有当前集群运行的信息,比如应用的启动时间、当前环境的特定信息,这些信息直接在新集群运行通常是失败的。因此,我们借助kubectl工具的导出功能导出应用主体对象的编排文件可以避免环境信息的干扰。具体方法如下:kubectlgetdeploynginx-oyaml--export>my-deploy.yamldeploy:需导出应用的类型nginx:需导出的应用名称my-deploy.yaml:导出的编排文件名称S20:根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息。在kubernetes集群中通常一个应用的运行需要依赖多个kubernetes对象,单纯导出应用主体对象的编排文件到新集群运行通常是不完整和执行失败的。应用依赖的对象主要有三类:配置信息、存储信息和外部访问信息。其中,存储信息的迁移需要人工干预确保数据准确不丢失(参考步骤S30),外部访问信息由于不同集群网络配置会存在差异(参考步骤S40)。配置信息可以直接在原集群查找相应对象,用S10的方法导出yaml文件。应用依赖的配置主要有两类:configMap和secretKey,前者是普通的配置信息,后者是密码相关的加密信息。在应用中配置信息查找方法如下:在env中找到secretKeyRef和configMapKeyRef,导出名字为pw和ur的两个对象即可。S30:新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序。需要迁入的对象主要包括S10和S20导出的对象和应用依赖的存储信息,新集群可能是一个已经运行应用的集群,迁入前需要确保不影响原应用的正常运行。具体步骤如下:S31:确定存储迁移方案并更新应用主体对象的存储依赖信息。Kubernetes集群目前支持的存储包括:宿主机特定目录、云厂商的云盘(只能用于本厂商自己的Kubernetes集群)、主流文件系统(nfs,ceph等)。通过应用主体对象编排文件查找应用依赖原集群的存储配置,方法如下:查找容器的挂载点volumeMounts:-mountPath:/root/testname:testvol查找存储的配置信息volumes:-emptyDir:{}name:testvol新集群如果和原集群使用相同的存储资源则不需要修改这部分配置,否则需要将容器挂载路径如/root/test对应的存储路径下的文件进行迁移。可以采用直接读取文件的方式拷贝此路径下的所有文件到新的存储路径,也可以根据具体的存储类型,使用该类型特有的迁移方法快速准确进行迁移。迁移完成后更新应用主体对象的配置文件。S32:检测所有迁入对象在新集群是否存在命名冲突。需要对S10、S20、S31本文档来自技高网...

【技术保护点】
1.一种适用于跨kubernetes集群的应用迁移方法,其特征在于:所述方法包括如下步骤:/n步骤1、原集群导出应用主体对象的编排文件;/n步骤2、根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息;/n步骤3、新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序;/n步骤4、新集群创建迁入对象和应用外部访问信息。/n

【技术特征摘要】
1.一种适用于跨kubernetes集群的应用迁移方法,其特征在于:所述方法包括如下步骤:
步骤1、原集群导出应用主体对象的编排文件;
步骤2、根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息;
步骤3、新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序;
步骤4、新集群创建迁入对象和应用外部访问信息。


2.根据权利要求1所述的方法,其特征在于:所述的步骤1运用kubectl工具导出应用主体对象的编排文件。


3.根据权利要求1所述的方法,其特征在于:所述的步骤2的配置信息包括configMap和secretKey两类,configMap是普通的配置信息,secretKey是密码相关的加密信息;
配置信息通过在env中找到secretKeyRef和configMapKeyRef,导出名字为pw和ur的两个对象实现。


4.根据权利要求2所述的方法,其特征在于:所述的步骤2的配置信息包括configMap和secretKey两类,configMap是普通的配置信息,secretKey是密码相关的加密信息;

【专利技术属性】
技术研发人员:袁炯钟季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1