CN112214286A - 容器的启动方法、装置及电子设备 - Google Patents
容器的启动方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112214286A CN112214286A CN202011212133.7A CN202011212133A CN112214286A CN 112214286 A CN112214286 A CN 112214286A CN 202011212133 A CN202011212133 A CN 202011212133A CN 112214286 A CN112214286 A CN 112214286A
- Authority
- CN
- China
- Prior art keywords
- container
- starting
- started
- containers
- node
- 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
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/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/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种容器的启动方法、装置及电子设备,容器启动环境为预设集群中包括的多个节点,方法包括:接收容器启动请求;容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;确定多个待启动容器分别对应的容器启动耗时;其中,容器启动耗时为通过镜像启动待启动容器所需使用的时间;获取集群中各节点的当前可用资源信息;根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;目标容器分配方案中包括各个待启动容器分别对应的目标节点;按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。本申请能够提高大规模容器并发启动效率。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种容器的启动方法、装置及电子设备。
背景技术
Docker是基于go语言开发的开源项目,通过利用操作系统本身的特点实现轻量级虚拟化,同时将应用运行的整个应用环境打包成镜像并以标准的Docker镜像方式发布应用。对于传统企业来说,采用容器虚拟化技术对基础设施资源进行统一的管理,可以快速构建自己的私有云化平台,提高资源利用率;同时可以解决不同部署环境中应用的环境一致问题。
在大规模虚拟化平台下以Docker容器虚拟化技术作为实例的支撑,可以充分利用Docker容器轻量级虚拟化特点,可以快速的构建大规模的实例集群,而平台会遇见Docker容器并发启动的环境,现有技术中是通过多任务(线程或者进程)执行原生启动命令并发执行完成的。由于容器并发启动的性能与容器并发启动的规模成反比,当容器并发启动的规模达到一定程度时,启动时延很高,性能较低。当需要大规模并发启动容器时,现有方案不具备可行性。
发明内容
本申请的目的在于提供一种容器的启动方法、装置及电子设备,能够提高大规模容器并发启动效率及性能。
第一方面,本申请实施例提供一种容器的启动方法,容器启动环境为预设集群中包括的多个节点,方法包括:接收容器启动请求;容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;确定多个待启动容器分别对应的容器启动耗时;其中,容器启动耗时为通过镜像启动待启动容器所需使用的时间;获取集群中各节点的当前可用资源信息;根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;目标容器分配方案中包括各个待启动容器分别对应的目标节点;按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。
进一步的,上述确定多个待启动容器分别对应的容器启动耗时的步骤,包括:针对每个待启动容器,均执行以下步骤:通过待启动容器对应的镜像在预设节点上启动待启动容器;监控待启动容器启动完成所需要的容器启动耗时。
进一步的,上述确定多个待启动容器分别对应的容器启动耗时的步骤,包括:判断多个待启动容器分别对应的镜像中是否有相同的镜像;如果有,保留相同镜像中的一个镜像,得到多个不同的镜像;分别监控通过不同的镜像启动单个容器的时间,得到多个待启动容器分别对应的容器启动耗时。
进一步的,上述获取集群中各节点的当前可用资源信息的步骤,包括:获取集群中各个节点的组件运行信息;从组件运行信息中提取出各个节点对应的可用资源信息;其中,可用资源信息包括:CPU利用率、内存占用信息和磁盘占用信息。
进一步的,上述根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定容器分配方案的步骤,包括:根据多个待启动容器的启动所需资源信息,及各节点的当前可用资源信息,确定多种可选容器分配方案;每种可选容器分配方案中包括:各节点中多个节点分别对应的容器并发启动组合;容器并发启动组合为一个或多个待启动容器的组合;根据多个待启动容器的容器启动耗时,计算多种可选容器分配方案分别对应的总容器启动时间;将最小的总容器启动时间对应的可选容器分配方案,确定为目标容器分配方案。
进一步的,上述根据多个待启动容器的容器启动耗时,计算多种可选容器分配方案分别对应的总容器启动时间的步骤,包括:针对每种可选容器分配方案,均执行以下步骤:根据可选容器分配方案中,各个节点分别对应的容器并发启动组合中各待启动容器的容器启动耗时,计算各个节点分别对应的总容器启动耗时;将各个节点分别对应的总容器启动耗时中的最大值,作为可选容器分配方案的总容器启动时间。
进一步的,上述按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作的步骤,包括:按照目标容器分配方案中各节点的容器并发启动组合,对各个待启动容器进行预启动操作,以使各个待启动容器对应的镜像被下载到对应的目标节点上;针对每个目标节点,均执行以下操作:通过下载到目标节点上的镜像,依次在目标节点上启动镜像对应的待启动容器。
第二方面,本申请实施例还提供一种容器的启动装置,容器启动环境为预设集群中包括的多个节点,装置包括:请求接收模块,用于接收容器启动请求;容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;耗时确定模块,用于确定多个待启动容器分别对应的容器启动耗时;其中,容器启动耗时为通过镜像启动待启动容器所需使用的时间;资源获取模块,用于获取集群中各节点的当前可用资源信息;方案确定模块,用于根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;目标容器分配方案中包括各个待启动容器分别对应的目标节点;容器启动模块,用于按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。
第三方面,本申请实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述第一方面的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述第一方面所述的方法。
本申请实施例提供的容器的启动方法、装置及电子设备中,通过接收容器启动请求,获取到多个待启动容器分别对应的镜像及启动所需资源信息;然后进一步通过镜像启动待启动容器,确定多个待启动容器分别对应的容器启动耗时,然后根据多个待启动容器的启动所需资源信息和容器启动耗时,及获取到的各节点的当前可用资源信息,确定目标容器分配方案,即各个待启动容器分别对应的目标节点;按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。本申请实施例在确定目标容器分配方案时,同时考虑了待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息三个因素,可以使多个待启动容器能够进行并发启动的同时,减少总的启动耗时,从而提高大规模容器并发启动的效率及性能。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种容器的启动方法的流程图;
图2为本申请实施例提供的一种耗时检测方法的流程图;
图3为本申请实施例提供的一种容器分配方案的确定方法的流程图;
图4为本申请实施例提供的一种逻辑处理层的框架图;
图5为本申请实施例提供的一种容器的启动装置的结构框图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在需要并发启动大规模的容器的场景中,现有技术中是通过多任务(线程或者进程)执行原生启动命令并发执行完成的。由于容器并发启动的性能与容器并发启动的规模成反比,当容器并发启动的规模达到一定程度时,启动时延很高,性能较低。当需要大规模并发启动容器时,现有方案不具备可行性。
基于此,本申请实施例提供一种容器的启动方法、装置及电子设备,能够提高大规模容器并发启动的效率及性能。
本申请实施例提供的一种容器的启动方法,该方法中的容器启动环境为预设集群中包括的多个节点,每个节点可以是一个物理机或一个虚拟机,该方法的执行主体可以为构建有如下处理逻辑功能的物理机或虚拟机,可实现以下方法步骤,在实际应用中,需要并发启动的待启动容器包括成千上万个,本申请实施例提供的方法能够提高大规模容器并发启动的效率及性能。
参见图1所示的本申请实施例提供的一种容器的启动方法的流程图,上述容器的启动方法具体包括以下步骤:
步骤S102,接收容器启动请求;容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息。
这里的请求可以是同一个用户的容器启动请求,也可以是多个用户的容器启动请求,每个请求中可以携带多个待启动容器对应的镜像以及指定的启动所需资源,比如,请求A中携带有待启动容器A1、A2、A3、A4、A5分别对应的镜像I1、I2、I3、I4、I5,待启动容器A1、A2、A3、A4、A5分别对应的启动所需资源为:1核、2核、1核、2核、2核。
步骤S104,确定多个待启动容器分别对应的容器启动耗时;其中,容器启动耗时为通过镜像启动待启动容器所需使用的时间。
在进行并发启动之前,需要对请求中携带的每个待启动容器进行基准测试,主要通过上述测试获取每个待启动容器对应的容器启动耗时,也就是在对每个容器进行单独启动时所需要的时间,单个容器启动的过程为现有技术,如通过预设节点上的镜像,对该容器进行启动,从而获取到该容器的容器启动耗时。由于不同的容器可以指定同一个镜像,而同一个镜像启动时间是一样的,因此,还可以先对多个镜像进行筛选,得到不同的镜像,然后对不同的镜像进行启动单个容器的耗时检测,从而得到各个待启动容器对应的容器启动耗时,比如,在对上述待启动容器A1、A2、A3、A4、A5分别进行测试后,确定出其分别对应的容器启动耗时为10s、20s、30s、40s、50s。
步骤S106,获取集群中各节点的当前可用资源信息。
具体的,可以对集群中的各个节点进行组件运行信息的监控,确定出运行于各个节点上的组件,及各个组件的运行信息,进一步从上述组件运行信息中提取出各节点的当前可用资源信息,当前可用资源信息包括CPU利用率、内存占用信息和磁盘占用信息等。
步骤S108,根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;目标容器分配方案中包括各个待启动容器分别对应的目标节点。
具体实施时,可以根据多个待启动容器的启动所需资源信息和各节点的当前可用资源信息,确定出多种资源满足情况下的容器分配方案,每种方案中包括各个节点对应的容器并发启动组合,然后再结合多个待启动容器的容器启动耗时,筛选出比较好的目标容器分配方案,也就是确定出每个待启动容器被分配到哪个目标节点上进行启动,或者说,各个目标节点上需要启动哪几个待启动容器。
上述确定目标容器分配方案可以有多种实现方式,比如,还可以通过将待启动容器的容器启动耗时和启动所需资源信息进行组合,形成二维矩阵数据结构,然后再结合当前可用资源信息构建一种数学计算模型,通过求解得出一种最佳的容器分配方案,在此不再赘述。
步骤S110,按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。
在上述根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息确定出目标容器分配方案后,进一步按照目标容器分配方案中的容器与节点的对应情况,进行镜像下载、容器启动操作,在资源满足的情况下,可以使每个待启动容器在其目标节点上进行启动。
本申请实施例提供的容器的启动方法中,通过接收容器启动请求,获取到多个待启动容器分别对应的镜像及启动所需资源信息;然后进一步通过镜像启动待启动容器,确定多个待启动容器分别对应的容器启动耗时,然后根据多个待启动容器的启动所需资源信息和容器启动耗时,及获取到的各节点的当前可用资源信息,确定目标容器分配方案,即各个待启动容器分别对应的目标节点;按照目标容器分配方案,对各个待启动容器进行并发启动操作。本申请实施例在确定目标容器分配方案时,同时考虑了待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息三个因素,可以使多个待启动容器能够进行并发启动的同时,减少总的启动耗时,从而提高大规模容器并发启动的效率及性能。
上述确定多个待启动容器分别对应的容器启动耗时的步骤,包括:针对每个待启动容器,均执行以下步骤:通过待启动容器对应的镜像在预设节点上启动待启动容器;监控待启动容器启动完成所需要的容器启动耗时。
这种方式中,需要对每个待启动容器对应的镜像进行启动容器测试,并检测其耗时,相对来说,比较费时,为了减少对各个待启动容器的容器启动耗时的检测时间,上述容器启动耗时的检测过程还可以通过如图2所示的耗时检测方法的流程图的步骤实现:
步骤S202,判断多个待启动容器分别对应的镜像中是否有相同的镜像。
在上述容器启动请求中,每个待启动容器都指定有一个镜像,不同的容器可以指定同一个镜像,而相同镜像对应的启动参数和使用的资源及耗时是一样的,因此,首先判断一下多个镜像中有没有相同的镜像,对相同的镜像只做一次测试即可,这样可以减少检测时间,提高检测效率及性能。
步骤S204,如果有,保留相同镜像中的一个镜像,得到多个不同的镜像。
如果上述多个镜像中有相同的镜像,那么保留其中的一个,最终筛选出的镜像均为不同的。
步骤S206,分别监控通过不同的镜像启动单个容器的时间,得到多个待启动容器分别对应的容器启动耗时。
监控不同镜像启动单个容器的时间为现有技术,在此不再赘述,比如,容器1和2对应的镜像均是镜像X,那么镜像X对应的容器启动时间就是容器1和2的容器启动耗时。
上述确定目标容器分配方案的方式有多种,为了极大地提高大规模容器的并发启动效率及性能,本申请实施例提供一种容器分配方案的确定方法,参见图3所示,该容器分配方案的确定方法包括以下步骤:
步骤S302,根据多个待启动容器的启动所需资源信息,及各节点的当前可用资源信息,确定多种可选容器分配方案。
上述每种可选容器分配方案中包括:各节点中多个节点分别对应的容器并发启动组合;容器并发启动组合为一个或多个待启动容器的组合。
比如,节点1的当前可用资源信息为4核,容器1、3、6对应的启动所需资源信息分别为:1核、2核、1核,那么节点1对应的容器并发启动组合就可以为:容器1、3和6。同理,在资源满足的情况下,可以有多种节点与容器的对应方式,也就是多种容器并发启动组合方式,从而会得到多种可选容器分配方案。
步骤S304,根据多个待启动容器的容器启动耗时,计算多种可选容器分配方案分别对应的总容器启动时间。
具体实施时,针对每种可选容器分配方案,均执行以下步骤:
(1)根据可选容器分配方案中,各个节点分别对应的容器并发启动组合中各待启动容器的容器启动耗时,计算各个节点分别对应的总容器启动耗时;
(2)将各个节点分别对应的总容器启动耗时中的最大值,作为可选容器分配方案的总容器启动时间。
比如,在可选容器分配方案1中,节点1对应的容器并发启动组合为:容器1、2和4,相应的容器启动耗时分别为5s、7s和10s,那么该节点1对应的总容器启动耗时为5+7+10=22s,同理,可以计算出每个节点对应的总容器启动耗时,进一步可以确定出各个节点对应的多个总容器启动耗时中的最大值,也就得到该可选容器分配方案1的总容器启动时间。
步骤S306,将最小的总容器启动时间对应的可选容器分配方案,确定为目标容器分配方案。
比如,可选容器分配方案1、2、3、4……N中,分别对应的总容器启动时间为30s、20s、10s、40s……15s,其中的最小值为10s,那么就将10s对应的可选容器分配方案3作为目标容器分配方案。
由于各个节点上的容器是并发启动的,所以各个节点对应的总容器启动耗时中的最大值也就是该方案对应的容器启动时间,这个时间越小,容器启动效率及性能越高,将容器启动时间最小的方案作为目标容器分配方案,按照这个方案进行容器并发启动,可以大大提高多个待启动容器的并发启动效率及性能。
为了进一步提高容器并发启动效率及性能,本申请实施例中,还包括对各待启动容器的预启动过程,具体包括以下步骤:
(1)按照目标容器分配方案中各节点的容器并发启动组合,对各个待启动容器进行预启动操作,以使各个待启动容器对应的镜像被下载到对应的目标节点上;
此外,预启动操作还包括网络环境准备工作、调度资源等,需要调度的资源包括:CPU利用率、内存使用信息、缓存容器类型、不同类型容器数量、开始缓存容器的时间等,也就是进行一些与实际启动不相关的比较耗时的准备工作。上述预启动是针对所有的待启动容器进行的,也就是说,各个待启动容器同时进行预启动操作,以确保每个待启动容器对应的镜像被下载到对应的目标节点上。这样操作可以进一步缓解容器并发启动时容器启动时延过大的问题,进一步提高并发启动性能。
(2)针对每个目标节点,均执行以下操作:通过下载到目标节点上的镜像,依次在目标节点上启动镜像对应的待启动容器。
各个目标节点同时进行容器并发启动操作,而每个目标节点上根据多个镜像依次启动对应的容器。
上述方法步骤的实现依赖于在物理机或虚拟上构建的逻辑处理层,可以简称为pond,其框架图如图4所示,具体包括以下组件:
A.http server:用于处理来自于Internet的高并发http请求;
B.job scheduler:用于根据http请求对容器进行调度;
C.system watcher:用于实时监控系统运行情况,如集群中各节点的运行信息,可用资源信息等;
D.event controller:用于系统内部消息通信控制;
E.container scheduler:用于创建删除容器实例调度管理;
F.timer task:用于定时器管理;
G.docker client:为容器客户端;
H.cache:为数据缓存,比如redis或者etcd等存储方式。
上述容器客户端再与docker daemon容器服务端进行交互,生成容器container。通过上述框架可以接收容器启动请求,并进行各节点信息监控以及根据请求中的信息和监控得到的信息对容器相关数据进行分析处理,确定出较好的容器分配方案,以减少大规模容器启动时间,提高大规模容器并发启动的效率。
本申请实施例提供的容器的启动方法,同时考虑了待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息三个因素,可以使多个待启动容器能够进行并发启动的同时,减少总的启动耗时,从而提高大规模容器并发启动的效率及性能。
基于上述方法实施例,本申请实施例还提供一种容器的启动装置,容器启动环境为预设集群中包括的多个节点,参见图5所示,该装置包括:
请求接收模块502,用于接收容器启动请求;容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;
耗时确定模块504,用于确定多个待启动容器分别对应的容器启动耗时;其中,容器启动耗时为通过镜像启动待启动容器所需使用的时间;
资源获取模块506,用于获取集群中各节点的当前可用资源信息;
方案确定模块508,用于根据多个待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;目标容器分配方案中包括各个待启动容器分别对应的目标节点;
容器启动模块510,用于按照目标容器分配方案,对各个待启动容器进行预启动及并发启动操作。
在另一种可能的实施方式中,上述耗时确定模块504还用于,针对每个待启动容器,均执行以下步骤:通过待启动容器对应的镜像在预设节点上启动待启动容器;监控待启动容器启动完成所需要的容器启动耗时。
在另一种可能的实施方式中,上述资源获取模块506还用于,获取集群中各个节点的组件运行信息;从组件运行信息中提取出各个节点对应的可用资源信息;其中,可用资源信息包括:CPU利用率、内存占用信息和磁盘占用信息。
在另一种可能的实施方式中,上述方案确定模块508还用于,根据多个待启动容器的启动所需资源信息,及各节点的当前可用资源信息,确定多种可选容器分配方案;每种可选容器分配方案中包括:各节点中多个节点分别对应的容器并发启动组合;容器并发启动组合为一个或多个待启动容器的组合;根据多个待启动容器的容器启动耗时,计算多种可选容器分配方案分别对应的总容器启动时间;将最小的总容器启动时间对应的可选容器分配方案,确定为目标容器分配方案。
在另一种可能的实施方式中,上述方案确定模块508还用于:针对每种可选容器分配方案,均执行以下步骤:根据可选容器分配方案中,各个节点分别对应的容器并发启动组合中各待启动容器的容器启动耗时,计算各个节点分别对应的总容器启动耗时;将各个节点分别对应的总容器启动耗时中的最大值,作为可选容器分配方案的总容器启动时间。
在另一种可能的实施方式中,上述容器启动模块510还用于,按照目标容器分配方案中各节点的容器并发启动组合,对各个待启动容器进行预启动操作,以使各个待启动容器对应的镜像被下载到对应的目标节点上;针对每个目标节点,均执行以下操作:通过下载到目标节点上的镜像,依次在目标节点上启动镜像对应的待启动容器。
本申请实施例提供的容器的启动装置,其实现原理及产生的技术效果和前述容器的启动方法实施例相同,为简要描述,容器的启动装置的实施例部分未提及之处,可参考前述容器的启动方法实施例中相应内容。
本申请实施例还提供了一种电子设备,如图6所示,为该电子设备的结构示意图,其中,该电子设备包括处理器61和存储器60,该存储器60存储有能够被该处理器61执行的计算机可执行指令,该处理器61执行该计算机可执行指令以实现上述方法。
在图6示出的实施方式中,该电子设备还包括总线62和通信接口63,其中,处理器61、通信接口63和存储器60通过总线62连接。
其中,存储器60可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线62可以是ISA(IndustryStandard Architecture,工业标准体系结构)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线62可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器61可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器61中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器61可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器61读取存储器中的信息,结合其硬件完成前述实施例的方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述方法,具体实现可参见前述方法实施例,在此不再赘述。
本申请实施例所提供的容器的启动方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本申请的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种容器的启动方法,其特征在于,容器启动环境为预设集群中包括的多个节点,所述方法包括:
接收容器启动请求;所述容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;
确定多个所述待启动容器分别对应的容器启动耗时;其中,所述容器启动耗时为通过镜像启动所述待启动容器所需使用的时间;
获取集群中各节点的当前可用资源信息;
根据多个所述待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;所述目标容器分配方案中包括各个所述待启动容器分别对应的目标节点;
按照所述目标容器分配方案,对各个所述待启动容器进行预启动及并发启动操作。
2.根据权利要求1所述的方法,其特征在于,确定多个所述待启动容器分别对应的容器启动耗时的步骤,包括:
针对每个所述待启动容器,均执行以下步骤:
通过所述待启动容器对应的镜像在预设节点上启动所述待启动容器;
监控所述待启动容器启动完成所需要的容器启动耗时。
3.根据权利要求1所述的方法,其特征在于,确定多个所述待启动容器分别对应的容器启动耗时的步骤,包括:
判断多个所述待启动容器分别对应的镜像中是否有相同的镜像;
如果有,保留相同镜像中的一个镜像,得到多个不同的镜像;
分别监控通过所述不同的镜像启动单个容器的时间,得到多个所述待启动容器分别对应的容器启动耗时。
4.根据权利要求1所述的方法,其特征在于,获取集群中各节点的当前可用资源信息的步骤,包括:
获取集群中各个节点的组件运行信息;
从所述组件运行信息中提取出各个节点对应的可用资源信息;其中,所述可用资源信息包括:CPU利用率、内存占用信息和磁盘占用信息。
5.根据权利要求1所述的方法,其特征在于,根据多个所述待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定容器分配方案的步骤,包括:
根据多个所述待启动容器的启动所需资源信息,及各节点的当前可用资源信息,确定多种可选容器分配方案;每种可选容器分配方案中包括:各节点中多个节点分别对应的容器并发启动组合;所述容器并发启动组合为一个或多个所述待启动容器的组合;
根据多个所述待启动容器的容器启动耗时,计算多种所述可选容器分配方案分别对应的总容器启动时间;
将最小的总容器启动时间对应的可选容器分配方案,确定为所述目标容器分配方案。
6.根据权利要求5所述的方法,其特征在于,根据多个所述待启动容器的容器启动耗时,计算多种所述可选容器分配方案分别对应的总容器启动时间的步骤,包括:
针对每种可选容器分配方案,均执行以下步骤:
根据所述可选容器分配方案中,各个节点分别对应的容器并发启动组合中各待启动容器的容器启动耗时,计算各个节点分别对应的总容器启动耗时;
将各个节点分别对应的总容器启动耗时中的最大值,作为所述可选容器分配方案的总容器启动时间。
7.根据权利要求1所述的方法,其特征在于,按照所述目标容器分配方案,对各个所述待启动容器进行预启动及并发启动操作的步骤,包括:
按照所述目标容器分配方案中各节点的容器并发启动组合,对各个所述待启动容器进行预启动操作,以使各个所述待启动容器对应的镜像被下载到对应的目标节点上;
针对每个目标节点,均执行以下操作:
通过下载到所述目标节点上的镜像,依次在所述目标节点上启动所述镜像对应的待启动容器。
8.一种容器的启动装置,其特征在于,容器启动环境为预设集群中包括的多个节点,所述装置包括:
请求接收模块,用于接收容器启动请求;所述容器启动请求中携带有多个待启动容器分别对应的镜像及启动所需资源信息;
耗时确定模块,用于确定多个所述待启动容器分别对应的容器启动耗时;其中,所述容器启动耗时为通过镜像启动所述待启动容器所需使用的时间;
资源获取模块,用于获取集群中各节点的当前可用资源信息;
方案确定模块,用于根据多个所述待启动容器的启动所需资源信息和容器启动耗时,及各节点的当前可用资源信息,确定目标容器分配方案;所述目标容器分配方案中包括各个所述待启动容器分别对应的目标节点;
容器启动模块,用于按照所述目标容器分配方案,对各个所述待启动容器进行预启动及并发启动操作。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011212133.7A CN112214286B (zh) | 2020-11-03 | 2020-11-03 | 容器的启动方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011212133.7A CN112214286B (zh) | 2020-11-03 | 2020-11-03 | 容器的启动方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112214286A true CN112214286A (zh) | 2021-01-12 |
CN112214286B CN112214286B (zh) | 2023-06-13 |
Family
ID=74058143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011212133.7A Active CN112214286B (zh) | 2020-11-03 | 2020-11-03 | 容器的启动方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214286B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160378519A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Method and system for anticipating demand for a computational resource by containers running above guest operating systems within a distributed, virtualized computer system |
CN106648906A (zh) * | 2017-01-16 | 2017-05-10 | 杭州星数科技有限公司 | 容器云资源智能回收与启用的系统及方法 |
CN109117264A (zh) * | 2017-06-20 | 2019-01-01 | 三星电子株式会社 | 容器工作负载调度器以及调度容器工作负载的方法 |
CN109302314A (zh) * | 2018-09-28 | 2019-02-01 | 深信服科技股份有限公司 | 一种被控节点模拟方法及相关装置 |
US20200285527A1 (en) * | 2019-03-05 | 2020-09-10 | Fujitsu Limited | Determination method, information processing apparatus, and storage medium |
CN111654528A (zh) * | 2020-05-19 | 2020-09-11 | 无锡江南计算技术研究所 | 一种面向申威平台的容器镜像分发方法 |
-
2020
- 2020-11-03 CN CN202011212133.7A patent/CN112214286B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160378519A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Method and system for anticipating demand for a computational resource by containers running above guest operating systems within a distributed, virtualized computer system |
CN106648906A (zh) * | 2017-01-16 | 2017-05-10 | 杭州星数科技有限公司 | 容器云资源智能回收与启用的系统及方法 |
CN109117264A (zh) * | 2017-06-20 | 2019-01-01 | 三星电子株式会社 | 容器工作负载调度器以及调度容器工作负载的方法 |
CN109302314A (zh) * | 2018-09-28 | 2019-02-01 | 深信服科技股份有限公司 | 一种被控节点模拟方法及相关装置 |
US20200285527A1 (en) * | 2019-03-05 | 2020-09-10 | Fujitsu Limited | Determination method, information processing apparatus, and storage medium |
CN111654528A (zh) * | 2020-05-19 | 2020-09-11 | 无锡江南计算技术研究所 | 一种面向申威平台的容器镜像分发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112214286B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200192707A1 (en) | Performance-based hardware emulation in an on-demand network code execution system | |
JP2018537776A (ja) | コード実行要請ルーティング | |
US8572621B2 (en) | Selection of server for relocation of application program based on largest number of algorithms with identical output using selected server resource criteria | |
CN112256417B (zh) | 一种数据请求处理方法、装置及计算机可读存储介质 | |
CN105302641B (zh) | 虚拟化集群中进行节点调度的方法及装置 | |
US11068317B2 (en) | Information processing system and resource allocation method | |
CN112162856A (zh) | Gpu虚拟资源的分配方法、装置、计算机设备和存储介质 | |
CN112799596A (zh) | 一种存储资源的扩容控制方法、装置及电子设备 | |
CN115292014A (zh) | 图像渲染方法、装置和服务器 | |
CN112199192A (zh) | 基于服务器部署Kubernetes集群精细化管理配额的方法及系统 | |
Koziolek et al. | Lightweight Kubernetes distributions: a performance comparison of MicroK8s, k3s, k0s, and Microshift | |
CN114816709A (zh) | 任务调度方法、装置、服务器及可读存储介质 | |
CN109426544A (zh) | 虚拟机部署方法和装置 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN111953503A (zh) | Nfv资源部署编排方法和网络功能虚拟化编排器 | |
CN116954873B (zh) | 异构计算系统及其算力节点选择方法、装置、设备、介质 | |
CN112214286B (zh) | 容器的启动方法、装置及电子设备 | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和系统 | |
US20210149726A1 (en) | Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium | |
CN114296865A (zh) | 一种虚拟机线程的调度方法、装置、电子设备及存储介质 | |
CN114756451A (zh) | 电网系统的安全测试方法、装置、计算机设备、存储介质 | |
CN114124763A (zh) | 一种宽带接入速率的测量方法及系统 | |
CN113485933A (zh) | 自动化测试方法和分布式系统 | |
CN112835996A (zh) | 一种地图生产系统及其方法 | |
CN111581041A (zh) | 一种磁盘性能测试的方法和设备 |
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 |