一种容器管理方法、装置、设备及存储介质
技术领域
本发明涉及计算机虚拟化
技术领域
,尤其涉及一种容器管理方法、装置、设备及存储介质领域。背景技术
Docker是一个应用容器引擎,本身具有功能有:运行容器、删除容器、重启容器、暂停容器、开启容器等。但容器是单独的个体,每个容器独立分开。
Kubernetes是一个容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能,是对容器进行统一管理、部署、运维的编排工具。Kubernetes的最小管理调度单元为Pod,一个Pod中包含了一个或多个容器,还包括了存储、网络等各个容器的共享资源,一般都是通过Kubernetes控制器来管理。Kubernetes控制器具有的功能:创建Pod、更新Pod、删除Pod等功能。但不包暂停Pod的功能。
在Kubernetes的最初设计理念中,只是把Kubernetes部署在互联网场景中,目的是为了简化开发、编译、测试,以及部署的流程。时刻保证生产环境中的Kubernetes中的容器应用正常持续的运行,如果容器应用失败了,Kubernetes提供自动修复的功能。如果容器应用有新版本更新,Kubernetes提供滚动更新的功能。所以通过Kubernetes部署的应用只有创建、删除、更新的功能,不会有暂停容器应用的功能。
随着Kubernetes的不断发展,在嵌入式的设备级场景中,也需要通过Kubernetes来进行统一编排管理容器应用。但嵌入式设备中,物理资源受限,不能向互联网场景中可以同时运行很多容器,所以需要Kubernetes提供暂停容器的功能。
发明内容
有鉴于此,本发明实施例提供了一种容器管理方法、装置、设备及存储介质,通过容器集群管理系统配置自定义的资源对象和容器控制器实例,所述容器控制器实例基于所述资源对象的容器进行容器控制,实现容器暂停或重启,从而在物理资源受限设备中,实现容器快速暂停和快速恢复,提高资源利用率。
第一方面,本发明实施例提供了一种容器管理方法,包括:配置自定义的资源对象和对应的容器控制器实例,所述资源对象包括其期望操作参数;所述容器控制器实例基于所述资源对象的期望操作进行容器控制,所述容器控制至少包括:容器暂停。
由上,基于自定义的资源对象和容器控制器实例对容器进行控制,实现至少包括容器暂停,从而在物理资源受限设备中,实现容器快速暂停,既不会有重新创建容器的延迟和开销,容器停止状态又不会占用CPU和内存等资源,提高资源利用率,并且需要运行暂停的容器应用时又能快速恢复,提高了容器的相应时间。在本发明第一方面的一种可能的实施方式中,所述配置自定义的资源对象和对应的容器控制器实例包括:利用容器集群管理系统配置所述资源对象,并把所述资源对象注册到容器集群管理系统中;利用容器集群管理系统配置所述资源对象的容器控制器实例,并部署到容器集群管理系统中。
由上,基于容器集群管理系统定义资源对象和容器控制器实例,使自定义的资源对象被容器集群管理系统监控,便于管理。
在本发明第一方面的一种可能的实施方式中,当容器集群管理系统监控到所述资源对象有更新事件时,分发所述更新事件至所述容器控制器实例进行容器控制。
由上,利用容器集群管理系统监控自定义的资源对象,便于管理。
在本发明第一方面的一种可能的实施方式中,所述的容器控制器实例基于所述资源对象的期望操作进行容器控制包括:解析对所述资源对象的更新事件中的所述期望操作;基于所述期望操作进行所述容器控制;基于所述期望操作对容器集群管理系统中所述资源对象的状态进行更新。
由上,配置的容器控制器实例基于所述期望操作进行容器管理,实现对单个容器的控制,提高在资源受限场景下的资源利用率。
在本发明第一方面的一种可能的实施方式中,所述利用容器集群管理系统配置所述资源对象包括:基于容器集群管理系统的资源对象格式配置所述资源对象的类型;基于实际应用场景定义所述资源对象的属性,至少包括所述资源对象的地址;配置所述资源对象的实例,所述实例中包括所述期望操作。
由上,基于容器集群管理系统配置所述资源对象的类型、属性和实例,使自定义的资源对象与容器集群管理系统的格式一致,便于被容器集群管理系统监控和管理。
在本发明第一方面的一种可能的实施方式中,所述利用容器集群管理系统配置所述资源对象的容器控制器实例包括:基于所述期望操作配置下列容器控制方式中至少包括:当所述期望操作为停止操作时,所述容器控制为容器暂停。
由上,基于自定义的资源对象实例中的期望操作配置对应的容器控制器实例的控制方式,至少支持包括容器暂停功能。
在本发明第一方面的一种可能的实施方式中,所述利用容器集群管理系统为Kubernetes;所述资源对象为Kubernetes的扩展资源对象。
由上,利用Kubernetes作为容器集群管理系统配置自定义的资源对象,利用Kubernetes实现对自定义的资源对象的监控、存储和变更事件分发。
第二方面,本发明实施例提供了一种容器管理装置,包括:配置模块,用于配置自定义的资源对象和对应的容器控制器实例,所述资源对象包括其期望操作参数;控制模块,用于所述容器控制器实例基于所述资源对象的期望操作进行容器控制,所述容器控制至少包括:容器暂停。
由上,基于自定义的资源对象和容器控制器实例对容器进行控制,实现至少包括容器暂停功能,从而在物理资源受限设备中,实现容器快速暂停,既不会有重新创建容器的延迟和开销,容器停止状态又不会占用CPU和内存等资源,提高资源利用率,并且需要运行暂停的容器应用时又能快速恢复,提高了容器的相应时间。
在本发明第二方面的一种可能的实施方式中,所述配置模块包括:资源对象配置模块,用于利用容器集群管理系统配置所述资源对象,并把所述资源对象注册到容器集群管理系统中;控制器配置模块,用于利用容器集群管理系统配置所述资源对象的容器控制器实例,并部署到容器集群管理系统中。
由上,基于容器集群管理系统定义资源对象和容器控制器实例,使自定义的资源对象被容器集群管理系统监控,便于管理。
在本发明第二方面的一种可能的实施方式中,还包括:监控模块用于容器集群管理系统监控到所述资源对象有更新事件时,分发所述更新事件至所述容器控制器实例进行容器控制。
由上,利用容器集群管理系统监控自定义的资源对象,便于管理。
在本发明第二方面的一种可能的实施方式中,所述控制模块具体用于解析对所述资源对象的更新事件中的所述期望操作;还用于基于所述期望操作进行所述容器控制;还用于基于所述期望操作对容器集群管理系统中所述资源对象的状态进行更新。
由上,对应的容器控制器实例基于所述期望操作进行容器管理,实现对单个容器的控制,提高在资源受限场景下的资源利用率。
在本发明第二方面的一种可能的实施方式中,所述资源对象配置模块具体用于基于容器集群管理系统的资源对象格式配置所述资源对象的类型;还具体用于基于实际应用场景定义所述资源对象的属性,至少包括所述资源对象的地址;还具体用于配置所述资源对象的实例,所述实例中包括所述期望操作。
由上,基于容器集群管理系统配置所述资源对象的类型、属性和实例,使自定义的资源对象与容器集群管理系统的格式一致,便于被容器集群管理系统监控和管理。
在本发明第二方面的一种可能的实施方式中,所述控制器配置模块具体用于利用容器集群管理系统基于所述期望操作配置下列容器控制方式至少包括:当所述期望操作为停止操作时,所述容器控制为容器暂停。
由上,基于自定义的资源对象实例中的期望操作配置对应的容器控制器实例的控制方式,至少支持包括容器暂停能。
在本发明第二方面的一种可能的实施方式中,所述利用容器集群管理系统为Kubernetes;所述资源对象为Kubernetes的扩展资源对象。
由上,利用Kubernetes作为容器集群管理系统配置自定义的资源对象,利用Kubernetes实现对自定义的资源对象的监控、存储和变更事件分发。
第三方面,本发明实施例提供了一种计算设备,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
第四方面,提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行申请第一方面任一所述实施方式。
附图说明
图1为本发明的一种容器管理方法实施例一的流程示意图;
图2为本发明的一种容器管理方法实施例二的流程示意图;
图3为本发明的一种容器管理方法实施例二的配置方法的流程示意图;
图4为本发明的一种容器管理方法实施例二的监控和控制方法的流程示意图;
图5为本发明的一种容器管理装置实施例一的结构示意图;
图6为本发明的一种容器管理装置实施例二的结构示意图;
图7A为本发明的一种容器管理装置实施例二的第二配置模块的结构示意图;
图7B为本发明的一种容器管理装置实施例二的第二监控模块的结构示意图;
图7C为本发明的一种容器管理装置实施例二的第二控制模块的结构示意图;
图8为本发明各实施例的一种计算设备的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明具体实施方式进行进一步详细说明之前,对本发明实施例中涉及的名词和术语,以及其在本发明中相应的用途\作用\功能等进行说明。
本发明各实施例基于容器集群管理系统实现,Kubernetes是一种典型的容器集群管理系统,下面对本申请实施例涉及的Kubernetes中的名词和术语适用于如下的解释。
1、Kubernetes:一种容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能,是对容器进行统一管理、部署、运维的编排工具。Kubernetes的最小管理调度单元为Pod,一个Pod中包含了一个或多个容器。
2、CRD:Kubernetes的客户资源定义机制(Custom Resource Definition,CRD)。虽然Kubernetes提供了很多内置的资源对象,但是在不同应用业务环境下,对于平台可能有一些特殊的需求。Kubernetes的CRD为这些需求定义Kubernetes的扩展资源对象,而且保证新的资源对象的注册、监控和使用。
3、Informer:Kubernetes中完成资源对象监控,资源对象操存储和分发、资源对象变更事件分发的功能。后文所述的Reflector、DeltaFIFO、Indexer和ThreadSafeStore都是Informer的部件。
4、Reflector:通过Kubernetes API监控Kubernetes中的各资源对象,能够监听Kubernetes中的资源对象的创建、更新以及删除变更事件,然后将变更事件放入到DeltaFIFO队列中。
5、DeltaFIFO:Kubernetes中一个先进先出的队列,可以保存资源对象的变更事件,包括资源对象的创建、更新以及删除事件。
6、Indexer:Kubernetes中的资源对象的本地存储,Informer从DeltaFIFO中将取出来的资源对象存储至Indexer。Indexer以资源对象为标识自带索引功能。
7、ThreadSafeStore:Kubernetes中本地多线程安全的存储,以索引为标识存储Kubernetes中的资源对象状态,Indexer内部封装了ThreadSafeStore,并自产生资源对象的索引,以索引为标识进行存储的各种操作。
8、Docker:一个应用容器引擎,本身具有功能有:运行容器、删除容器、重启容器、暂停容器、开启容器等。但容器是单独的个体,每个容器独立分开。
本发明各实施例应用到基于Kubernetes的嵌入式设备中,嵌入式设备的物理资源受限,不能向互联网场景中可以同时运行很多容器,所以需要Kubernetes提供暂停容器的功能。本发明各实施例基于Kubernetes容器集群管理系统的CRD配置自定义的资源对象和对应的容器控制器实例,并把自定义的资源对象注册到Kubernetes中和把对应的容器控制器实例运行在Kubernetes中,利用Kubernetes的Informer监控自定义的资源对象的更新事件,并分发至对应的容器控制器实例进行单个容器的暂停和重启功能,提高嵌入式设备的资源利用率。
下面结合图1至图4介绍本发明的一种计算机内存管理各方法实施例。
【一种容器管理方法实施例一】
图1示出了本发明的一种容器管理方法实施例一的流程,其包括:
S110、利用容器集群管理系统配置自定义的资源对象和对应的容器控制器实例,所述资源对象包括其期望操作。
其中,容器集群管理系统提供了自定义的资源对象和对应的容器控制器实例,根据实际场景需求定义新的资源对象作为容器集群管理系统的扩展资源对象,并注册到容器集群管理系统中,进行监控和容器控制。
其中,定义所述资源对象时,配置所述资源对象的实例,该实例包括所述资源对象的期望操作,所述期望操作至少包括暂停。
其中,所述配置对应的容器控制器实例包括:基于自定义的资源对象对容器控制器进行实例化配置,生成对应的容器控制器实例,并把该容器控制器实例部署到容器集群管理系统中。
S120、利用容器集群管理系统对自定义的资源对象进行监控,并分发监控到的该资源对象的更新事件至其容器控制器实例。
其中,当容器集群管理系统监控到自定义的资源对象有更新事件时,按照容器集群管理系统的管理方式分发至其容器控制器实例,自定义的资源对象的更新操作事件以自定义的资源对象的实例的方式进行分发,自定义的资源对象的实例包括其期望操作。
S130、对应的容器控制器实例基于自定义的资源对象的更新操作事件进行容器控制,所述容器控制至少包括:容器暂停。
其中,自定义的资源对象的更新操作事件以自定义的资源对象的实例的方式进行分发,自定义的资源对象的实例包括其期望操作,基于该期望操作进行容器控制。
其中,当所述期望操作为停止时,则进行容器暂停控制。
其中,当所述期望操作为运行且自定义的资源对象已经存在,则进行容器重启控制,无需重新创建容器。
其中,容器暂停状态不会占用CPU和内存等资源,容器重启动不会有重新创建容器的延迟和开销。
综上,一种容器管理方法实施例一在容器集群管理系统中基于自定义的资源对象和容器控制器实例对容器进行控制,实现至少包括容器暂停、重启的功能,从而在物理资源受限设备中,实现容器快速暂停和快速恢复,提高资源利用率。
【一种容器管理方法实施例二】
图2示出了本发明的一种容器管理方法实施例二的流程,其包括:
S210、利用Kubernetes的CRD配置自定义的资源对象和对应的容器控制器实例。
其中,Kubernetes的CRD提供了自定义扩展的资源对象和对应的容器控制器实例,根据实际场景需求定义新的资源对象作为Kubernetes的扩展资源对象,并注册到Kubernetes,进行监控和容器控制。
其中,对应的容器控制器实例为基于自定义的资源对象进行实例化配置的容器控制器实例,并把该容器控制器实例部署到Kubernetes中。
本步骤详细方法请参照一种容器管理方法实施例二的配置方法。
S220、Kubernetes对自定义的资源对象进行监控,并分发监控到该资源对象的更新事件至对应的容器控制器实例。
其中,当Kubernetes监控到自定义的资源对象有更新事件时,按照Kubernetes的管理方式分发至对应的容器控制器实例,自定义的资源对象的更新事件以自定义的资源对象的实例的方式进行分发,自定义的资源对象的实例包括其期望操作。
本步骤详细方法请参照一种容器管理方法实施例二的监控方法。
S230、对应的容器控制器实例基于自定义的资源对象的期望操作进行容器控制,所述容器控制至少包括:容器暂停、容器重启动、容器删除。
其中,自定义的资源对象的更新事件以自定义的资源对象的实例的方式进行分发,自定义的资源对象的实例包括期望操作,基于该期望操作进行容器控制。
其中,容器暂停状态不会占用CPU和内存等资源,容器重启动不会有重新创建容器的延迟和开销。
本步骤详细方法请参照一种容器管理方法实施例二的控制方法。
【一种容器管理方法实施例二的配置方法】
本实施例利用Kubernetes的CRD配置自定义的资源对象和对应的容器控制器实例。图3示出了本发明的一种容器管理方法实施例的配置方法的流程,其包括:
S2110、配置自定义的资源对象类型。
其中,本步骤调用Kubernetes的CRD基于Kubernetes的资源对象格式配置自定义的资源对象类型。
示例地,本步骤使用yaml语言(用来表达数据序列化的语言)进行配置自定义的资源对象类型,至少包括对下列方面进行配置:调用的Kubernetes库apiVersion、资源对象类型kind、环境metadata进行配置。
示例地,本实施例自定义的资源对象名为RT,类型为RealTime,下面示出了其类型配置文件RealTime.yaml的部分内容。
S2120、配置自定义的资源对象的属性参数,并注册到Kubernetes中,使Kubernetes监控和管理该资源对象。
其中,本步骤调用Kubernetes的CRD基于实际场景需求配置自定义的资源对象的属性参数,并注册到Kubernetes中,成为Kubernetes的扩展资源对象,以便于Kubernetes进行监控和管理。
示例地,本步骤使用GO语言(一种编译语言,语法与C语言类似)进行配置自定义的资源对象的属性参数,至少配置所述自定义资源对象涉及的容器IP地址和端口Port属性,编译构建成可执行文件进行运行。
示例地,继续以类型为RealTime的自定义的资源对象为例,下面示出了其属性参数配置文件type.go的部分内容。
S2130、配置自定义资源对象的实例,并部署到Kubernetes中。
其中,本步骤调用Kubernetes的CRD配置自定义资源对象的实例,该自定义资源对象的实例包括向对应的容器控制器实例派发的更新事件中的期望操作,用于进行容器控制。
示例地,本实施例使用YAML语言进行配置,至少对自定义的资源对象类型、容器IP地址和端口Port及容器镜像数目replicas、自定义的资源对象的期望操作action进行配置。
其中,期望操作action与期望状态的对应关系:
期望操作为重启操作(start)->资源对象的期望状态为运行(running),
期望操作为停止操作(stop)->资源对象的期望状态为暂停(stopped),
期望操作为删除操作(delete)->资源对象的期望状态为删除(deleted)。
示例地,继续以类型为RealTime的自定义的资源对象为例,下面示出了其实例配置文件1为rt.yaml的部分内容。
S2140、配置自定义资源对象对应的容器控制器实例,并在Kubernetes中运行。
其中,本步骤调用Kubernetes的CRD对自定义资源对象的容器控制器实例进行实例化配置,实现如下功能:
(1)获取被分发自定义的资源对象的更新事件,根据所述实例的action参数确定自定义资源对象的期望操作。
(2)根据所述自定义资源对象的期望操作,调用Docker API进行相应容器控制。示例地,当所述期望操作为停止操作(Stop)时,暂停相关容器;示例地,当所述期望操作为重启操作(Start)且所述自定义资源对象已经存在时,重启相关容器。
(3)根据所述自定义资源对象的期望操作,更新所述自定义资源对象的状态。示例地,当所述期望操作为停止操作(Stop)时,更新所述自定义资源对象的状态为Stopped;示例地,当所述期望操作为重启(Start)且所述自定义资源对象已经存在时,更新所述自定义资源对象的状态为Running。
示例地,本实施例使用GO语言将编写容器控制器实例,在Kubernetes中运行,以进行至少包括容器暂停或重启的容器控制。继续以类型为RealTime的自定义的资源对象为例,下面示出了其对应的容器控制器实例的各文件目录。
【一种容器管理方法实施例二的的监控方法】
本实施例利用Kubernetes的Informer的各部件对自定义的资源对象进行监控、存储和更新事件的分发。以图4为例说明本发明的一种容器管理方法实施例的监控方法的流程,其包括:
S2210、Reflector通过Kubernetes API监控自定义的资源对象。
其中,Reflector能够监控Kubernetes中注册的所有资源对象的变更事件,包括本实施例自定义的资源对象和Kubernetes内置资源对象的变更事件。
示例地,当Reflector用于监控所述内置资源对象时,所述变更事件至少包括:添加事件(Added)、更新事件(Updated)、删除事件(Deleted)。Reflector用于监控所述自定义资源对象时,所述变更事件为更新事件(Updated),且在所述变更事件包括在所述配置实施例中定义的所述期望操作。
S2220、Reflector把监控到的自定义的资源对象的更新事件存入DeltaFIFO队列。
其中,DeltaFIFO队列为支持先进先出(First-in Fisrt-out,FIFO)的队列,以队列形式存储Kubernetes中注册的所有资源对象的变更事件。对于自定义的资源对象,存储的为自定义的资源对象的更新事件(Updated)。
S2230、Informer从DeltaFIFO队列取出自定义的资源对象和其更新事件。
其中,Informer基于队列的先进先出方式从DeltaFIFO队列POP出Kubernetes中注册的所有资源对象和其变更事件。对于本实施例POP出的是定义的资源对象和其更新事件。
S2240、Informer在Indexer中查询自定义的资源对象,若该自定义的资源对象不存在则在Indexer中创建它。
其中,在Indexer中为Kubernetes中注册的所有资源对象建立缓存数据库,在本实施例中为自定义的资源对象创建缓存。该缓存数据库为以ThreadSafeStore数据库为底层的封装,ThreadSafeStore数据库以资源对象的索引为标识进行操作。Informer或后续的对应的容器控制器实例以资源对象为标识对Indexer进行操作时,在Indexer内部表现为以所述索引为标识对ThreadSafeStore进行操作。
S2250、Informer以自定义的资源对象实例方式分发其更新事件至对应的容器控制器实例。
其中,Informer分发Kubernetes中注册的所有资源对象的变更事件,至相关的容器控制器实例进行容器控制。对于自定义的资源对象来说,分发其更新事件至对应的容器控制器实例,且以所述自定义资源对象的实例形式分发至所述配置实施例中对应的容器控制器实例,以进行容器控制。
【一种容器管理方法实施例二的的控制方法】
本实施例利用在Kubernetes中运行的对应的容器控制器实例进行容器控制。继续以图4为例说明本发明的一种容器管理方法实施例的控制方法的流程,其包括:
S2310、解析自定义的资源对象的更新事件,确定所述自定义资源对象的期望操作。
其中,自定义的资源对象的更新事件以自定义的资源对象实例方式分发,其中包括自定义的资源对象的期望操作。
示例地,继续以类型为RealTime的自定义的资源对象为例,下面示出了其实例配置文件2为rt.yaml的部分内容。
S2320、调用Dockers API接口基于所述期望操作进行所述容器控制。
当所述期望操作为启动操作(start),所述容器控制为容器重启动;
当所述期望操作为删除操作(delete),所述容器控制为容器删除;
当所述期望操作为停止操作(stop),所述容器控制为容器暂停。
S2330、基于所述期望操作对ThreadSafeStore中自定义资源对象的状态进行更新。
当所述期望操作为停止操作(stop),所述自定义资源对象的状态设置为暂停状态(Stopped);
当所述期望操作为启动操作(start),自定义资源对象的状态设置为运行状态(running);
当所述期望操作为删除操作(delete),自定义资源对象的状态设置删除状态(deleted)。
示例地,对应的容器控制器实例基于所述实例配置文件2,按照所述对应关系把自定义的资源对象设置为如下状态:
[[email protected]~]#kubectl get rt
NAME STATUS TYPE READY IMAGE NAMESPACE AGE
rt Running RealTime 3/3nginx:latest rt 48d
其中,STATUS为自定义的资源对象的状态,其值为运行(Running)。
示例地,对应的容器控制器实例基于所述实例配置文件1后,按照所述对应关系把自定义的资源对象设置为如下状态:
[[email protected]~]#kubectl get rt
NAME STATUS TYPE READY IMAGE NAMESPACE AGE
rt Stopped RealTime 3/3nginx:latest rt 48d
其中,STATUS为自定义的资源对象的状态,其值为暂停(Stopped)。
综上,一种容器管理方法实施例二在Kubernetes中通过CRD自定义资源对象和对应的容器控制器实例,所述容器控制器实例实现对容器进行控制,实现至少包括容器暂停、重启的功能,从而在物理资源受限设备中,实现容器快速暂停和快速恢复,提高资源利用率。
下面基于图5至图7C介绍本发明的一种计算机内存管理装置实施例。
【一种容器管理装置实施例一】
图5示出了一种容器管理装置实施例二的结构,其包括以下模块:
配置模块510,用于利用容器集群管理系统配置自定义的资源对象和对应的容器控制器实例。其原理和优点请参照一种容器管理方法实施例一的步骤S110。
监控模块520、用于容器集群管理系统对自定义的资源对象进行监控,并分发监控到的该资源对象的更新事件至对应的容器控制器实例。其原理和优点请参照一种容器管理方法实施例一的步骤S120、。
控制模块530、用于对应的容器控制器实例基于自定义的资源对象的更新操作事件进行容器控制,所述容器控制至少包括:容器暂停、容器重启动、容器删除。其原理和优点请参照一种容器管理方法实施例一的步骤S130。
综上,一种容器管理装置实施例一基于自定义的资源对象和容器控制器实例对容器进行控制,实现至少包括容器暂停、重启的功能,从而在物理资源受限设备中,实现容器快速暂停和快速恢复,提高资源利用率。
【一种容器管理装置实施例二】
图6示出了一种容器管理装置实施例二的结构,其包括以下模块:
第二配置模块610,用于利用Kubernetes的CRD配置自定义的资源对象和容器控制器实例。其原理和优点请参照一种容器管理方法实施例二的步骤S210,其模块结构参照一种容器管理装置实施例的第二配置模块。
第二监控模块620、用于Kubernetes对自定义的资源对象进行监控,并分发监控到的该资源对象的更新事件至对应的容器控制器实例。其原理和优点请参照一种容器管理方法实施例二的步骤S220,其模块结构参照一种容器管理装置实施例的第二监控模块。
第二控制模块630、用于对应的容器控制器实例基于自定义的资源对象的更新操作事件进行容器控制,所述容器控制至少包括:容器暂停、容器重启动、容器删除。其原理和优点请参照一种容器管理方法实施例二的步骤S230,其模块结构参照一种容器管理装置实施例的第二控制模块。
【一种容器管理装置实施例二的第二配置模块】
图7A示出了一种容器管理装置实施例二的配置模块的结构,其包括以下模块:
类型配置模块6110、用于配置自定义的资源对象类型。其原理和优点请参照一种容器管理方法实施例二的配置方法的步骤S2110。
属性配置模块61120、用于配置自定义的资源对象的属性参数,并注册到Kubernetes中,使Kubernetes监控和管理该把该资源对象。其原理和优点请参照一种容器管理方法实施例二的配置方法的步骤S2120。
实例配置模块61130、用于配置自定义资源对象的实例,并部署到Kubernetes中。其原理和优点请参照一种容器管理方法实施例二的配置方法的步骤S2130。
控制配置模块61140、用于配置对应的容器控制器实例,并在Kubernetes中运行。其原理和优点请参照一种容器管理方法实施例二的配置方法的步骤S2140。
【一种容器管理装置实施例二的第二监控模块】
图7B示出了一种容器管理装置实施例二的监控模块的结构,其包括以下模块:
事件监控模块6210、用于Reflector通过Kubernetes API监控自定义的资源对象。其原理和优点请参照一种容器管理方法实施例二的监控方法的步骤S2210。
事件存储模块6220、用于Reflector把监控到的自定义的资源对象的更新事件存入DeltaFIFO队列。其原理和优点请参照一种容器管理方法实施例二的监控方法的步骤S2220。
事件取出模块6230、用于Informer从DeltaFIFO队列取出自定义的资源对象和其更新事件。其原理和优点请参照一种容器管理方法实施例二的监控方法的步骤S2230.
事件缓存模块6240、用于Informer在Indexer中查询自定义的资源对象,若该自定义的资源对象不存在则在Indexer中创建它。其原理和优点请参照一种容器管理方法实施例二的监控方法的步骤S2240。
事件分发模块6250、用于Informer以自定义的资源对象实例方式分发其更新事件至对应的容器控制器实例。其原理和优点请参照一种容器管理方法实施例二的监控方法的步骤S2250。
【一种容器管理装置实施例二的第二控制模块】
图7C示出了一种容器管理装置实施例二的控制模块的结构,其包括以下模块:
操作解析模块6310、用于解析自定义的资源对象的更新事件,确定所述自定义资源对象的期望操作。其原理和优点请参照一种容器管理方法实施例二的控制方法的步骤S2310。
容器控制模块6320、用于调用Dockers API接口基于所述期望操作进行所述容器控制。其原理和优点请参照一种容器管理方法实施例二的控制方法的步骤S2320。
状态更新模块6330、用于基于所述期望操作对ThreadSafeStore中自定义资源对象的状态进行更新。其原理和优点请参照一种容器管理方法实施例二的控制方法的步骤S2330。
综上,一种容器管理装置实施例二的第二配置模块在Kubernetes中通过CRD自定义资源对象和对应的容器控制器实例,第二控制模块利用所述容器控制器实例实现对容器进行控制,实现至少包括容器暂停、重启的功能,从而在物理资源受限设备中,实现容器快速暂停和快速恢复,提高资源利用率。
【计算设备】
本发明还提供的一种计算设备,下面图8详细介绍。
该计算设备800包括,处理器810、存储器820、通信接口830、总线840。
应理解,该图所示的计算设备800中的通信接口830可以用于与其他设备之间进行通信。
其中,该处理器810可以与存储器820连接。该存储器820可以用于存储该程序代码和数据。因此,该存储器820可以是处理器810内部的存储单元,也可以是与处理器810独立的外部存储单元,还可以是包括处理器810内部的存储单元和与处理器810独立的外部存储单元的部件。
可选的,计算设备800还可以包括总线840。其中,存储器820、通信接口830可以通过总线840与处理器810连接。总线840可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线840可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器810可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器810采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器820可以包括只读存储器和随机存取存储器,并向处理器810提供指令和数据。处理器810的一部分还可以包括非易失性随机存取存储器。例如,处理器810还可以存储设备类型的信息。
在计算设备800运行时,所述处理器810执行所述存储器820中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备800可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备800中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
【计算介质】
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。