掌桥专利:专业的专利平台
掌桥专利
首页

新容器部署方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:58:26


新容器部署方法、装置、电子设备及存储介质

技术领域

本发明涉及IT与软件开发技术领域,尤其涉及一种新容器部署方法、装置、电子设备及存储介质。

背景技术

在集群中需要部署新的容器时,需要选择出集群中的一个宿主机部署新的容器,选择出一个宿主机的策略分为预选阶段策略和优选阶段策略。其中预选阶段主要用于校验宿主机资源、端口等硬性要求是否满足容器的部署,优选阶段从均衡分配的角度考虑各宿主机的容器数量与资源使用率,为新生成的容器选择合适的宿主机进行部署。

当找不到满足资源需求的宿主机节点进行容器部署时,无法自动将新的容器部署在集群,此时其实各个宿主机资源尚有剩余,就需要运维人员介入,运维人员控制将新的容器部署在集群的宿主机中,流程比较复杂,效率比较低。

发明内容

本发明提供一种新容器部署方法、装置、电子设备及存储介质,能够给出集群内的每个宿主机中的容器和新容器部署在宿主机的多种调度方案,从中找出一个调度方案进行部署新的容器,这样无需人工介入,自动将新容器部署在集群中,简化了部署流程,且提高了部署效率。

第一方面,本发明实施例提供一种集群下新容器部署方法,包括:

在集群下有新容器需要部署后,确定集群内的每个宿主机中的容器和所述新容器部署在集群内的宿主机中,满足新容器部署需求的调度方案;

若所述调度方案的个数为多个,则从多种调度方案中,选择一种调度方案;

按照选择的所述调度方案将集群内的宿主机中需要调度的容器进行调度以及部署所述新容器。

上述方法,将集群内的每个宿主机中的容器和新容器,进行多种可能的部署,得到满足新容器部署需求的调度方案,并从多个调度方案中,可以选择一个调度方案,按照该调度方案进行部署新的容器,这样无需人工介入,自动将新容器部署在集群中,简化了部署流程,且提高了部署效率。

在一种可能实施的方式中,其中,满足新容器部署需求的调度方案执行完成后集群内的每个宿主机中的容器和新容器均部署在集群内的宿主机中;

且满足新容器部署需求的调度方案执行完成后集群内的每个宿主机已使用的资源不超过集群内的每个宿主机提供的资源。

上述方法,能够通过确定选择的调度方案中宿主机原有的容器和新的容器均设置在宿主机中,同时,宿主机已使用的资源不超过宿主机提供的资源,这样避免新容器部署后使得宿主机无法正常进行工作的情况。

在一种可能实施的方式中,从多种调度方案中,选择一种调度方案,包括:

根据每种调度方案的可行性因素,对每种调度方案进行评分;

根据每种调度方案的评分,选择一种调度方案;

其中,调度方案的可行性因素包括以下部分或全部:调度方案执行完成后集群内的每个宿主机已使用的资源、集群内的每个宿主机提供的资源、调度方案中需要调度的容器的实际启动时间。

上述方法,能够在满足新容器部署需求的调度方案有多个时,采用宿主机已使用的资源、可提供的资源,以及需要调度的容器的实际启动时间,再次选择一个调度方案,这样选择出资源利用合理高,以及调度比较少的调度方案,提高了的部署的效率。

在一种可能实施的方式中,根据每种调度方案的可行性因素,对每种调度方案进行评分,包括:

根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案的资源碎片率;

根据每种调度方案中需要调度的容器的实际启动时间,确定每种调度方案的调度效率;

根据每种调度方案的资源碎片率和每种调度方案的调度效率,确定每种调度方案的评分。

上述方法,将调度方案执行完成后集群内的每个宿主机已使用的资源、集群内的每个宿主机提供的资源、调度方案中需要调度的容器的实际启动时间进行分开,分别计算资源的因素和部署所需的时间的因素,确定评分,这样区分两种因素确定评分,提高了评分的准确率。

在一种可能实施的方式中,根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案的资源碎片率,包括:

根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差;

根据每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差,确定每种调度方案的资源碎片率。

上述方法,能够通过宿主机所剩的资源的标准差,确定资源碎片率,这样更加合理的表征综合集群内的多个宿主机剩余资源的情况。

在一种可能实施的方式中,根据每种调度方案中需要调度的容器的实际启动时间,确定每种调度方案的调度效率,包括:

根据每种调度方案中需要调度的容器的实际启动时间之和,与需要调度的容器的预设启动时间之和之间的比值,确定每种调度方案的调度效率。

上述方法,能够通过需要调度的实际启动时间和预设启动之间的比值,确定调度效率,这样能够更加合理的表征调度方案对宿主机已有容器重新调度的情况。

在一种可能实施的方式中,根据每种调度方案的资源碎片率和每种调度方案的调度效率,确定每种调度方案的评分,包括:

将每种调度方案的调度效率减去每种调度方案的资源碎片率的值,作为每种调度方案的评分。

上述方法,能够将调度效率减去资源碎片率的值,这样效率越高,资源碎片率越低,评分越高,调度方案越高,这样能够更加合理的选择出调度方案。

第二方面,本发明实施例提供了一种集群下新容器部署装置,包括:

确定模块,用于在集群下有新容器需要部署后,确定集群内的每个宿主机中的容器和所述新容器部署在集群内的宿主机中,满足新容器部署需求的调度方案;

选择模块,用于若所述调度方案的个数为多个,则从多种调度方案中,选择一种调度方案;

部署模块,用于按照选择的所述调度方案将集群内的宿主机中需要调度的容器进行调度以及部署所述新容器。

第三方面,本发明实施例提供一种电子设备,包括:

处理器;

处理器,用于执行所述存储器中的计算机程序或指令,使得如第一方面中任一所述的集群下新容器部署方法被执行。

第四方面,本发明实施例提供一种计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行如第一方面中任一所述的集群下新容器部署方法。

第五方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述如第一方面中任一所述的集群下新容器部署方法。

另外,第二方面至第五方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。

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

附图说明

图1为一种集群下新容器部署的流程的示意图;

图2为本发明实施例提供的一种集群下新容器部署方法的流程图;

图3为本发明实施例提供的第一种调度方案执行完成前后的集群中宿主机内的容器的部署情况示意图;

图4为本发明实施例提供的第二种调度方案执行完成前后的集群中宿主机内的容器的部署情况示意图;

图5为本发明实施例提供的第三种调度方案执行完成前后的集群中宿主机内的容器的部署情况示意图;

图6为本发明实施例提供的一种从多种调度方案中选择一个调度方案的示意图;

图7为本发明实施例提供的一种确定每种调度方案的评分的示意图;

图8为本发明实施例提供的另一种集群下新容器部署方法的流程图;

图9为本发明实施例提供的一种集群下新容器部署装置的结构示意图;

图10为本发明实施例提供的一种集群下的组件的示意图;

图11为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

其中,在本申请实施例的描述中,除非另有说明,在本申请实施例的描述中,“多个”是指两个或多于两个。

以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本发明中名词的解释:

容器:可以理解为一个软件包,这个软件包提供应用程序的完整的运行时环境。包括:应用程序的代码、相关配置文件、库以及运行应用程序所需的依赖项等;

Kubernetes:是一个开源的、用于管理云平台中多个主机上的容器化的应用,简称k8s,目标是让部署容器应用简单并且高效,为其中部署的容器提供多种调度方法;

宿主机:被纳管进k8s集群里的虚拟机或物理机被称为宿主机,为部署在其中的容器提供内存、CPU等资源。

以Kubernetes集群为例,在Kubernetes集群中需要部署新的容器时,需要选择出Kubernetes集群中的一个宿主机部署新的容器,选择出一个宿主机的策略分为预选阶段策略和优选阶段策略。

预选阶段的策略有:

MatchNodeSelector:判断节点的label(标签)是否满足Pod(容器)的nodeSelector属性值;节点可以理解为宿主机;

PodFitResource:判断节点的资源是否满足Pod的需求,批判的标准是:当前节点已运行的所有Pod的request(需求)值和新的Pod的request值是否超过节点的资源容量;该request值可以理解为该pod所需的资源;

PodFitHostPort:判断新的Pod的端口所映射的节点端口是否被节点其他Pod所占用;

CheckNodeMemoryPressure:判断新的Pod是否可以调度到内存有压力的节点,这取决于新的Pod的Qos配置,如果是BestEffort(尽量满足,优先级最低),则不允许调度;

优选阶段的策略有:

SelectorSpreadPriority:尽量减少节点上同属一个SVC(services)/RC(replicationcontrollers)/RS(replicasets)的Pod副本数,为了更好的实现容灾,对于同属一个SVC/RC/RS的Pod实例,应尽量调度到不同的node节点;其中,SVC/RC/RS为Kubernetes中所支持的资源类型。

LeastRequestPriority:优先调度到请求资源较少的节点,节点的优先级由节点的空闲资源与节点总容量的比值决定的,即(节点总容量-已经运行的Pod所需资源)/节点总容量,CPU和Memory具有相同的权重,最终的值由这两部分组成;

BalancedResourceAllocation:该策略不能单独使用,必须和LeaseRequestPriority策略一起结合使用,尽量调度到CPU(Central Processing Unit,中央处理器)资源和Memory(内存)资源使用均衡的节点上。

其中预选阶段主要用于校验宿主机资源、端口等硬性要求是否满足容器的部署,优选阶段从均衡分配的角度考虑各宿主机的容器数量与资源使用率,为新生成的容器选择合适的宿主机进行部署。这两个阶段的策略均只对新增加的容器进行计算与调度,不会对已经部署的容器进行重新计算与二次调度。

结合图1所示,当需要部署新的容器,且通过上述策略又找不到满足资源需求的宿主机节点进行新的容器部署时,此时其实各个宿主机资源尚有剩余,就需要运维人员介入计算并对现存容器进行删除、迁移和二次调度,重新为新容器腾出满足资源要求的宿主机,再进行新的容器部署。上述部署流程比较复杂,效率比较低。

基于上述内容,本发明实施例提供一种需要部署新的容器的方案,将集群内的每个宿主机中的原有的容器和新的容器,部署在集群内的宿主机中,得到多个调度方案,可以选择满足新容器部署需求的调度方案,按照调度方案进行新的容器的部署,这样无需人工介入,简化了部署流程,提高了部署效率。

以下结合附图进行详细说明本发明:

结合图2所示,本发明实施例提供了一种集群下新容器部署方法,包括:

S200:在集群下有新容器需要部署后,确定集群内的每个宿主机中的容器和新容器部署在集群内的宿主机中,满足新容器部署需求的调度方案;

详细来说,将集群内的每个宿主机中的原有的容器,重新部署集群内的宿主机,新容器部署集群内的宿主机,将部署的多种可能的方案,然后将多种可能的方案去除不满足新容器部署需求的可能的方案,基于剩下的方案,形成调度方案。

实现方式为,将集群内的每个宿主机中的容器和新容器进行组合,得到多个组合,并将多个组合组成多个集合;其中,每个集合中包含的组合的数量与集群内的宿主机的数量相同;为每个集合中的组合匹配集群内的宿主机,得到多个可能的方案;从多个可能的方案中,剔除不满足新容器部署需求的可能的方案;基于剩下的方案,确定调度方案。

基于剩下的方案,确定调度方案的实现方式为:基于容器所在的原有的宿主机和容器所在的新的宿主机,确定原有容器的调度过程,基于新容器所在的宿主机,确定新容器的部署过程,将原有容器的调度过程和新容器的部署过程组成调度方案,例如,宿主机A包括容器a、容器b和容器c,宿主机B包括容器d、容器e,剩下的方案为:宿主机A包括新容器、容器b、容器c,宿主机B包括容器a、容器d、容器e,那么调度方案为,将容器a调度到宿主机B,新容器部署到宿主机A。

示例性的,结合图3所示,Kubernetes集群内的宿主机包括宿主机A、宿主机B、宿主机C;宿主机A中的原有的容器为容器a、容器b、容器c;宿主机B中原有的容器为容器d、容器e;宿主机C中原有的容器为容器f、容器g;

Kubernetes集群内的所有宿主机中的容器为容器a~容器g,将容器a~容器g进行多种组合,例如容器a、新容器为一组,容器b为一组,容器c为一组,这三组为一个集合;容器a、新容器为一组,容器b~容器f为一组,容器g为一组,这三组为一个集合;容器a、容器b、新容器为一组,容器c~容器f为一组,容器g为一组,这三组为一个集合;容器a、容器b、容器c、新容器为一组,容器d~容器f为一组,容器g为一组,这三组为一个集合;容器a、容器b、容器c为一组,容器d~容器f为一组,容器g、新容器为一组,这三组为一个集合;依次类推,得到多个集合。

然后为每个集合中的组合匹配宿主机,容器a、新容器为一组匹配宿主机A,容器b~容器f为一组匹配宿主机B,容器g为一组匹配宿主机C;容器a、新容器为一组匹配宿主机B,容器b~容器f为一组匹配宿主机C,容器g为一组匹配宿主机A;依次类推,将三个组合和三个宿主机进行两两配对,得到9种匹配结果。将每个集合均进行上述匹配,得到集合个数乘以9的可能的方案。

其中,满足新容器部署需求的调度方案执行完成后集群内的每个宿主机中的容器和新容器均部署在集群内的宿主机中;

且满足新容器部署需求的调度方案执行完成后集群内的每个宿主机已使用的资源不超过集群内的每个宿主机提供的资源。

例如,Kubernetes集群内的宿主机中原有的容器为容器a~容器f,以及新容器,那么容器a、新容器为一组,容器b为一组,容器c为一组,这三组为一个集合,该集合不包含Kubernetes集群内的宿主机中原有的容器和新容器;所以,这个集合组成的方案不满足新容器部署需求;

宿主机A、宿主机B、宿主机C提供的资源均为10G,容器a所需的资源为2G、容器b所需的资源为3G、容器c所需的资源为3G、容器d所需的资源为4G、容器e所需的资源为4G、容器f所需的资源为3G、容器g所需的资源为4G、新容器所需的资源为4G;

以三个可能的方案为例:

再结合图3所示,当可能的方案1为:容器a、新容器为一组匹配宿主机A,容器b~容器f为一组匹配宿主机B,容器g为一组匹配宿主机C,可能的方案1执行完成后宿主机A已使用的资源,也就是说宿主机A中容器所需的资源之和,容器a的2G和新容器的4G之和,6G;可能的方案1执行完成后宿主机B已使用的资源,等于容器b的3G、容器c的3G、容器d的4G、容器e的4G、容器f的3G之和,17G;可能的方案1执行完成后宿主机C已使用的资源,等于容器g的4G;由于该可能的方案中,宿主机B已使用的资源17G超过宿主机B提供的资源10G,那么该可能的方案1不满足新容器部署需求。

结合图4所示,当可能的方案2执行完之后,宿主机A中的容器为容器f、容器b、容器c;宿主机B中的容器为容器a、容器d、容器e;宿主机C中的容器为新容器、容器g;该方案2中的容器包含Kubernetes集群内的每个宿主机中的容器和新容器;宿主机A已使用的资源等于容器f的3G、容器b的3G、容器c的3G之和,为9G;宿主机B已使用的资源等于容器a的2G、容器d的4G、容器e的4G之和,为10G;宿主机C已使用的资源等于新容器的4G、容器g的4G之和,为8G;Kubernetes集群内的每个宿主机已使用的资源均不超过Kubernetes集群内的每个宿主机提供的资源;即该方案2为满足新容器需求的方案,该方案2确定的调整方案2为:容器a调度至宿主机B,容器f调度至宿主机A,将新容器部署在宿主机C;

结合图5所示,当可能的方案3执行完之后,宿主机A中的容器为容器g、容器b、容器c;宿主机B中的容器为容器a、容器d、容器e;宿主机C中的容器为新容器、容器f;该方案3中的容器包含Kubernetes集群内的每个宿主机中的容器和新容器;宿主机A已使用的资源等于容器g的4G、容器b的3G、容器c的3G之和,为10G;宿主机B已使用的资源等于容器a的2G、容器d的4G、容器e的4G之和,为10G;宿主机C已使用的资源等于新容器的4G、容器f的3G之和,为7G;Kubernetes集群内的每个宿主机已使用的资源均不超过Kubernetes集群内的每个宿主机提供的资源;即该方案3为满足新容器需求的方案,该方案3确定的调整方案3为:容器a调度至宿主机B,容器g调度至宿主机A,将新容器部署在宿主机C;

多个调度方案包含:调度方案2:容器a调度至宿主机B,容器f调度至宿主机A,将新容器部署在宿主机C;调度方案3:容器a调度至宿主机B,容器g调度至宿主机A,将新容器部署在宿主机C。

S201:若调度方案的个数为多个,则从多种调度方案中,选择一种调度方案;

S202:按照选择的调度方案将集群内的宿主机中需要调度的容器进行调度以及部署新容器。

例如,确定的调度方案包括调度方案2和调度方案3,从调度方案2和调度方案3中选择一个调度方案,例如,选择的是调度方案2,执行调度方案2;其中,调度方案2为容器a调度至宿主机B,容器f调度至宿主机A,将新容器部署在宿主机C,那么需要调度的容器为容器a、容器f;选择的是调度方案3,执行调度方案3;其中,调度方案3为容器a调度至宿主机B,容器g调度至宿主机A,将新容器部署在宿主机C,那么需要调度的容器为容器a、容器g。

若调度方案的个数为一个,那么直接将该调度方案作为选择的调度方案。

其中,结合图6所示,本发明实施例提供的从多种调度方案中,选择一种调度方案的具体实现方式为:

S600:根据每种调度方案的可行性因素,对每种调度方案进行评分;

S601:根据每种调度方案的评分,选择一种调度方案;

其中,调度方案的可行性因素包括以下部分或全部:调度方案执行完成后集群内的每个宿主机已使用的资源、集群内的每个宿主机提供的资源、调度方案中需要调度的容器的实际启动时间。

针对步骤601,可以将所有调度方案中评分最高的调度方案,作为选择调度方案。

详细来说,根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、集群内的每个宿主机提供的资源、每种调度方案中需要调度的容器的实际启动时间,得到每种调度方案的评分,将评分最高的调度方案作为选择的调度方案。

例如,调度方案包括调度方案1~调度方案3,调度方案1的评分为2、调度方案2的评分为2.5,调度方案3的评分为3,那么评分最高的3的调度方案即为选择的调度方案。

结合图7所示,其中步骤600的实现过程为:

S700:根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案的资源碎片率;

步骤700的可行性的实现方式为:根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差;根据每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差,确定每种调度方案的资源碎片率。

例如,资源为CPU资源和内存资源;

第一步:通过以下算式确定每种调度方案执行完成后集群内的每个宿主机所剩的资源的平均值;

其中,λ

其中,λ

第二步:通过以下算式确定每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差:

第三步:通过如下算式确定每种调度方案的资源碎片率:

其中,μ为一种调度方案的资源碎片率,α为预设的数值;σ为一种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差。

结合图4所示,当确定调度方案2的评分时,计算宿主机A剩余的CPU资源为,宿主机A已使用的资源为容器f的3G、容器b的3G、容器c的3G,9G,宿主机A提供的资源10G减去宿主机A已使用的资源9G为1G;宿主机B已使用的资源为容器a的2G、容器d的4G、容器e的4G,10G,宿主机B提供的资源10G减去宿主机B已使用的资源10G为0G;宿主机C已使用的资源为新容器的4G、容器g的4G,8G,宿主机C提供的资源10G减去宿主机C已使用的资源8G为2G;平均值为1/3(1+0+2)=1;标准差为

结合图5所示,当确定调度方案3的评分时,计算宿主机A剩余的CPU资源为,宿主机A已使用的资源为容器g的4G、容器b的3G、容器c的3G,10G,宿主机A提供的资源10G减去宿主机A已使用的资源10G为0G;宿主机B已使用的资源为容器a的2G、容器d的4G、容器e的4G,10G,宿主机B提供的资源10G减去宿主机B已使用的资源10G为0G;宿主机C已使用的资源为新容器的4G、容器f的3G,7G,宿主机C提供的资源10G减去宿主机C已使用的资源7G为3G;平均值为1/3(0+0+3)=1;标准差为

S701:根据每种调度方案中需要调度的容器的实际启动时间,确定每种调度方案的调度效率;

步骤701的可行性的实现方式为:根据每种调度方案中需要调度的容器的实际启动时间之和,与需要调度的容器的预设启动时间之和之间的比值,确定每种调度方案的调度效率。

其中可以根据每种调度方案中需要调度的容器所需的资源和需要调度的容器所在的宿主机提供的资源,确定需要调度的容器的实际启动时间。

例如,通过以下算式确定每种调度方案的调度效率:

其中,ψ为一种调度方案的调度效率,T

结合图4所示,调度方案2中需要调度的容器为容器a和容器f,调度方案2的调度效率等于2乘以容器平均启动时间的值,除以容器a和容器f的实际启动时间之和。

结合图5所示,调度方案3中需要调度的容器为容器a和容器g,调度方案3的调度效率等于2乘以容器平均启动时间的值,除以容器a和容器g的实际启动时间之和。

S702:根据每种调度方案的资源碎片率和每种调度方案的调度效率,确定每种调度方案的评分。

步骤702的可行性的实现方式为:将每种调度方案的调度效率减去每种调度方案的资源碎片率的值,作为每种调度方案的评分。

例如,通过以下算式确定每种调度方案的调度效率:

ω=ψ-μ

其中,ω为一种调度方案的评分;ψ为一种调度方案的调度效率;μ为一种调度方案的资源碎片率。

基于上述方案,结合图8所述,本发明实施例提供了另一种Kubernetes集群下新容器部署方法,包括:

S800:发起新容器部署请求;

S801:采用预选阶段的策略和/或优选的策略,在K8s集群中查找适合新容器的宿主机;

S802:若找不出新容器的宿主机,且K8s集群中的宿主机具有剩余资源,则确定Kubernetes集群内的每个宿主机中的容器和新容器部署在Kubernetes集群内的宿主机中,满足新容器部署需求的调度方案;

S803:若调度方案的个数为多个,则从多种调度方案中,选择一种调度方案;

S804:按照选择的调度方案将Kubernetes集群内的宿主机中需要调度的容器进行调度以及部署新容器。

详细来说,采用预选阶段的策略和/或优选的策略(上述已经介绍过)进行首次调度尝试,如果找不到合适的宿主机部署新的容器时,进行二次调度尝试,即确定宿主机中原有的容器进行调度、以及新容器部署在宿主机上的多种部署可能,得到多个调度方案,并从多个调度方案中选择一个,需按照选择的方案执行,从而实现新容器的部署。步骤802到步骤804的理解参考上述内容,具体参照上述内容。

如图9所示,本发明还提供一种集群下新容器部署装置,包括:

确定模块900,用于在集群下有新容器需要部署后,确定集群内的每个宿主机中的容器和所述新容器部署在集群内的宿主机中,满足新容器部署需求的调度方案;

选择模块901,用于若所述调度方案的个数为多个,则从多种调度方案中,选择一种调度方案;

部署模块902,用于按照选择的所述调度方案将集群内的宿主机中需要调度的容器进行调度以及部署所述新容器。

可选的,其中,满足新容器部署需求的调度方案执行完成后集群内的每个宿主机中的容器和新容器均部署在集群内的宿主机中;

且满足新容器部署需求的调度方案执行完成后集群内的每个宿主机已使用的资源不超过集群内的每个宿主机提供的资源。

可选的,选择模块901,具体用于:

根据每种调度方案的可行性因素,对每种调度方案进行评分;

根据每种调度方案的评分,选择一种调度方案;

其中,调度方案的可行性因素包括以下部分或全部:调度方案执行完成后集群内的每个宿主机已使用的资源、集群内的每个宿主机提供的资源、调度方案中需要调度的容器的实际启动时间。

可选的,选择模块901,具体用于:

根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案的资源碎片率;

根据每种调度方案中需要调度的容器的实际启动时间,确定每种调度方案的调度效率;

根据每种调度方案的资源碎片率和每种调度方案的调度效率,确定每种调度方案的评分。

可选的,选择模块901,具体用于:

根据每种调度方案执行完成后集群内的每个宿主机已使用的资源、和集群内的每个宿主机提供的资源,确定每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差;

根据每种调度方案执行完成后集群内的每个宿主机所剩的资源的标准差,确定每种调度方案的资源碎片率。

可选的,选择模块901,具体用于:

根据每种调度方案中需要调度的容器的实际启动时间之和,与需要调度的容器的预设启动时间之和之间的比值,确定每种调度方案的调度效率。

可选的,选择模块901,具体用于:

将每种调度方案的调度效率减去每种调度方案的资源碎片率的值,作为每种调度方案的评分。

结合图10所示,该装置为Kubernetes内置集群组件中的一个;Kubernetes内置集群组件包括集群管理、容器调度、分布式存储、服务发现负载均衡、资源操作及认证等、如图9所示的装置。这样在新增容器部署计划而kubernetes现有策略又找不到满足资源需求的宿主机进行容器部署时,通过该装置对集群内现有宿主机资源、容器资源进行统筹计算,得出可正常部署新容器的多种调度方案,随后根据既有宿主机的资源、容器资源等维度对各调度方案进行打分,并选择得分最优的一条方法进行执行。这样可以为新容器提供稳定的部署与运营环境。

另外,结合图1-图10描述的本发明实施例的集群下新容器部署方法和装置可以由电子设备来实现。

电子设备,包括:处理器;

用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现如上述介绍的任一项所述的集群下新容器部署方法。

基于上述的介绍,示例性的,提出了图11的电子设备结构。

电子设备可以包括处理器1110以及存储有计算机程序指令的存储器1120。

具体地,上述处理器1110可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器1120可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1120可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1120可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1120可在数据处理装置的内部或外部。在特定实施例中,存储器1120是非易失性固态存储器。在特定实施例中,存储器1120包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。

处理器1110通过读取并执行存储器1120中存储的计算机程序指令,以实现上述实施例中的任意一种执行任务的方法。

在一个示例中,电子设备还可包括通信接口1130和总线1140。其中,如图11所示,处理器1110、存储器1120、通信接口1130通过总线1140连接并完成相互间的通信。

通信接口1130,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。

总线1140包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1140可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

该电子设备可以基于接收到的任务,执行本发明实施例中的集群下新容器部署方法,从而实现结合图1-图10描述的集群下新容器部署方法和装置。

另外,结合上述实施例中的电子设备,本发明实施例可提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述任一项所述的集群下新容器部署方法。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

相关技术
  • 一种文件分布式部署方法、装置、电子设备及存储介质
  • 服务自动化部署方法、装置、电子设备及存储介质
  • 一种物理裸机的部署方法、装置、电子设备及存储介质
  • 电子设备的显示控制方法、装置、电子设备和存储介质
  • 电子设备控制方法及装置、电子设备及存储介质
  • 容器部署方法、装置、设备、存储介质及容器部署系统
  • 容器部署方法、装置、设备、存储介质及容器部署系统
技术分类

06120116494455