容器创建的调度方法、装置、介质及电子设备与流程

文档序号:20874722发布日期:2020-05-26 16:20阅读:165来源:国知局
容器创建的调度方法、装置、介质及电子设备与流程

本发明涉及计算机技术领域,具体而言,涉及一种容器创建的调度方法、容器创建的调度装置、计算机可读介质及电子设备。



背景技术:

调度是一种向处理资源分配工作载荷的方式。例如:在大规模的容器集群中,容器创建后需要进行选择一个合适的节点进行调度,从而在某个节点上创建成为容器。其中,集群中的节点作为处理资源,创建容器(container)作为待分配的工作载荷,则调度过程为在集群中寻找某一节点,用此节点创建容器。一般来说,容器先创建需要容器镜像(image)。镜像有一个镜像名,示例性的,一个完整镜像名的组成为:镜像库地址/镜像库名/镜像名:镜像标签。

现有的基于分层镜像的容器创建的调度方法一般通过容器镜像的完整镜像名选取节点进行目标容器的创建。具体可以包括,采集集群中各个节点上当前存在的容器镜像的完整镜像名,并上传到存储中。当出现一个待创建的目标容器后(例如,当目标容器进入调度器中),调度器获取目标容器的完整镜像名,然后从存储中获取集群中各个节点当前存在的完整镜像名。进一步,使用目标容器的完整镜像名与集群中各个节点上当前存储的完整镜像名进行比对。如果某节点上当前存储的完整镜像名中包括目标容器的完整镜像名,说明该节点当前已经有该目标容器的镜像,则该节点讲作为调度优先选择的创建目标容器的节点。

然而,现有技术中容器创建的调度方法调度准确性差。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明实施例的目的在于提供一种容器创建的调度方法、容器创建的调度装置、计算机可读介质及电子设备,进而至少在一定程度上克服现有技术中容器创建的调度方法调度准确性差的问题。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明实施例的第一方面,提供了一种容器创建的调度方法,包括:

获取集群中待创建容器的目标镜像层的信息;

根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息;

根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

在本发明的一些实施例中,根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息,包括:

根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点关于所述目标镜像层的统计信息。

在本发明的一些实施例中,根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息,包括:

根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点的待统计镜像层的信息;

根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息。

在本发明的一些实施例中,所述集群中各个节点的待统计镜像层的信息包括:第一目标镜像层标识、包含所述第一目标镜像层标识的节点标识。

在本发明的一些实施例中,所述待创建容器的目标镜像层的信息包括:第二目标镜像层标识、每个第二目标镜像层文件的大小;其中,

根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息,包括:

根据第二目标镜像层标识、第一目标镜像层标识以及包含所述第一目标镜像层标识的节点标识,确定所述集群中各个节点缺失的第二目标镜像层标识;

根据每个第二目标镜像层文件的大小和各个节点缺失的第二目标镜像层标识,确定各个节点缺失的所有第二目标镜像层文件的总大小。

在本发明的一些实施例中,根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,包括:

获取各个节点中缺失的第二目标镜像层的文件大小最小的节点作为所述目标节点。

在本发明的一些实施例中,所述待创建容器的目标镜像层的信息包括:第二目标镜像层标识、每个第二目标镜像层文件的大小和所有第二目标镜像层文件的总大小;其中,

根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息,包括:

初始化用于统计所述缺失信息的第一节点列表;

对于任一第二目标镜像层标识:

获取与所述第二目标镜像层标识一致的第一目标镜像层标识,并获取包含所述第一目标镜像层标识的节点标识列表作为第二节点列表;

若所述第二节点列表中的节点标识不包含在所述第一节点列表中,添加所述节点标识至所述第一节点列表,并为相应节点标识确定统计信息为所有第二目标镜像层文件的总大小减去所述第二目标镜像层标识对应的层文件的大小;

其中,所述第一节点列表包括:节点标识、与所述节点标识对应的统计信息。

在本发明的一些实施例中,根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息,包括:

若所述集群中的节点标识不存在于所述第一节点列表,为相应节点标识确定缺失信息为所有第二目标镜像层文件的总大小。

在本发明的一些实施例中,根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,包括:

获取所述集群中各个节点的缺失信息最小的节点作为所述目标节点。

在本发明的一些实施例中,获取集群中待创建容器的目标镜像层的信息,包括:

根据所述集群中待创建容器的镜像完整名从镜像中心获取的所述完整镜像名对应的镜像层的信息作为目标镜像层的信息。

根据本发明实施例的第二方面,提供了一种容器创建的调度装置,包括:

获取模块,用于获取集群中待创建容器的目标镜像层的信息;

缺失信息确定模块,用于根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息;

目标节点确定模块,用于根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

根据本发明实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的容器创建的调度方法。

根据本发明实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的容器创建的调度方法。

本发明实施例提供的技术方案可以包括以下有益效果:

在本发明的一些实施例所提供的技术方案中,通过获取集群中待创建容器的目标镜像层的信息,并根据目标镜像层的信息确定集群中各个节点关于所述目标镜像层的统计信息,进一步根据集群中各个节点关于所述目标镜像层的统计信息确定目标节点,以用于待创建容器的创建。各个节点上关于目标镜像层的统计信息直接与对应节点创建容器的效率相关,因而通过各个节点上关于目标镜像层的缺失信息确定目标节点,达到了使得创建容器对应的工作载荷被分配至上述目标节点进行处理的目的,从而有利于提高调度准确性,同时,有利于提高集群资源利用率的提高。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本发明的实施例的容器创建的调度方法的流程图;

图2示意性示出了根据本发明的实施例的统计信息的确定方法的流程图;

图3示意性示出了根据本发明的实施例的目标节点的确定方法的流程图;

图4示意性示出了根据本发明的另一实施例的目标节点的确定方法的流程图;

图5示意性示出了根据本发明的另一实施例的容器创建的调度方法的流程图;

图6示意性示出了根据本发明的实施例的容器创建的调度装置的结构图;

图7示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

现有的基于分层镜像的容器创建的调度方法主要对比了目标容器和各个节点上当前存在的镜像的完整镜像名。而在实际中,因为大部分的应用是不断迭代升级的,所以每次上线的容器的完整镜像名都是不同的。因此根据上述关于镜像的完整镜像名的比对结果可能会导致不当的调度,从而造成了现有的基于分层镜像的容器创建的调度方法调度准确性差。

图1示意性示出了根据本发明的实施例的容器创建的调度方法的流程图,至少在一定程度上克服现有技术中容器创建的调度方法调度准确性差的问题。本方法的执行主体为用于对集群资源进行调度的为调度器、调度中心等。参考图1,该方法包括:

步骤s101,获取集群中待创建容器的目标镜像层的信息;

步骤s102,根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息;以及

步骤s103,根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

在图1所示实施例所提供的技术方案中,通过获取集群中待创建容器的目标镜像层的信息,并根据目标镜像层的信息确定集群中各个节点关于所述目标镜像层的统计信息,进一步根据集群中各个节点关于所述目标镜像层的统计信息确定目标节点,以用于待创建容器的创建。各个节点上关于目标镜像层的统计信息直接与对应节点创建容器的效率相关,因而通过各个节点上关于目标镜像层的统计信息确定目标节点,达到了使得创建容器对应的工作载荷被分配至上述目标节点进行处理的目的,从而有利于提高调度准确性,同时,有利于提高集群资源利用率的提高。

以下对图1所示实施例的各个步骤的具体实现方式进行详细阐述:

在步骤s101中,待创建容器的目标镜像层的信息包括待创建容器镜像的各个层的信息,在本发明各个实施例中记作目标镜像层的信息。示例性的,容器镜像不仅包括镜像名,结构上由至少一个层组成,每层包含由若干文件组成,且每层具有全局唯一的标识。

在示例性的实施例中,镜像中心是镜像的集中存储的地方,存储有各个镜像以及镜像层数据。可以根据所述待创建容器的镜像完整名从镜像中心获取的所述完整镜像名对应的镜像层的信息作为目标镜像层的信息。

在步骤s102中,根据上述目标镜像层的信息确定集群中各个节点关于所述目标镜像层的统计信息。

在示例性的实施例中,在集群的各个节点上,可以对镜像层的信息进行更新拉取操作或者删除操作。例如:对镜像更新拉取时,从镜像中心中获取镜像相关的镜像层数据(例如为层文件),然后对比本地的镜像层数据,进而拉取该节点对于该镜像缺少的相关镜像层的数据。同时,每个镜像层包含有若干文件,因此每个镜像层文件的大小各不相同,对应拉取的成本也就不同,镜像层文件越大,拉取成本也就越大。

在示例性的实施例中,集群中节点创建一个容器,须在该节点上获取该容器使用的镜像的所有层。例如镜像imagea,包含图上层1~4四层。则创建以imagea为镜像的容器,需要该节点有全部的层,也就是层1~4。如果该节点只拥有层1,则需要该节点拉取层2~4到该节点本地,而后才能创建容器。

在示例性的实施例中,由于在节点上创建容器时需要将镜像的各个层拉取至此节点上,则如果该节点上当前存在该镜像的所有层或者部分层,则只需要将该节点缺失的层从镜像中心拉取下来即可。拉下来的镜像需要解压然后拷贝到联合文件系统中的相应文件夹中,以形成容器镜像对应的一个完整的文件系统。即集群中各个节点上当前存在一些容器镜像的镜像层的信息(包括镜像名和各个镜像层的具体内容),可以直接用于对应的容器的创建。例如:容器a包含镜像层a,而节点b上当前存在镜像层a的信息,则在节点b上创建容器a时,可以直接使用存储于节点上的镜像层a的信息,而无需从别处获取镜像层a的信息。又由于节点上容器的创建速度在很大程度上会受制于镜像拉取解压的时间。镜像拉取解压的时间则取决于该节点上缺失的各个层文件的大小之和。缺失层的层文件的大小之和越小,则镜像拉取解压越快。从而,相对于不存在镜像层a的信息的节点,节点b在创建容器a的镜像层a的耗时较少,有利于提高创建容器的效率。

在示例性的实施例中,可以根据所述目标镜像层的信息和集群中各个节点当前包含的所述目标镜像层,确定所述集群中各个节点关于所述目标镜像层的统计信息。

其中,在一种可实现的实施方式中,所述统计信息为集群中各个节点上当前包含的所有目标镜像层文件的总大小,此时统计信息的获取方式为根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点关于所述目标镜像层的统计信息。据前所述,节点上当前包含的所有目标镜像层文件的总大小越多,则节点中缺失的目标镜像层文件的越少,进而创建待创建容器的效率越高,因而,在所述统计信息为集群中各个节点上当前包含的所有目标镜像层文件的总大小的实施方式中,节点上当前包含的所有目标镜像层文件的总大小最大的为目标节点。

在另一种可实现的实施方式中,所述统计信息为集群中各个节点上当前缺失的所有目标镜像层文件的总大小,此时统计信息的获取方式可以参考图2。图2示意性示出了根据本发明的实施例的统计信息的确定方法的流程图。参考图2,包括:

步骤s201,根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点的待统计镜像层的信息;以及

步骤s202,根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息。

据前所述,节点上当前缺失的所有目标镜像层文件的总大小越多,则节点中包含的目标镜像层文件的越少,进而创建待创建容器的效率越低,因而,在所述统计信息为集群中各个节点上当前缺失的所有目标镜像层文件的总大小的实施方式中,节点上当前包含的所有目标镜像层文件的总大小最小的为目标节点。

图3示意性示出了根据本发明的实施例的目标节点的确定方法的流程图。以下结合图3的步骤s301-步骤s302解释图2的步骤s202。

在示例性的实施例中,集群中各个节点当前包含的所述目标镜像层的信息为所述各个节点定时更新在存储装置(例如持久化存储模块)中的。

示例性的,节点agent负责采集本节点当前包含的镜像层的信息。节点镜像信息结构如下:

node_id:node节点的名称或者ip等其他id;

layer_list:node上所有镜像层的id的列表;

layer_size_map:用以存储每个镜像的大小。

节点agent还将采集到的节点当前包含的镜像层的信息统一存储在持久化存储模块中,从而将采集到的节点镜像信息定时更新到持久化存储模块中。存储结构如下:

layer_id:镜像层id;

node_list:所有包含该镜像层的节点的node_id的列表;

layer_size:该镜像层文件的大小。

其中,节点agent定时更新在将采集到的节点镜像信息更新到持久化存储模块中,其步骤如下:

1.节点agent将节点镜像层的信息,即node_id和layer_list、layer_size_map发送到持久化存储模块中;

2.遍历节点镜像信息的layer_list,依次获取每个层的id;以及

3.从持久化存储模块中查找是否存在layer_id=id的记录,如果没有,则从layer_size_map获取该层文件的大小size,创建记录layer_id=id,node_list=[node_id],layer_size=size;如果有,则更新layer_id=id的记录,则查看node_list是否已有node_id,如果没有,则将node_list中加入node_id。

示例性的,节点agent删除某些镜像层的处理步骤如下:

1.节点agent将删除的层的列表layer_list和node_id信息发送到持久化存储模块中;

2.遍历layer_lis列表,依次获取每个层的id;以及

3.从持久化存储模块中查找是否存在layer_id=id的记录,如果有,则从layer_id=id记录中node_list中移除node_id。返回步骤2。

在示例性的实施例中,集群中各个节点定时更新在存储装置中的待统计镜像层的信息包括:第一目标镜像层标识、包含所述第一目标镜像层标识的节点标识;所述待创建容器的目标镜像层的信息包括:第二目标镜像层标识、每个第二目标镜像层文件的大小。

在步骤s301中,根据第二目标镜像层标识、第一目标镜像层标识以及所述包含所述第一目标镜像层标识的节点标识,确定所述集群中各个节点缺失的第二目标镜像层标识。

示例性的,待创建容器的目标镜像层的信息包括的第二目标镜像层标识、每个第二目标镜像层文件的大小,具体表示为:镜像层id1_size1、镜像层id2_size2、镜像层id3_size3以及镜像层id4_size4。集群中节点c定时更新在存储装置中的待统计镜像层的信息包括的第一目标镜像层标识、包含所述第一目标镜像层标识的节点标识,具体表示为:镜像层id1_size1、镜像层id7_size7、镜像层id8_size8以及镜像层id9_size9。通过比对可以发现,节点c当前包含的目标镜像层的信息为镜像层id1_size1,而其当前包含的镜像层id7_size7、镜像层id8_size8以及镜像层id9_size9并非用于创建上述目标容器。从而,确定所述集群中节点c缺失的所述第二目标镜像层标识为镜像层id2、镜像层id3以及镜像层id4。进一步确定集群中各个节点缺失的所述第二目标镜像层标识。

在步骤s302中,根据每个第二目标镜像层文件的大小和各个节点缺失的第二目标镜像层标识,确定各个节点缺失的所有第二目标镜像层文件的总大小。

示例性的,仍以集群中节点c为例进行说明,可以获得节点c缺失的所述第二目标镜像层标识镜像层id2、镜像层id3以及镜像层id4分别的大小:size2、size3以及size4。从而,确定所述节点c缺失的所有第二目标镜像层文件的总大小为size2+size3+size4。进一步确定集群中各个节点缺失的所有第二目标镜像层文件的总大小。

在步骤s103中,根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

在示例性的实施例中,统计信息指的是关于目标镜像层的信息的缺失。以下结合图3的步骤s303对步骤s103进行解释。

在步骤s303中,获取各个节点中缺失的第二目标镜像层的文件大小最小的节点作为目标节点。

根据步骤s302所示的具体实现方式确定的集群中各个节点缺失的所述第二目标镜像层文件的大小,获取各个节点中缺失的所述第二目标镜像层的文件大小最小的节点作为目标节点。由于缺失的第二目标镜像层文件的大小越小,从镜像中心中获取镜像相关的镜像层数据越少,进而拉取成本也就越小。从而,有利于提高创建容器的效率,同时有利于提高集群资源的利用率。

图4示意性示出了根据本发明的另一实施例的目标节点的确定方法的流程图,参考图4,该方法包括:

步骤s401,初始化用于统计所述缺失信息的第一节点列表;

步骤s402,对于任一第二目标镜像层标识:获取与所述第二目标镜像层标识一致的第一目标镜像层标识,并获取包含所述第一目标镜像层标识的节点标识列表作为第二节点列表;

步骤s403,对于任一所述第二目标镜像层标识:若所述第二节点列表中的节点标识不包含在所述第一节点列表中,添加所述节点标识至所述第一节点列表,并为相应节点标识确定统计信息为所有第二目标镜像层文件的总大小减去所述第二目标镜像层标识对应的层文件的大小;

步骤s404,确定用于统计所述缺失信息的所述第一节点列表,其中,所述第一节点列表包括:节点标识、与所述节点标识对应的缺失信息;

步骤s405,获取所述集群中各个节点的缺失信息最小的节点作为目标节点。

在示例性的实施例中,图5示意性示出了根据本发明的另一实施例的容器创建的调度方法的流程图,以下结合图5对图4各个步骤进行解释。

在示例性的实施例中,在步骤s51中,待创建容器container进入到调度器后,调度器获取该容器container的镜像完整名字,整个镜像的所有层文件的大小image_size,以及镜像的所有的层id,按照从子层到父层的顺序得到镜像层列表image_layer_list。

在示例性的实施例中,可以通过对节点打分的形式反映集群中各个节点的缺失信息的多少,则在步骤s401中用于统计所述缺失信息的第一节点列表可以使用节点打分集合node_score_map表示。并在步骤s52中初始化节点打分集合node_score_map。

在示例性的实施例中,步骤s402中,对于任一所述第二目标镜像层标识,在所述存储装置中,获取与所述第二目标镜像层标识一致的第一目标镜像层标识,并获取包含所述第一目标镜像层标识的节点标识列表作为第二节点列表。以下结合步骤s53-步骤s56对步骤s402进行解释,具体地:

在步骤s53中,遍历image_layer_list,初始化layer_index=0。在步骤s54中,获取id=image_layer_list[layer_index],在步骤s55中,从存储装置中,查找是否有layer_id==id的记录。

若存储装置中,查找到没有layer_id==id的记录,则直接执行s513。若存储装置中,查找到有layer_id==id的记录,则在步骤s56中,获取layer_id=id的记录,获取该记录的layer_size和node_list。其中,node_list即为步骤s402所述的第二节点列表。

在示例性的实施例中,步骤s403中,对于任一所述第二目标镜像层标识,响应于所述第二节点列表中的节点标识包不含在所述第一节点列表中,添加所述节点标识至所述第一节点列表,并为所述节点标识确定缺失信息为所有第二目标镜像层文件的总大小减去所述第二目标镜像层标识对应的层文件的大小。以下结合步骤s57-步骤s514对步骤s403进行解释,具体地:

在步骤s57中,遍历node_list中的node。初始化node_index=0。在步骤s58中,获取node=node_list[node_index]。在步骤s59中,判断node在节点打分集合node_score_map中已经存在。

若node在节点打分集合node_score_map中不存在,则执行步骤s510。在步骤s510中,在节点打分集合node_score_map中创建打分结果node_id=node,score=image_size-layer_size,并继续执行步骤s511。若node在节点打分集合node_score_map中已经存在,则直接执行步骤s511。在步骤s511中,node_index=node_index+1。并在步骤s512中,判断node_index是否大于node_list的长度。若node_index并不大于node_list的长度,则返回执行步骤s58。

若node_index并大于node_list的长度,则执行步骤s513,layer_index=layer_index+1。并在步骤s514中,进一步判断layer_index是否大于image_layer_list的长度。若layer_index是并不大于image_layer_list的长度,则返回执行步骤s54。若layer_index是大于image_layer_list的长度,则返回执行步骤s515。

在示例性的实施例中,响应于所述集群中的节点标识不存在于所述第一节点列表,为所述节点标识确定缺失信息为所有第二目标镜像层文件的大小。以下结合步骤s515-步骤s519对步骤s403进行解释,具体地:

在步骤s515中,获取整个集群的节点集合node_all_list。在步骤s516中,初始化node_all_index=0。在步骤s517中,获取node=node_all_list[node_all_index]。在步骤s518中,判断node是否在节点打分集合node_score_map中已经存在。若node并没在节点打分集合node_score_map中存在,则执行步骤s519。在步骤s519中,在节点打分集合node_score_map添加打分记录node_id=node,score=image_size。并继续执行步骤s520。若node在节点打分集合node_score_map中已经存在,则执行步骤s520。在步骤s520中,node_all_index=node_all_index+1。

在示例性的实施例中,在步骤s521中,判断node_all_index是否大于len(node_all_list)。若node_all_index并不大于len(node_all_list),则返回执行步骤s517。如果node_all_index大于len(node_all_list),则进入步骤s522。在步骤s522中,得到最终的节点打分集合node_score_map。并且,根据图5所示实施例的过程可见,节点打分集合node_score_map可以用于统计所述缺失信息,其中,节点打分集合node_score_map包括:节点标识、与所述节点标识对应的缺失信息。

图5所示实施例中,节点打分集合中的打分主要是计算该节点缺失的镜像层的信息的总大小,体现的是该节点拉取镜像的成本。因此,节点打分集合中节点对应的打分分值越小,说明该节点拉取镜像的成本越小。利用此节点作为目标节点越有利于创建容器的效率的提高,以及集群资源的利用率的提高。

在示例性的实施例中,步骤s405中,获取所述集群中各个节点的缺失信息最小的节点作为目标节点。

在实际使用时,节点打分集合中各个节点打分结果可以根据现有的算法,进行归一化、加权计算得到最终的打分。示例性的,比如某节点根据以上步骤的打分为score,归一化后的计算结果可以为1-(image_size-score)/image_size得到目标节点系数。目标节点系数的取值区间为[0,1]。若节点d中包含所有目标容器的镜像层的信息,则目标节点系数为1;若节点d中不包含任何目标容器的镜像层的信息,则目标节点系数为0;若节点d中包含部分目标容器的镜像层的信息,则目标节点系数为介于0到1中间。

以下介绍本发明的装置实施例,可以用于执行本发明上述的容器创建的调度方法。

图6示意性示出了根据本发明的实施例的容器创建的调度装置的结构图。参考图6,容器创建的调度装置600,包括:获取模块601、统计信息确定模块602以及目标节点确定模块603。

其中,获取模块601用于获取集群中待创建容器的目标镜像层的信息;统计信息确定模块602用于根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息;目标节点确定模块603用于根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

在示例性的实施例中,统计信息确定模块602具体用于:

根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点关于所述目标镜像层的统计信息。

在示例性的实施例中,统计信息确定模块602具体用于:

根据所述目标镜像层的信息获取所述集群中各个节点当前包含的所述目标镜像层的信息作为所述集群中各个节点的待统计镜像层的信息;

根据所述目标镜像层的信息和所述集群中各个节点的待统计镜像层的信息,确定所述集群中各个节点关于所述目标镜像层的缺失信息作为所述集群中各个节点关于所述目标镜像层的统计信息。

在示例性的实施例中,所述集群中各个节点的待统计镜像层的信息包括:第一目标镜像层标识、包含所述第一目标镜像层标识的节点标识。

在示例性的实施例中,所述待创建容器的目标镜像层的信息包括:第二目标镜像层标识、每个第二目标镜像层文件的大小,

统计信息确定模块602,包括:第一确定子模块和第二确定子模块。

其中,第一确定子模块用于根据第二目标镜像层标识、第一目标镜像层标识以及包含所述第一目标镜像层标识的节点标识,确定所述集群中各个节点缺失的第二目标镜像层标识;以及

第二确定子模块用于根据每个第二目标镜像层文件的大小和各个节点缺失的第二目标镜像层标识,确定各个节点缺失的所有第二目标镜像层文件的总大小。

在示例性的实施例中,目标节点确定模块603具体用于:

获取各个节点中缺失的第二目标镜像层的文件大小最小的节点作为所述目标节点。

在示例性的实施例中,所述待创建容器的目标镜像层的信息包括:第二目标镜像层标识、每个第二目标镜像层文件的大小和所有第二目标镜像层文件的大小,

统计信息确定模块602,包括:初始化子模块、第二目标镜像层处理子模块以及第一节点列表确定子模块。

其中,初始化子模块用于初始化用于统计所述缺失信息的第一节点列表;第二目标镜像层处理子模块用于:

对于任一第二目标镜像层标识:

获取与所述第二目标镜像层标识一致的第一目标镜像层标识,并获取包含所述第一目标镜像层标识的节点标识列表作为第二节点列表;

若所述第二节点列表中的节点标识不包含在所述第一节点列表中,添加所述节点标识至所述第一节点列表,并为相应节点标识确定缺失信息为所有第二目标镜像层文件的总大小减去所述第二目标镜像层标识对应的层文件的大小;以及

第一节点列表确定子模块用于确定用于统计所述缺失信息的所述第一节点列表,其中,所述第一节点列表包括:节点标识、与所述节点标识对应的缺失信息。

在示例性的实施例中,统计信息确定模块602具体用于:

若所述集群中的节点标识不存在于所述第一节点列表,为相应节点标识确定缺失信息为所有第二目标镜像层文件的总大小。

在示例性的实施例中,目标节点确定模块603具体用于:

获取所述集群中各个节点的缺失信息最小的节点作为所述目标节点。

在示例性的实施例中,获取模块601具体用于:

根据所述待创建容器的镜像完整名从镜像中心获取的所述完整镜像名对应的镜像层的信息作为目标镜像层的信息。

由于本发明的示例实施例的容器创建的调度装置的各个功能模块与上述容器创建的调度方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的容器创建的调度方法的实施例。

下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备的计算机系统700仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的容器创建的调度方法。

例如,所述的电子设备可以实现如图1中所示的:步骤s101,获取集群中待创建容器的目标镜像层的信息;步骤s102,根据所述目标镜像层的信息确定所述集群中各个节点关于所述目标镜像层的统计信息;步骤s103,根据所述集群中各个节点关于所述目标镜像层的统计信息确定目标节点,所述目标节点用于创建所述待创建容器。

又如,所述的电子设备可以实现如图2至图4任一图所示的各个步骤。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1