CN116541133A - 容器应用的纳管方法、其装置及电子设备 - Google Patents
容器应用的纳管方法、其装置及电子设备 Download PDFInfo
- Publication number
- CN116541133A CN116541133A CN202310819201.3A CN202310819201A CN116541133A CN 116541133 A CN116541133 A CN 116541133A CN 202310819201 A CN202310819201 A CN 202310819201A CN 116541133 A CN116541133 A CN 116541133A
- Authority
- CN
- China
- Prior art keywords
- container
- information
- container instance
- node
- instance
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 239000002071 nanotube Substances 0.000 title claims abstract description 73
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 abstract description 9
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Stored Programmes (AREA)
Abstract
本申请实施例涉及计算机领域,具体而言,提供了一种容器应用的纳管方法、其装置及电子设备,其中,该方法包括:获取与单节点环境对应的容器实例的信息;将容器实例的信息转换为集群环境下的工作负载的模板信息;根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。通过本申请,解决了相关技术中容器应用难以实现在线纳管的问题,进而达到了实现容器实例的在线纳管,提高运营效率和降低了运维成本的效果。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种容器应用的纳管方法、其装置、电子设备及计算机可读存储介质。
背景技术
容器技术以其轻量化、标准化等特性被越来越多的使用,通过单个节点部署一个容器运行时,即可实现容器化应用的部署。随着应用变得不断复杂以及分布式部署,通过手动去管理一个个节点的容器实例将变得异常困难。因此,出现了容器集群管理软件,能够将分散的节点进行统一管理,能够将容器应用在集中的管理端进行统一的分发及生命周期管理,使运维操作变得非常简单。
然而,对于已经部署的单个节点容器应用向集群管理模式转变将是一个新的问题。例如在边缘计算场景下,有些业务系统通过分阶段进行容器应用建设,首先通过单个的少量节点部署容器化应用,根据业务分批扩容容器节点,后期再进行统一管理。目前,通常是编写新的容器工作负载模板,销毁旧容器实例,基于新模板创建新的工作负载模式进行管理模块的切换,但是这样会导致容器应用的中断,从而对于一些无法停机的关键业务,难以通过在线的转换方式,实现其被容器集群管理系统所纳管。
发明内容
本申请实施例提供了一种容器应用的纳管方法、其装置、电子设备及计算机可读存储介质,以至少解决相关技术中容器应用难以实现在线纳管的问题。
根据本申请的一个实施例,提供了一种容器应用的纳管方法,应用于集群环境中,集群环境中部署有容器集群,该纳管方法包括:获取与单节点环境对应的容器实例的信息;将容器实例的信息转换为集群环境下的工作负载的模板信息;根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。
在一个示例性实施例中,获取与单节点环境对应的容器实例的信息,包括:获取与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息。
在一个示例性实施例中,容器实例信息包括:容器实例的编号,容器实例的镜像名称,容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,容器实例的环境变量,以及容器实例的配置文件。
在一个示例性实施例中,获取与单节点环境对应的容器实例的信息,还包括:在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,获取与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
在一个示例性实施例中,上述纳管方法还包括:根据多个已经运行的容器实例和与多个已经运行的容器实例对应的节点信息,构建树形结构文件,节点信息包括:容器集群的名称,与每个容器实例对应的单节点环境的节点名称,以及容器实例信息,其中,容器实例为容器实例信息的根节点,节点名称为容器实例的根节点,容器集群的名称为节点名称的根节点;存储树形结构文件。
在一个示例性实施例中,将容器实例的信息转换为集群环境下的工作负载的模板信息,包括:根据容器实例信息更新集群环境下的预设模板的信息,得到工作负载的模板信息。
在一个示例性实施例中,根据容器实例信息更新集群环境下的预设模板的信息,得到工作负载的模板信息,包括:根据容器实例信息中的目标信息,替换预设模板中的预设信息,其中,目标信息包括:容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,以及容器实例的环境变量;将更新容器镜像的地址添加到预设模板中;将配置文件的路径和配置文件的内容以键值对的形式添加到预设模板的信息中;将根据容器实例的编号生成的注解信息以及容器实例的节点名称添加至预设模板中。
在一个示例性实施例中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还包括:将容器实例的节点名称添加至工作负载的模板中。
在一个示例性实施例中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还包括:在工作负载的模板信息中添加与单节点环境对应的第一标签,其中,第一标签用于表示单节点环境的主机名称。
在一个示例性实施例中,将容器实例的信息转换为集群环境下的工作负载的模板信息,包括:为多个容器实例赋予第二标签;将具有第二标签的容器实例的信息转换为集群环境下的同一个工作负载的模板信息。
在一个示例性实施例中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还包括:在顺序获取与多个单节点环境对应的多个容器实例的信息的情况下,判断在先获取的第一容器实例的信息对应的原始容器镜像与在后获取的第二容器实例的信息对应的原始容器镜像是否相同;在判断结果指示多个原始容器镜像相同的情况下,获取与第一容器实例的信息对应的第一工作负载的模板信息;根据第二容器实例的信息,以副本形式更新第一工作负载的模板信息。
在一个示例性实施例中,根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,包括:根据单节点环境,生成容器集群中的目标计算节点;将容器实例的信息调度至目标计算节点上,并将工作负载的模板信息传递至单节点环境中的本地管理组件。
在一个示例性实施例中,根据单节点环境,生成容器集群中的目标计算节点,包括:获取与单节点环境对应的注册请求;根据注册请求,生成容器集群中的目标计算节点,目标计算节点用于调度与单节点环境对应的容器实例。
在一个示例性实施例中,根据注册请求,生成容器集群中的目标计算节点,包括:获取与单节点环境对应的机器码;根据注册请求,在容器集群中生成以机器码为节点名称的目标计算节点。
在一个示例性实施例中,上述纳管方法还包括:根据容器实例的运行状态,将容器集群中与容器实例对应的容器应用的状态更新为运行。
根据本申请的另一个实施例,提供了一种容器应用的纳管方法,应用于单节点环境中,该纳管方法包括:收集与单节点环境对应的容器实例的信息;上传容器实例的信息至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中;根据工作负载的模板信息创建容器实例。
在一个示例性实施例中,收集与单节点环境对应的容器实例的信息,包括:收集与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息;通过容器镜像创建与容器实例的信息对应的容器镜像;将容器镜像上传至集群环境中的镜像仓库中。
在一个示例性实施例中,通过容器镜像创建与容器实例的信息对应的容器镜像,包括:在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,创建与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
在一个示例性实施例中,根据工作负载的模板信息创建容器实例,包括:根据工作负载的模板信息,生成目标容器实例的创建请求;根据创建请求,判断与目标容器实例对应的容器应用是否为已纳管的容器应用;在判断结果指示为与目标容器实例对应的容器应用为已纳管的容器应用的情况下,拦截目标容器实例;根据工作负载的模板信息创建目标容器实例;将目标容器实例的运行状态上报至集群管理组件。
在一个示例性实施例中,工作负载的模板信息包括至少一个容器实例的编号,根据创建请求,判断与目标容器实例对应的容器应用是否为已纳管的容器应用,包括:判断至少一个容器实例的编号是否包括目标容器实例的编号;在判断结果指示为包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为已纳管的容器应用;在判断结果指示为不包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为未纳管的容器应用。
根据本申请的另一个实施例,提供了一种容器应用的纳管装置,应用于集群环境中,集群环境中部署有容器集群,该纳管装置包括:获取模块,用于获取与单节点环境对应的容器实例的信息;转换模块,用于将容器实例的信息转换为集群环境下的工作负载的模板信息;调度模块,用于根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。
根据本申请的另一个实施例,提供了一种容器应用的纳管装置,应用于单节点环境中,该纳管装置包括:收集模块,用于收集与单节点环境对应的容器实例的信息;上传模块,用于上传容器实例的信息至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下的工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中;创建模块,用于根据工作负载的模板信息创建容器实例。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于在获取到单节点环境中容器实例信息之后,先将容器实例的信息转换成集群环境下的工作负载的模板信息,从而可以通过模板信息定向调度到原来的单节点环境,使得单节点环境中的本地管理组件使用已有容器实例进行工作负载的创建,得到容器实例的运行状态,进而完成容器实例的在线纳管,因此,可以解决相关技术中容器应用难以实现在线纳管的问题。进一步地,上述方法能够将分散的容器节点加入集群,进行统一管理,同时可以将容器节点上的容器应用纳管到集群中,进行统一展示和生命周期管理,达到了提高运营效率和降低了运维成本的效果。
附图说明
图1是根据本申请实施例提供的一种容器应用的纳管方法的流程图;
图2是根据本申请实施例提供的一种容器应用的纳管方法中应用的技术架构图;
图3是根据本申请实施例提供的一种容器应用的纳管方法中根据容器实例信息构建的树形结构的示意图;
图4是根据本申请实施例提供的另一种容器应用的纳管方法的流程图;
图5是根据本申请实施例的一种容器应用的纳管装置的结构框图;
图6是根据本申请实施例的另一种容器应用的纳管装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
容器;容器是一种基于操作系统的资源隔离技术,将操作系统共享的资源划分到不同的组中,以提供一个相对隔离的运行环境,达到避免各种依赖冲突的效果。
容器应用:容器应用是基于容器隔离环境部署的应用,一个容器应用可能由多个容器实例组成,在单节点环境时,一个容器应用指的是单个容器实例,在集群环境下一个容器应用一般指的是一个工作负载。
容器集群:容器集群是部署有相同容器管理组件,并且具有相同的控制节点的,能够被统一管理的一组节点。
Kubernetes:简称K8s,是一种开源的容器集群管理系统和容器应用编排引擎,主要功能是自动化部署容器应用和容器应用的生命周期管理,基于Kubernetes可以搭建容器集群。
工作负载:容器集群编排引擎中对容器应用的抽象,包括一个或者多个容器实例。
Pod:Kubernetes容器编排引擎中的资源对象,是一组容器实例的集合,是容器集群管理系统中最小的调度单元。
在本实施例中提供了一种容器应用的纳管方法,图1是根据本申请实施例的容器应用的纳管方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,获取与单节点环境对应的容器实例的信息;
步骤S104,将容器实例的信息转换为集群环境下的工作负载的模板信息;
步骤S106,根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。
通过上述步骤,由于在获取到单节点环境中容器实例信息之后,先将容器实例信息转换成工作负载的模板信息,从而可以通过模板信息定向调度到原来的单节点环境,使得单节点环境中的本地管理组件使用已有容器实例进行工作负载的创建,得到容器实例的运行状态,进而完成容器实例的在线纳管,因此,可以解决相关技术中容器应用难以实现在线纳管的问题。进一步地,上述方法能够将分散的容器节点加入集群,进行统一管理,同时可以将容器节点上的容器应用纳管到集群中,进行统一展示和生命周期管理,达到了提高运营效率和降低了运维成本的效果。
本实施例可以将单节点环境中已存的容器应用纳管到容器集群环境中,从而实现在容器应用不停机的情况下进行自动化纳管,达到了单节点环境向集群环境升级的同时,容器应用一并升级的效果,大大降低IT系统升级成本。
上述步骤S102中,获取与单节点环境对应的容器实例的信息。
在一个示例性实施方式中,获取与单节点环境对应的容器实例的信息,包括:获取与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息。
具体地,集群环境中部署有集群管理组件10,单节点环境中部署有本地管理组件20,如图2所示的步骤,集群管理组件10接收本地管理组件20的注册请求,注册完成后,当前节点变为容器集群的一个计算节点,能够将容器实例调度到该计算节点。如图2所示的步骤/>,单节点环境中可以部署有收集器30和容器运行时相关的组件(runc)40,容器运行时相关的组件40可以直接用于创建和运行容器,上述收集器30可以用于收集本地节点信息和通过容器运行时相关的组件40已经运行的容器实例信息,上述容器实例信息包括具有所有运行的容器实例的编号列表以及每个容器实例信息。
在上述示例性实施方式中,容器实例信息可以包括:容器实例的编号,容器实例的镜像名称,容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,容器实例的环境变量,以及容器实例的配置文件。
具体地,每个容器实例信息可以包括编号(Identity Document,ID)、镜像名称、CPU大小、内存大小、挂载卷信息、网络端口、环境变量和配置文件等信息。针对容器应用的配置文件,容器实例可以写入到容器镜像内部,收集信息时可以按照容器内部具体的配置文件路径,通过容器内执行文件输出命令获取具体配置文件名称和文件内容信息。本地容器实例可以为容器运行时相关的组件通过本地的容器镜像进行创建,从而收集到的每个容器实例信息中也包括相应的镜像名称。
在一个示例性实施方式中,获取与单节点环境对应的容器实例的信息,还包括:在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,获取与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
具体地,如图2所示的步骤,单节点环境中可以部署有本地管理组件20、收集器30和容器运行时相关的组件40,集群环境中可以部署有集群管理组件10和镜像仓库50,容器运行时相关的组件40通过本地的容器镜像创建本地容器实例,由于通过集群管理组件10创建集群环境下的容器应用需要指定镜像仓库50中容器镜像,从而可以将本地镜像上传到镜像仓库50中。单节点环境中可能会存在容器实例内部内容被修改的情况,此时,可以使用容器实例进行快照操作,将快照保存为最新的容器镜像,而对于未被修改的容器实例,快照操作后得到的是原始镜像,通过将原始镜像和最新镜像同时上传到镜像仓库50,可以在创建容器应用时默认使用最新镜像,而将原始镜像作为历史版本归档,在需要对容器应用回滚时再使用原始镜像。
在一个示例性实施方式中,上述纳管方法还包括:根据多个已经运行的容器实例和与多个已经运行的容器实例对应的节点信息,构建树形结构文件,节点信息包括:容器集群的名称,与每个容器实例对应的单节点环境的节点名称,以及容器实例信息,其中,容器实例为容器实例信息的根节点,节点名称为容器实例的根节点,容器集群的名称为节点名称的根节点;存储树形结构文件。
具体地,如图3所示,本地节点收集时,以节点名称(节点名称1-节点名称2)为根节点,节点名称的子节点为一个个的容器实例(容器实例1-容器实例4),容器实例的子节点为具体的容器属性及信息,可以包括编号(ID)、镜像名称、CPU大小、内存大小、挂载卷信息、网络端口、环境变量和配置文件等信息,容器实例信息传输到集群环境中的转换器后,以集群名称为根节点,将节点名称作为二级节点接入到整个树形结构中,从而将容器实例信息以树形结构进行存储。
在上述步骤S104中,将容器实例的信息转换为集群环境下的工作负载的模板信息。具体地,如图2所示的步骤④,集群环境中可以部署有转换器60,通过集群环境中的转换器60接收单节点环境中的收集器30收集的节点信息和容器实例信息,转换器60将单节点环境中收集的容器实例信息转换为容器集群环境可以识别的模板。
在一个示例性实施方式中,将容器实例的信息转换为集群环境下的工作负载的模板信息,包括:根据容器实例信息更新集群环境下的预设模板的信息,得到工作负载的模板信息。
在上述示例性实施方式中,根据容器实例信息更新集群环境下的预设模板的信息,得到工作负载的模板信息,可以包括:根据容器实例信息中的目标信息,替换预设模板中的预设信息,其中,目标信息包括:容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,以及容器实例的环境变量;将更新容器镜像的地址添加到预设模板中;将配置文件的路径和配置文件的内容以键值对的形式添加到预设模板的信息中;将根据容器实例的编号生成的注解信息以及容器实例的节点名称添加至预设模板中。
具体地,通过添加部分容器实例信息到预设模板的信息中,使容器实例的信息与转换后的工作负载的模板信息中,CPU、内存、卷目录、网络端口、环境变量可以与直接一一对齐。将新上传的容器镜像仓库中的最新镜像地址添加到预设模板中,以及将获取的配置文件路径以及配置文件内容转换为集群环境中的配置资源对象,以关键字(Key)和值(Value)的键值对形式填入上述配置文件路径以及配置文件内容。并且,可以将容器实例ID信息以可扩展的注解信息添加到预设模板中,用以在创建容器实例时进行使用。
在上述示例性实施方式中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还可以包括:将容器实例的节点名称添加至工作负载的模板中。具体地,可以将当前节点名称添加到工作负载的模板的调度节点列表中,用以创建流程中该容器实例会调度到当前的单节点环境。
在一个示例性实施方式中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还包括:在工作负载的模板信息中添加与单节点环境对应的第一标签,其中,第一标签用于表示单节点环境的主机名称。
具体地,将容器实例信息转换为集群管理组件可以识别的模板信息,将容器应用以集群环境中工作负载模板信息的形式通过集群管理组件进行再次下发至单节点环境,在下发前,可以为转换后的工作负载模板添加代表该单节点环境的主机名称的标签,保证应用调度时可以再次调度到容器实例所在节点。
在一个示例性实施方式中,将容器实例的信息转换为集群环境下的工作负载的模板信息,包括:为多个容器实例赋予第二标签;将具有第二标签的容器实例的信息转换为集群环境下的同一个工作负载的模板信息。
具体地,在将容器实例的信息转换为集群环境下的工作负载的模板信息时,可以指定多个容器实例具有相同标签,即代表为一个整体,封装到集群环境下的一个工作负载模板中,从而可以满足资源共享要求。
在一个示例性实施方式中,将容器实例的信息转换为集群环境下的工作负载的模板信息,还包括:在顺序获取与多个单节点环境对应的多个容器实例的信息的情况下,判断在先获取的第一容器实例的信息对应的原始容器镜像与在后获取的第二容器实例的信息对应的原始容器镜像是否相同;在判断结果指示多个原始容器镜像相同的情况下,获取与第一容器实例的信息对应的第一工作负载的模板信息;根据第二容器实例的信息,以副本形式更新第一工作负载的模板信息。
具体地,当有多个单节点环境上报容器实例信息时,如果不同容器实例信息的原始容器镜像相同,即哈希值(hash值,又称散列函数或哈希函数)相同,则自动添加到已有的工作负载模板中,以多副本形式更新工作负载的模板,继续进行后续的调度流程,从而可以将相同的容器实例进行统一的进行更新、回滚等一致操作。
在上述步骤S106中,根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。
具体地,如图2所示的步骤⑤,集群环境中的集群管理组件10可以使用通过转换器60转换后的模板进行工作负载创建,如图2所示的步骤⑥,集群管理组件10可以根据模板信息中调度节点名称定向将容器实例调度到单节点环境中,并将模板信息传递给单节点环境中的本地管理组件20。
在一个示例性实施方式中,根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,包括:根据单节点环境,生成容器集群中的目标计算节点;将容器实例的信息调度至目标计算节点上,并将工作负载的模板信息传递至单节点环境中的本地管理组件。
在上述示例性实施方式中,根据单节点环境,生成容器集群中的目标计算节点,可以包括:获取与单节点环境对应的注册请求;根据注册请求,生成容器集群中的目标计算节点,目标计算节点用于调度与单节点环境对应的容器实例。
具体地,单节点环境中部署有本地管理组件,本地管理组件向集群管理组件进行注册,注册完成后,当前节点变为容器集群的一个计算节点,能够将容器实例调度到该计算节点。
在上述示例性实施方式中,根据注册请求,生成容器集群中的目标计算节点,可以包括:获取与单节点环境对应的机器码;根据注册请求,在容器集群中生成以机器码为节点名称的目标计算节点。
具体地,节点注册时通过使用单节点环境中的机器码作为节点名称注册到集群系统,可以避免单节点环境可能出现的名称重复问题。
在一个示例性实施方式中,本实施例中的纳管方法还包括:根据容器实例的运行状态,将容器集群中与容器实例对应的容器应用的状态更新为运行。
具体地,单节点环境中部署的本地管理组件正常创建流程会直接调用容器运行时创建容器实例,单节点环境中可以以插件形式添加一个拦截器70,该拦截器70能够截取本地管理组件20的正常创建容器实例请求,如图2中的步骤⑦,拦截器70可以根据模板信息中是否存在请求创建的容器实例ID,判断是新建容器实例还是纳管已有容器。如图2的步骤⑧,如果存在容器实例ID,去容器运行时相关的组件40查询已经存在的容器实例,否则新建一个容器实例,将容器实例信息返回给拦截器70。如图2中的步骤⑨,拦截器70将容器实例信息返回给本地管理组件20,然后通过集群管理组件10接收本地管理组件20上报的基于模板信息创建的容器实例的运行状态。至此,在不需要中断原有业务的前提下,完成了容器实例的纳管。
下面将以Kubernetes(K8s)为例,对本实施例中容器应用的纳管方法进行具体实施流程的说明,实施流程包括:
单节点环境中部署有容器集群的本地管理组件,对应着Kubernetes系统中的Kubelet组件,本地管理组件在集群环境中将当前节点注册成为Kubernetes集群的一个计算节点。单节点环境中还部署有以容器化方式安装的收集模块,容器实例运行在本地的容器运行时相关的组件中,收集模块收集容器实例信息,集群环境中部署的转换模块以节点为单位接收收集完成的容器实例信息。
将转换器部署到集群环境中,对应着Kubernetes中的Deployment工作负载,将Deployment工作负载对外暴露一个访问地址,供收集模块发送数据使用。转换器在接收到容器实例信息后,将容器实例信息转换为集群系统模板,对应着Kubernetes的Deployment工作负载模板,得到模板后,将模板应用到Kubernetes系统中,即创建一个集群模式的容器应用。
单节点环境中以二进制形式启动一个操作系统服务,用以代理本地管理组件下发给容器运行时的请求,本地管理组件对应着Kubernetes中Kubelet。在Kubelet和CRI-Docker中间实现一个代理,在单节点环境中,本地管理组件下发带有容器实例ID标签的创建请求进行容器实例信息查询,没有带有ID标签的创建请求按照原始Kubelet流程转发给CRI-dockerd进行容器实例创建,查询或创建的容器实例信息返回至Kubelet。
在本实施例中提供了另一种容器应用的纳管方法,图4是根据本申请实施例的容器应用的纳管方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,收集与单节点环境对应的容器实例的信息;
步骤S404,上传容器实例的信息至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下的工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中;
步骤S406,根据工作负载的模板信息创建容器实例。
通过上述步骤,由于在收集完成单节点环境中容器实例信息之后,先将容器实例的信息上传至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,从而使单节点环境可以接收到上述容器实例的信息,单节点环境中的本地管理组件能够使用已有容器实例进行工作负载的创建,得到容器实例的运行状态,进而完成容器实例的在线纳管,因此,可以解决相关技术中容器应用难以实现在线纳管的问题。进一步地,上述方法能够将分散的容器节点加入集群,进行统一管理,同时可以将容器节点上的容器应用纳管到集群中,进行统一展示和生命周期管理,达到了提高运营效率和降低了运维成本的效果。
本实施例可以将单节点环境中已存的容器应用纳管到容器集群环境中,从而实现在容器应用不停机的情况下进行自动化纳管,达到了单节点环境向集群环境升级的同时,容器应用一并升级的效果,大大降低IT系统升级成本。
上述步骤S402中,收集与单节点环境对应的容器实例的信息。
在一个示例性实施方式中,收集与单节点环境对应的容器实例的信息,包括:收集与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息;通过容器镜像创建与容器实例的信息对应的容器镜像;将容器镜像上传至集群环境中的镜像仓库中。
具体地,集群环境中部署有集群管理组件10,单节点环境中部署有本地管理组件20,如图2所示的步骤,本地管理组件20向集群管理组件10进行注册,注册完成后,当前节点变为集群的一个计算节点,能够将容器实例调度到该计算节点。如图2所示的步骤/>,单节点环境中可以部署有收集器30和容器运行时相关的组件(runc)40,容器运行时相关的组件40可以直接用于创建和运行容器,上述收集器30收集本地节点信息和通过容器运行时的组件40已经运行的容器实例信息,上述容器实例信息包括具有所有运行的容器实例的编号列表以及每个容器实例信息。如图2所示的步骤/>,集群环境中还可以部署有镜像仓库50,容器运行时的组件40通过本地的容器镜像创建本地容器实例,由于通过集群管理组件10创建集群环境下的容器应用需要指定镜像仓库50中容器镜像,从而可以将本地镜像上传到镜像仓库50中。
在上述示例性实施方式中,容器实例信息可以包括:容器实例的编号,容器实例的镜像名称,容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,容器实例的环境变量,以及容器实例的配置文件。
具体地,每个容器实例信息可以包括编号(Identity Document,ID)、镜像名称、CPU大小、内存大小、挂载卷信息、网络端口、环境变量和配置文件等信息。针对容器应用的配置文件,容器实例可以写入到容器镜像内部,收集信息时可以按照容器内部具体的配置文件路径,通过容器内执行文件输出命令获取具体配置文件名称和文件内容信息。本地容器实例可以为容器运行时相关的组件通过本地的容器镜像进行创建,从而收集到的每个容器实例信息中也包括相应的镜像名称。
在上述示例性实施方式中,通过容器镜像创建与容器实例的信息对应的容器镜像,包括:在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,创建与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
具体地,单节点环境中可能会存在容器实例内部内容被修改的情况,此时,可以使用容器实例进行快照操作,将快照保存为最新的容器镜像,而对于未被修改的容器实例,快照操作后得到的是原始镜像,通过将原始镜像和最新镜像同时上传到容器镜像仓库,可以在创建容器应用时默认使用最新镜像,而将原始镜像作为历史版本归档,在需要对容器应用回滚时再使用原始镜像。
在上述步骤S404中,上传容器实例的信息至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中。
具体地,如图2所示的步骤④,可以将收集的节点信息和容器实例信息上传到集群环境中的转换器60,转换器60将单节点环境中收集的容器实例信息转换为容器集群环境可以识别的模板。通过上传容器实例的信息至集群环境,以添加部分容器实例信息到预设模板的信息中,使容器实例的信息与转换后的工作负载的模板信息中,CPU、内存、卷目录、网络端口、环境变量可以与直接一一对齐。新上传至镜像仓库50中的最新镜像地址也添加到预设模板中,获取的配置文件路径以及配置文件内容被转换为集群环境中的配置资源对象,以关键字(Key)和值(Value)的键值对形式填入上述配置文件路径以及配置文件内容。并且,容器实例ID信息也可以以可扩展的注解信息添加到预设模板中,用以在创建容器实例时进行使用。在容器应用以集群环境中工作负载模板信息的形式通过集群管理组件10再次下发至单节点环境之前,代表该单节点环境的主机名称的标签也可以添加至转换后的工作负载模板中,保证应用调度时可以再次调度到容器实例所在节点。当有多个单节点环境上报容器实例信息时,如果不同容器实例信息的原始容器镜像相同,即哈希值(hash值,又称散列函数或哈希函数)相同,则自动添加到已有的工作负载模板中,以多副本形式更新工作负载的模板,继续进行后续的调度流程,从而可以将相同的容器实例进行统一的进行更新、回滚等一致操作。
在上述步骤S406中,根据工作负载的模板信息创建容器实例。集群管理组件可以根据容器实例的运行状态,将集群环境中部署的容器集群中与容器实例对应的容器应用的状态更新为运行。
具体地,如图2所示的步骤⑤,集群环境中的集群管理组件10可以使用通过转换器60转换后的模板进行工作负载创建,如图2所示的步骤⑥,可以通过单节点环境中的本地管理组件20,接收集群管理组件10根据模板信息中调度节点名称定向调度的容器实例。
在一个示例性实施方式中,根据工作负载的模板信息创建容器实例,包括:根据工作负载的模板信息,生成目标容器实例的创建请求;根据创建请求,判断与目标容器实例对应的容器应用是否为已纳管的容器应用;在判断结果指示为与目标容器实例对应的容器应用为已纳管的容器应用的情况下,拦截目标容器实例;根据工作负载的模板信息创建目标容器实例;将目标容器实例的运行状态上报至集群管理组件。
在上述示例性实施方式中,工作负载的模板信息可以包括至少一个容器实例的编号,根据创建请求,判断与目标容器实例对应的容器应用是否为已纳管的容器应用,可以包括:判断至少一个容器实例的编号是否包括目标容器实例的编号;在判断结果指示为包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为已纳管的容器应用;在判断结果指示为不包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为未纳管的容器应用。
具体地,单节点环境中部署的本地管理组件正常创建流程会直接调用容器运行时创建容器实例,本实施例中可以在单节点环境中以插件形式添加一个拦截器70,该拦截器70能够截取本地管理组件的正常创建容器实例请求,如图2中的步骤⑦,拦截器70可以根据模板信息中是否存在请求创建的容器实例ID,判断是新建容器实例还是纳管已有容器。如图2的步骤⑧,如果存在容器实例ID,去容器运行时相关的组件40查询已经存在的容器实例,否则新建一个容器实例,将容器实例信息返回给拦截器70。如图2中的步骤⑨,拦截器70将容器实例信息返回给本地管理组件20,然后本地管理组件20将基于模板信息创建的容器实例的运行状态上报到集群管理组件10。至此,在不需要中断原有业务的前提下,完成了容器实例的纳管。
下面将以Kubernetes(K8s)为例对本实施例中容器应用的纳管方法进行具体实施流程的说明,实施流程包括:
单节点环境中部署有容器集群的本地管理组件,对应着Kubernetes系统中的Kubelet组件,将当前节点注册到集群环境中,成为Kubernetes集群的一个计算节点。单节点环境中还部署有以容器化方式安装的收集模块,容器实例运行在本地的容器运行时相关的组件中,收集模块收集容器实例信息,信息收集完成后发送,以节点为单位将信息发送到集群环境中的转换模块。
集群环境中还部署有转换器,对应着Kubernetes中的Deployment工作负载,将Deployment工作负载对外暴露一个访问地址,供收集模块发送数据使用。转换器接收到容器实例信息后,能够将容器实例信息转换为集群系统模板,对应着Kubernetes的Deployment工作负载模板,得到模板后,将模板应用到Kubernetes系统中,即创建一个集群模式的容器应用。
单节点环境中以二进制形式启动一个操作系统服务,用以代理本地管理组件下发给容器运行时的请求,本地管理组件对应着Kubernetes中Kubelet。在Kubelet和CRI-Docker中间实现一个代理,将带有容器实例ID标签的创建请求进行容器实例信息查询,对应没有带有ID标签的创建请求,按照原始Kubelet流程转发给CRI-dockerd进行容器实例创建,将容器实例信息返回给Kubelet。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种容器应用的纳管装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的容器应用的纳管装置的结构框图,如图5所示,应用于集群环境中,集群环境中部署有容器集群,该纳管装置包括:
获取模块52,用于获取与单节点环境对应的容器实例的信息;
转换模块54,用于将容器实例的信息转换为集群环境下的工作负载的模板信息;
调度模块56,用于根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,以使单节点环境中的本地管理组件根据工作负载的模板信息创建容器实例。
通过上述装置,由于在获取模块获取到单节点环境中容器实例信息之后,先通过转换模块将容器实例信息转换成集群环境下的工作负载的模板信息,从而可以通过模板信息定向调度到原来的单节点环境,使得单节点环境中的本地管理组件使用已有容器实例进行工作负载的创建,得到容器实例的运行状态,进而完成容器实例的在线纳管,因此,可以解决相关技术中容器应用难以实现在线纳管的问题。进一步地,上述方法能够将分散的容器节点加入集群,进行统一管理,同时可以将容器节点上的容器应用纳管到集群中,进行统一展示和生命周期管理,达到了提高运营效率和降低了运维成本的效果。
在一个示例性实施方式中,获取模块52包括:第一获取子模块,用于获取与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息。
在一个示例性实施方式中,容器实例信息包括:容器实例的编号,容器实例的镜像名称,容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,容器实例的环境变量,以及容器实例的配置文件。
在一个示例性实施方式中,获取模块52还包括:第二获取子模块,用于在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,获取与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
在一个示例性实施方式中,本实施例中的纳管装置还包括:构建子模块,用于根据多个已经运行的容器实例和与多个已经运行的容器实例对应的节点信息,构建树形结构文件,节点信息包括:容器集群的名称,与每个容器实例对应的单节点环境的节点名称,以及容器实例信息,其中,容器实例为容器实例信息的根节点,节点名称为容器实例的根节点,容器集群的名称为节点名称的根节点;存储子模块,用于存储树形结构文件。
在一个示例性实施方式中,转换模块54包括:第一更新子模块,用于根据容器实例信息更新集群环境下的预设模板的信息,得到工作负载的模板信息。
在一个示例性实施方式中,第一更新子模块包括:替换子模块,用于根据容器实例信息中的目标信息,替换预设模板中的预设信息,其中,目标信息包括:容器实例的CPU大小,容器实例的内存大小,容器实例的挂载卷信息,容器实例的网络端口,以及容器实例的环境变量;第一添加子模块,用于将更新容器镜像的地址添加到预设模板中;第二添加子模块,用于将配置文件的路径和配置文件的内容以键值对的形式添加到预设模板的信息中;第三添加子模块,用于将根据容器实例的编号生成的注解信息以及容器实例的节点名称添加至预设模板中。
在一个示例性实施方式中,转换模块54还包括:第四添加子模块,用于将容器实例的节点名称添加至工作负载的模板中。
在一个示例性实施方式中,转换模块54还包括:第五添加子模块,用于在工作负载的模板信息中添加与单节点环境对应的第一标签,其中,第一标签用于表示单节点环境的主机名称。
在一个示例性实施方式中,转换模块54包括:赋予子模块,用于为多个容器实例赋予第二标签;转换子模块,用于将具有第二标签的容器实例的信息转换为集群环境下的同一个工作负载的模板信息。
在一个示例性实施方式中,转换模块54还包括:第一判断子模块,用于在顺序获取与多个单节点环境对应的多个容器实例的信息的情况下,判断在先获取的第一容器实例的信息对应的原始容器镜像与在后获取的第二容器实例的信息对应的原始容器镜像是否相同;第三获取子模块,用于在判断结果指示多个原始容器镜像相同的情况下,获取与第一容器实例的信息对应的第一工作负载的模板信息;第二更新子模块,用于根据第二容器实例的信息,以副本形式更新第一工作负载的模板信息。
在一个示例性实施方式中,调度模块56包括:第一生成子模块,用于根据单节点环境,生成容器集群中的目标计算节点;调度子模块,用于将容器实例的信息调度至目标计算节点上,并将工作负载的模板信息传递至单节点环境中的本地管理组件。
在一个示例性实施方式中,第一生成子模块包括:第四获取子模块,用于获取与单节点环境对应的注册请求;第二生成子模块,用于根据注册请求,生成容器集群中的目标计算节点,目标计算节点用于调度与单节点环境对应的容器实例。
在一个示例性实施方式中,第二生成子模块包括:第五获取子模块,用于获取与单节点环境对应的机器码;第三生成子模块,用于根据注册请求,在容器集群中生成以机器码为节点名称的目标计算节点。
在一个示例性实施方式中,本实施例中的纳管装置还包括更新模块,更新模块用于根据容器实例的运行状态,将容器集群中与容器实例对应的容器应用的状态更新为运行。
在本实施例中还提供了另一种容器应用的纳管装置,图6是根据本申请实施例的容器应用的纳管装置的结构框图,如图6所示,应用于单节点环境中,该纳管装置包括:
收集模块62,用于收集与单节点环境对应的容器实例的信息;
上传模块64,用于上传容器实例的信息至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下的工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中;
创建模块66,用于根据工作负载的模板信息创建容器实例。
通过上述装置,由于在收集模块收集完成单节点环境中容器实例信息之后,先通过上传模块将容器实例的信息上传至集群环境,以使集群环境中的集群管理组件将容器实例的信息转换为集群环境下的工作负载的模板信息,并根据工作负载的模板信息,将容器实例的信息调度至单节点环境中,从而使单节点环境可以接收到上述容器实例的信息,通过创建模块在单节点环境中使用已有容器实例进行工作负载的创建,得到容器实例的运行状态,进而完成容器实例的在线纳管,因此,可以解决相关技术中容器应用难以实现在线纳管的问题。进一步地,上述方法能够将分散的容器节点加入集群,进行统一管理,同时可以将容器节点上的容器应用纳管到集群中,进行统一展示和生命周期管理,达到了提高运营效率和降低了运维成本的效果。
在一个示例性实施方式中,收集模块62包括:收集子模块,用于收集与单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,本地节点信息包括与单节点环境对应的节点名称,本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,容器实例列表包括多个已经运行的容器实例的编号,多个容器实例信息为多个已经运行的容器实例的信息;第一创建子模块,用于通过容器镜像创建与容器实例的信息对应的容器镜像;上传子模块,用于将容器镜像上传至集群环境中的镜像仓库中。
在一个示例性实施方式中,第一创建子模块包括:第二创建子模块,用于在与单节点环境对应的容器实例的信息中存在被修改内容的情况下,创建与容器实例的信息对应的原始容器镜像和更新容器镜像,其中,原始容器镜像为未修改的容器实例的信息通过快照操作所得到的容器镜像,更新容器镜像为修改后的容器实例的信息通过快照操作所得到的容器镜像。
在一个示例性实施方式中,创建模块66包括:第四生成子模块,用于根据工作负载的模板信息,生成目标容器实例的创建请求;第二判断子模块,用于根据创建请求,判断与目标容器实例对应的容器应用是否为已纳管的容器应用;拦截子模块,用于在判断结果指示为与目标容器实例对应的容器应用为已纳管的容器应用的情况下,拦截目标容器实例;第三创建子模块,用于根据工作负载的模板信息创建目标容器实例;上报子模块,用于将目标容器实例的运行状态上报至集群管理组件。
在一个示例性实施方式中,工作负载的模板信息包括至少一个容器实例的编号,第二判断子模块包括:第三判断子模块,用于判断至少一个容器实例的编号是否包括目标容器实例的编号;第一确定子模块,用于在判断结果指示为包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为已纳管的容器应用;第二确定子模块,用于在判断结果指示为不包括目标容器实例的编号的情况下,确定与目标容器实例对应的容器应用为未纳管的容器应用。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (24)
1.一种容器应用的纳管方法,其特征在于,应用于集群环境中,所述集群环境中部署有容器集群,所述纳管方法包括:
获取与单节点环境对应的容器实例的信息;
将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息;
根据所述工作负载的模板信息,将所述容器实例的信息调度至所述单节点环境中,以使所述单节点环境中的本地管理组件根据所述工作负载的模板信息创建所述容器实例。
2.根据权利要求1所述的方法,其特征在于,所述获取与所述单节点环境对应的容器实例的信息,包括:
获取与所述单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,所述本地节点信息包括与所述单节点环境对应的节点名称,所述本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,所述容器实例列表包括多个已经运行的容器实例的编号,所述多个容器实例信息为所述多个已经运行的容器实例的信息。
3.根据权利要求2所述的方法,其特征在于,所述容器实例信息包括:所述容器实例的编号,所述容器实例的镜像名称,所述容器实例的CPU大小,所述容器实例的内存大小,所述容器实例的挂载卷信息,所述容器实例的网络端口,所述容器实例的环境变量,以及所述容器实例的配置文件。
4.根据权利要求3所述的方法,其特征在于,所述获取与所述单节点环境对应的容器实例的信息,还包括:
在与所述单节点环境对应的容器实例的信息中存在被修改内容的情况下,获取与所述容器实例的信息对应的原始容器镜像和更新容器镜像,其中,所述原始容器镜像为未修改的所述容器实例的信息通过快照操作所得到的容器镜像,所述更新容器镜像为修改后的所述容器实例的信息通过快照操作所得到的容器镜像。
5.根据权利要求2所述的方法,其特征在于,还包括:
根据所述多个已经运行的容器实例和与所述多个已经运行的容器实例对应的节点信息,构建树形结构文件,所述节点信息包括:所述容器集群的名称,与每个所述容器实例对应的单节点环境的节点名称,以及所述容器实例信息,其中,所述容器实例为所述容器实例信息的根节点,所述节点名称为所述容器实例的根节点,所述容器集群的名称为所述节点名称的根节点;
存储所述树形结构文件。
6.根据权利要求4所述的方法,其特征在于,所述将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息,包括:
根据所述容器实例信息更新所述集群环境下的预设模板的信息,得到所述工作负载的模板信息。
7.根据权利要求6所述的方法,其特征在于,所述根据所述容器实例信息更新所述集群环境下的预设模板的信息,得到所述工作负载的模板信息,包括:
根据所述容器实例信息中的目标信息,替换所述预设模板中的预设信息,其中,所述目标信息包括:所述容器实例的CPU大小,所述容器实例的内存大小,所述容器实例的挂载卷信息,所述容器实例的网络端口,以及所述容器实例的环境变量;
将所述更新容器镜像的地址添加到所述预设模板中;
将所述配置文件的路径和所述配置文件的内容以键值对的形式添加到所述预设模板的信息中;
将根据所述容器实例的编号生成的注解信息以及所述容器实例的节点名称添加至所述预设模板中。
8.根据权利要求6所述的方法,其特征在于,所述将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息,还包括:
将所述容器实例的节点名称添加至所述工作负载的模板中。
9.根据权利要求6所述的方法,其特征在于,所述将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息,还包括:
在所述工作负载的模板信息中添加与所述单节点环境对应的第一标签,其中,所述第一标签用于表示所述单节点环境的主机名称。
10.根据权利要求4所述的方法,其特征在于,所述将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息,包括:
为多个所述容器实例赋予第二标签;
将具有所述第二标签的所述容器实例的信息转换为所述集群环境下的同一个所述工作负载的模板信息。
11.根据权利要求6所述的方法,其特征在于,所述将所述容器实例的信息转换为所述集群环境下的工作负载的模板信息,还包括:
在顺序获取与多个所述单节点环境对应的多个容器实例的信息的情况下,判断在先获取的第一容器实例的信息对应的所述原始容器镜像与在后获取的第二容器实例的信息对应的所述原始容器镜像是否相同;
在判断结果指示多个所述原始容器镜像相同的情况下,获取与所述第一容器实例的信息对应的第一工作负载的模板信息;
根据所述第二容器实例的信息,以副本形式更新所述第一工作负载的模板信息。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述根据所述工作负载的模板信息,将所述容器实例的信息调度至所述单节点环境中,包括:
根据单节点环境,生成容器集群中的目标计算节点;
将所述容器实例的信息调度至所述目标计算节点上,并将所述工作负载的模板信息传递至所述单节点环境中的本地管理组件。
13.根据权利要求12所述的方法,其特征在于,所述根据单节点环境,生成容器集群中的目标计算节点,包括:
获取与所述单节点环境对应的注册请求;
根据所述注册请求,生成所述容器集群中的目标计算节点,所述目标计算节点用于调度与所述单节点环境对应的容器实例。
14.根据权利要求13所述的方法,其特征在于,所述根据所述注册请求,生成所述容器集群中的目标计算节点,包括:
获取与所述单节点环境对应的机器码;
根据所述注册请求,在所述容器集群中生成以所述机器码为节点名称的所述目标计算节点。
15.根据权利要求1至11中任一项所述的方法,其特征在于,所述纳管方法还包括:
根据所述容器实例的运行状态,将所述容器集群中与所述容器实例对应的容器应用的状态更新为运行。
16.一种容器应用的纳管方法,其特征在于,应用于单节点环境中,所述纳管方法包括:
收集与所述单节点环境对应的容器实例的信息;
上传所述容器实例的信息至集群环境,以使所述集群环境中的集群管理组件将所述容器实例的信息转换为所述集群环境下工作负载的模板信息,并根据所述工作负载的模板信息,将所述容器实例的信息调度至所述单节点环境中;
根据所述工作负载的模板信息创建所述容器实例。
17.根据权利要求16所述的方法,其特征在于,所述收集与所述单节点环境对应的容器实例的信息,包括:
收集与所述单节点环境对应的至少一个容器实例的本地节点信息和本地容器实例信息,所述本地节点信息包括与所述单节点环境对应的节点名称,所述本地容器实例信息包括容器实例列表以及多个容器实例信息,其中,所述容器实例列表包括多个已经运行的容器实例的编号,所述多个容器实例信息为所述多个已经运行的容器实例的信息;
通过容器镜像创建与所述容器实例的信息对应的容器镜像;
将所述容器镜像上传至所述集群环境中的镜像仓库中。
18.根据权利要求17所述的方法,其特征在于,所述通过容器镜像创建与所述容器实例的信息对应的容器镜像,包括:
在与所述单节点环境对应的容器实例的信息中存在被修改内容的情况下,创建与所述容器实例的信息对应的原始容器镜像和更新容器镜像,其中,所述原始容器镜像为未修改的所述容器实例的信息通过快照操作所得到的容器镜像,所述更新容器镜像为修改后的所述容器实例的信息通过快照操作所得到的容器镜像。
19.根据权利要求16所述的方法,其特征在于,所述根据所述工作负载的模板信息创建所述容器实例,包括:
根据所述工作负载的模板信息,生成目标容器实例的创建请求;
根据所述创建请求,判断与所述目标容器实例对应的容器应用是否为已纳管的容器应用;
在判断结果指示为与所述目标容器实例对应的容器应用为已纳管的容器应用的情况下,拦截所述目标容器实例;
根据所述工作负载的模板信息创建所述目标容器实例;
将所述目标容器实例的运行状态上报至所述集群管理组件。
20.根据权利要求19所述的方法,其特征在于,所述工作负载的模板信息包括至少一个所述容器实例的编号,所述根据所述创建请求,判断与所述目标容器实例对应的容器应用是否为已纳管的容器应用,包括:
判断所述至少一个容器实例的编号是否包括所述目标容器实例的编号;
在判断结果指示为包括所述目标容器实例的编号的情况下,确定与所述目标容器实例对应的容器应用为已纳管的容器应用;
在判断结果指示为不包括所述目标容器实例的编号的情况下,确定与所述目标容器实例对应的容器应用为未纳管的容器应用。
21.一种容器应用的纳管装置,其特征在于,应用于集群环境中,所述集群环境中部署有容器集群,所述纳管装置包括:
获取模块,用于获取与单节点环境对应的容器实例的信息;
转换模块,用于将所述容器实例的信息转换为集群环境下的工作负载的模板信息;
调度模块,用于根据所述工作负载的模板信息,将所述容器实例的信息调度至所述单节点环境中,以使所述单节点环境中的本地管理组件根据所述工作负载的模板信息创建所述容器实例。
22.一种容器应用的纳管装置,其特征在于,应用于单节点环境中,所述纳管装置包括:
收集模块,用于收集与所述单节点环境对应的容器实例的信息;
上传模块,用于上传所述容器实例的信息至集群环境,以使所述集群环境中的集群管理组件将所述容器实例的信息转换为集群环境下工作负载的模板信息,并根据所述工作负载的模板信息,将所述容器实例的信息调度至所述单节点环境中;
创建模块,用于根据所述工作负载的模板信息创建所述容器实例。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至15任一项中所述的方法的步骤,或者实现权利要求16-20任一项中所述的方法的步骤。
24.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至15任一项中所述的方法的步骤,或者实现权利要求16-20任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310819201.3A CN116541133B (zh) | 2023-07-05 | 2023-07-05 | 容器应用的纳管方法、其装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310819201.3A CN116541133B (zh) | 2023-07-05 | 2023-07-05 | 容器应用的纳管方法、其装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116541133A true CN116541133A (zh) | 2023-08-04 |
CN116541133B CN116541133B (zh) | 2023-09-15 |
Family
ID=87456367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310819201.3A Active CN116541133B (zh) | 2023-07-05 | 2023-07-05 | 容器应用的纳管方法、其装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541133B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417051A (zh) * | 2020-12-01 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 容器编排引擎资源管理方法及装置、可读介质及电子设备 |
CN112905337A (zh) * | 2021-02-07 | 2021-06-04 | 中国工商银行股份有限公司 | 软硬件混合部署的MySQL集群调度方法及装置 |
CN112925647A (zh) * | 2021-03-24 | 2021-06-08 | 北京金山云网络技术有限公司 | 云边协同系统、集群资源的控制方法及装置 |
CN113342478A (zh) * | 2021-08-04 | 2021-09-03 | 阿里云计算有限公司 | 资源管理方法、设备、网络系统及存储介质 |
CN113419819A (zh) * | 2021-06-25 | 2021-09-21 | 重庆紫光华山智安科技有限公司 | 容器管理方法、装置、设备及介质 |
CN114416296A (zh) * | 2022-01-11 | 2022-04-29 | 浪潮云信息技术股份公司 | 一种混合cpu构架大规模集群容器的启动提速方法及系统 |
WO2022140945A1 (zh) * | 2020-12-28 | 2022-07-07 | 华为技术有限公司 | 容器集群的管理方法和装置 |
CN115113975A (zh) * | 2022-06-13 | 2022-09-27 | 浪潮通信技术有限公司 | 集群管理的方法、装置、电子设备及存储介质 |
-
2023
- 2023-07-05 CN CN202310819201.3A patent/CN116541133B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417051A (zh) * | 2020-12-01 | 2021-02-26 | 腾讯科技(深圳)有限公司 | 容器编排引擎资源管理方法及装置、可读介质及电子设备 |
WO2022140945A1 (zh) * | 2020-12-28 | 2022-07-07 | 华为技术有限公司 | 容器集群的管理方法和装置 |
CN112905337A (zh) * | 2021-02-07 | 2021-06-04 | 中国工商银行股份有限公司 | 软硬件混合部署的MySQL集群调度方法及装置 |
CN112925647A (zh) * | 2021-03-24 | 2021-06-08 | 北京金山云网络技术有限公司 | 云边协同系统、集群资源的控制方法及装置 |
CN113419819A (zh) * | 2021-06-25 | 2021-09-21 | 重庆紫光华山智安科技有限公司 | 容器管理方法、装置、设备及介质 |
CN113342478A (zh) * | 2021-08-04 | 2021-09-03 | 阿里云计算有限公司 | 资源管理方法、设备、网络系统及存储介质 |
CN114416296A (zh) * | 2022-01-11 | 2022-04-29 | 浪潮云信息技术股份公司 | 一种混合cpu构架大规模集群容器的启动提速方法及系统 |
CN115113975A (zh) * | 2022-06-13 | 2022-09-27 | 浪潮通信技术有限公司 | 集群管理的方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116541133B (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
CN108924217B (zh) | 一种分布式云系统自动化部署方法 | |
US8832130B2 (en) | System and method for implementing on demand cloud database | |
EP3667500B1 (en) | Using a container orchestration service for dynamic routing | |
CN100487689C (zh) | 用于环球网服务结构中的包容器选择器及其选择方法 | |
KR100761551B1 (ko) | 클러스터 컴퓨터들의 구성을 관리하는 방법, 제어기, 장치및 컴퓨터 프로그램 | |
US20220179711A1 (en) | Method For Platform-Based Scheduling Of Job Flow | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN112685150A (zh) | 一种多语言程序执行方法、装置及存储介质 | |
JP2022069420A (ja) | コンピュータ実装方法、コンピュータシステムおよびコンピュータプログラム製品(エッジコンピューティング環境における障害管理) | |
CN116541133B (zh) | 容器应用的纳管方法、其装置及电子设备 | |
CN109375946B (zh) | 一种管理节点包管理器的组件包的方法及系统 | |
CN112953770B (zh) | 边缘云网关免配置接入的方法、系统、介质及云端管理系统 | |
CN114090242A (zh) | 模型训练方法、装置、设备、存储介质及程序产品 | |
CN112416980A (zh) | 数据业务处理方法、装置及设备 | |
CN113283742A (zh) | 一种任务分配方法和装置 | |
CN107818122A (zh) | 一种代理组件、搜索管理方法及搜索管理系统 | |
CN112764825A (zh) | 服务集成系统及相应设备和存储介质 | |
CN110968335A (zh) | 一种用于电力业务系统资源统筹管理的组件系统 | |
KR102485154B1 (ko) | 전력 통신 서비스 | |
CN115562688B (zh) | 一种基于微服务与组件融合一键部署方法 | |
CN115757041B (zh) | 可动态配置的多集群日志采集的方法及应用 | |
CN116594848B (zh) | 一种任务监控方法、装置、设备、终端设备及存储介质 | |
CN114500268B (zh) | chart资源的部署方法、装置、服务器及存储介质 | |
CN115421748B (zh) | 多云环境下kubernetes容器升级系统及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |