CN111045780A - 一种适用于跨kubernetes集群的应用迁移方法 - Google Patents
一种适用于跨kubernetes集群的应用迁移方法 Download PDFInfo
- Publication number
- CN111045780A CN111045780A CN201911078648.XA CN201911078648A CN111045780A CN 111045780 A CN111045780 A CN 111045780A CN 201911078648 A CN201911078648 A CN 201911078648A CN 111045780 A CN111045780 A CN 111045780A
- Authority
- CN
- China
- Prior art keywords
- cluster
- application
- immigration
- configuration
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及应用迁移技术领域,特别涉及一种适用于跨kubernetes集群的应用迁移方法。本发明方法包括如下步骤:1、原集群导出应用主体对象的编排文件;2、根据应用主体对象的编排文件抽取依赖对象,导出依赖对象的配置信息;3、新集群确定所有迁入对象的处理方法并形成迁入对象的最终配置文件和迁入顺序;4、新集群创建迁入对象和应用外部访问信息。本发明解决了kubernetes集群迁移到另外一个集群时需要用原始的方法导出应用的yaml文件进行重新编排等问题;可以用于跨kubernetes集群的应用迁移。
Description
技术领域
本发明涉及应用迁移技术领域,特别涉及一种适用于跨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工具的导出功能导出应用主体对象的编排文件可以避免环境信息的干扰。
具体方法如下:
kubectl get deploy nginx-o yaml--export>my-deploy.yaml
deploy:需导出应用的类型
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/test
name:testvol
查找存储的配置信息
volumes:
-emptyDir:{}
name:testvol
新集群如果和原集群使用相同的存储资源则不需要修改这部分配置,否则需要将容器挂载路径如/root/test对应的存储路径下的文件进行迁移。可以采用直接读取文件的方式拷贝此路径下的所有文件到新的存储路径,也可以根据具体的存储类型,使用该类型特有的迁移方法快速准确进行迁移。迁移完成后更新应用主体对象的配置文件。
S32:检测所有迁入对象在新集群是否存在命名冲突。
需要对S10、S20、S31最终确定的所有迁移对象在新集群进行名字冲突检测。检测包括两部分:一是对象的名字,即每个对象的name属性;二是检测label和selector,kubernetes通常使用label属性描述一个对象,使用selector将同一个应用的不同对象关联起来,以便于对应用的pod进行调度,如果selector重名了会影响到新集群原来应用的运行。
S33:形成最终迁入对象的配置文件并标注配置的执行顺序。
根据S32的检测结果,对重名的name、selector和label涉及的配置文件进行更新,形成最终迁入对象的配置文件集合。确定配置文件的执行顺序,通常是存储配置——应用配置——应用主体。
S40:新集群创建迁入对象和应用外部访问信息。
将S33的迁入对象的最终配置文件在新集群按指定的顺序运行,到此应用已基本在新集群建立起来。而此时应用还无法给外部访问,需要建立外部访问的对象,主要有服务(Service)和负载均衡(Ingress)。这两个对象在原集群也存在,但由于不同集群IP地址的规划和负载均衡服务都不一样,不能直接导出使用。需要根据新集群的环境信息新建对象。例如,新集群使用物理节点的30001端口访问应用的80端口配置如下:
确保selector与步骤S33确定的保持一致即可。
Claims (8)
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是密码相关的加密信息;
配置信息通过在env中找到secretKeyRef和configMapKeyRef,导出名字为pw和ur的两个对象实现。
5.根据权利要求1至4任一项所述的方法,其特征在于:所述步骤3具体包括如下步骤:
步骤31、确定存储迁移方案并更新应用主体对象的存储依赖信息;
步骤32、检查所有迁入对象在新集群是否存在命名冲突;
步骤33、形成最终迁入对象的配置文件并标注配置的执行顺序。
6.根据权利要求5所述的方法,其特征在于:所述步骤31通过应用主体对象编排文件查找应用依赖原集群的存储配置,如果新集群和原集群使用相同的存储资源则不修改存储配置,否则将容器挂载路径如/root/test对应的存储路径下的文件进行迁移。
7.根据权利要求5所述的方法,其特征在于:所述步骤32进行名字冲突检测;检测包括两部分:一是对象的名字,即每个对象的name属性;二是检测label和selector。
8.根据权利要求7所述的方法,其特征在于:所述步骤33对重名的name、selector和label涉及的配置文件进行更新,形成最终迁入对象的配置文件集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078648.XA CN111045780A (zh) | 2019-11-07 | 2019-11-07 | 一种适用于跨kubernetes集群的应用迁移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078648.XA CN111045780A (zh) | 2019-11-07 | 2019-11-07 | 一种适用于跨kubernetes集群的应用迁移方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111045780A true CN111045780A (zh) | 2020-04-21 |
Family
ID=70232252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911078648.XA Pending CN111045780A (zh) | 2019-11-07 | 2019-11-07 | 一种适用于跨kubernetes集群的应用迁移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045780A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760461A (zh) * | 2021-09-07 | 2021-12-07 | 新华智云科技有限公司 | 一种版本升级方法及计算机可读存储介质 |
WO2022111267A1 (en) * | 2020-11-25 | 2022-06-02 | International Business Machines Corporation | Anticipated containerized infrastructure used in performing cloud migration |
WO2022142900A1 (zh) * | 2020-12-29 | 2022-07-07 | 深圳云天励飞技术股份有限公司 | 一种数据流水编排方法、装置、存储介质及终端设备 |
CN116954870A (zh) * | 2023-09-19 | 2023-10-27 | 苏州元脑智能科技有限公司 | 跨集群应用的迁移方法、恢复方法、装置及集群系统 |
-
2019
- 2019-11-07 CN CN201911078648.XA patent/CN111045780A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022111267A1 (en) * | 2020-11-25 | 2022-06-02 | International Business Machines Corporation | Anticipated containerized infrastructure used in performing cloud migration |
US11748153B2 (en) | 2020-11-25 | 2023-09-05 | International Business Machines Corporation | Anticipated containerized infrastructure used in performing cloud migration |
GB2616578A (en) * | 2020-11-25 | 2023-09-13 | Ibm | Anticipated containerized infrastructure used in performing cloud migration |
WO2022142900A1 (zh) * | 2020-12-29 | 2022-07-07 | 深圳云天励飞技术股份有限公司 | 一种数据流水编排方法、装置、存储介质及终端设备 |
CN113760461A (zh) * | 2021-09-07 | 2021-12-07 | 新华智云科技有限公司 | 一种版本升级方法及计算机可读存储介质 |
CN113760461B (zh) * | 2021-09-07 | 2023-09-05 | 新华智云科技有限公司 | 一种版本升级方法及计算机可读存储介质 |
CN116954870A (zh) * | 2023-09-19 | 2023-10-27 | 苏州元脑智能科技有限公司 | 跨集群应用的迁移方法、恢复方法、装置及集群系统 |
CN116954870B (zh) * | 2023-09-19 | 2024-02-02 | 苏州元脑智能科技有限公司 | 跨集群应用的迁移方法、恢复方法、装置及集群系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111045780A (zh) | 一种适用于跨kubernetes集群的应用迁移方法 | |
US10797967B2 (en) | Managing service deployment | |
US20220100376A1 (en) | Storage system interface | |
US20050235248A1 (en) | Apparatus for discovering computing services architecture an developing patterns of computing services and method therefor | |
US9218197B2 (en) | Virtual machine image migration | |
CN106933508B (zh) | 应用容器的迁移方法及装置 | |
US7503042B2 (en) | Non-script based intelligent migration tool capable of migrating software selected by a user, including software for which said migration tool has had no previous knowledge or encounters | |
US11159390B2 (en) | Systems and methods for service-aware mapping of a system infrastructure | |
US10983904B1 (en) | Test automation for data processing | |
KR20160067180A (ko) | 가상 머신들을 관리하는 장치 및 방법 | |
US10922216B1 (en) | Intelligent automation test workflow | |
US20150347170A1 (en) | Grouping virtual machines in a cloud application | |
US20170371641A1 (en) | Multi-tenant upgrading | |
US11405266B2 (en) | Automatic configuration of virtual network functions | |
CN113434482A (zh) | 数据迁移方法、装置、计算机设备及存储介质 | |
US11144292B2 (en) | Packaging support system and packaging support method | |
CN109992501A (zh) | 小程序的可用性检查、可用小程序列表生成方法和装置 | |
US20160147547A1 (en) | Metadata-based class loading using a content repository | |
US11656977B2 (en) | Automated code checking | |
US10229005B2 (en) | Pattern based configuration method for minimizing the impact of component failures | |
CN107357691B (zh) | 镜像文件的处理方法及装置 | |
CN112052222A (zh) | 异构对象存储集群访问方法、装置、设备及存储介质 | |
CN109582347B (zh) | 一种获取前端代码的方法及装置 | |
US20150347402A1 (en) | System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace | |
US20220121745A1 (en) | Method and system for labeling object and generating security policy of operating system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |