一种容器调度方法及管理节点调度器与流程

文档序号:12733194阅读:279来源:国知局
一种容器调度方法及管理节点调度器与流程

本发明涉及计算机技术领域,更具体的说,涉及一种容器调度方法及管理节点调度器。



背景技术:

随着容器技术的兴起,越来越多的软件系统开始采用以容器的形式分发和部署。而为了解决现阶段容器技术不成熟的问题,通常会将容器调度在虚拟机中运行。

现有容器的调度方法主要包括:随机调度法和Binpack方法,调度原理为:管理节点调度器综合考虑容器所需的运行空间和虚拟机配置内存,并选取虚拟机配置内存大于容器所需运行空间的虚拟机作为容器宿主机。

但是,管理节点调度器在选取虚拟机时,只考虑物理服务器配置给虚拟机的内存大小,并不考虑虚拟机实际占用内存,而实际上,虚拟机并没有被分配到其配置的所有内存,如图1所示,虚拟机配置内存的很大一部分位于内存气球中,虚拟机实际占用内存很小(如图1中矩形内的空白区域)。这样,当管理节点调度器将容器调度至选取的虚拟机时,若虚拟机实际占用内存小于容器所需的运行空间,物理服务器就会通过内存气球机制,将内存气球内的部分内存释放给虚拟机(见图2中圆形区域的斜线部分,为内存气球释放的内存),以保证容器的正常运行。然而,物理服务器对内存气球的频繁操作会增加系统的整体消耗,降低系统的整体性能。



技术实现要素:

有鉴于此,本发明公开一种容器调度方法及管理节点调度器,以实现在管理节点调度器调度容器任务时,减少物理服务器对内存气球的频繁操作,降低系统整体消耗,提高系统的整体性能。

一种容器调度方法,包括:

当调度容器任务时,确定所述容器任务所需的运行空间;

判断主动反馈实际占用内存的虚拟机中,是否存在实际占用内存大于所述运行空间的虚拟机;其中,所述主动反馈实际占用内存的虚拟机为:虚拟机内容器停止运行,且相对应的内存气球未回收释放内存的虚拟机;

若存在实际占用内存大于所述运行空间的虚拟机,则从实际占用内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

将所述容器任务调度至设置在作为容器宿主机的虚拟机内、且与所述容器任务相对应的容器内运行。

优选的,所述若存在实际占用内存大于所述运行空间的虚拟机,则从实际占用内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机包括:

若存在实际占用内存大于所述运行空间的虚拟机,则判断实际占用内存大于所述运行空间的虚拟机是否为多个;

若实际占用内存大于所述运行空间的虚拟机为多个,则从多个候选虚拟机中,选取一个满足预设要求的虚拟机作为执行所述容器任务的容器的容器宿主机;

若实际占用内存大于所述运行空间的虚拟机为一个,则将该实际占用内存大于所述运行空间的虚拟机作为执行所述容器任务的容器的容器宿主机。

优选的,还包括:

若主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机,则从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

启动内存气球机制,通过与选取虚拟机对应的内存气球,向所述选取虚拟机释放内存,使所述选取虚拟机的实际占用内存大于所述运行空间;

将所述容器任务调度至内存气球释放内存后的作为容器宿主机的虚拟机中,与所述容器任务相对应的容器中运行。

一种管理节点调度器,包括:

确定单元,用于当调度容器任务时,确定所述容器任务所需的运行空间;

判断单元,用于判断主动反馈实际占用内存的虚拟机中,是否存在实际占用内存大于所述运行空间的虚拟机;其中,所述主动反馈实际占用内存的虚拟机为:虚拟机内容器停止运行,且相对应的内存气球未回收释放内存的虚拟机;

第一选取单元,用于在所述判断单元判断为是的情况下,从实际占用内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

第一调度单元,用于将所述容器任务调度至设置在作为容器宿主机的虚拟机内、且与所述容器任务相对应的容器内运行。

优选的,所述判断单元包括:

第一判断子单元,用于若存在实际占用内存大于所述运行空间的虚拟机,则判断实际占用内存大于所述运行空间的虚拟机是否为多个;

第一选取子单元,用于在所述第一判断子单元判断为是的情况下,从多个候选虚拟机中,选取一个满足预设要求的虚拟机作为执行所述容器任务的容器的容器宿主机;

第二选取子单元,用于在所述第一判断子单元判断为否的情况下,将该实际占用内存大于所述运行空间的虚拟机作为执行所述容器任务的容器的容器宿主机。

优选的,还包括:

第二选取单元,用于所述判断单元判断为否的情况下,从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

启动单元,用于启动内存气球机制,通过与选取虚拟机对应的内存气球,向所述选取虚拟机释放内存,使所述选取虚拟机的实际占用内存大于所述运行空间;

第二调度单元,用于将所述容器任务调度至内存气球释放内存后的作为容器宿主机的虚拟机中,与所述容器任务相对应的容器中运行。

从上述的技术方案可知,本发明公开了一种容器调度方法及管理节点调度器,当管理节点调度器调度容器任务时,管理节点调度器会优先从内存气球未回收释放内存,且主动反馈实际占用内存的虚拟机中,选取实际占用内存大于容器所需的运行空间的虚拟机,作为容器宿主机,相比传统方案以虚拟机配置内存作为选取依据而言,本发明将虚拟机的实际内存作为选取依据,从而大大减少了物理服务器对内存气球的频繁操作,降低了系统整体消耗,提高了系统的整体性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。

图1为虚拟机内存气球机制示意图;

图2为容器资源需求驱动的内存气球动作示意图;

图3为本发明实施例公开的一种容器调度方法的流程图;

图4为本发明实施例公开的一种虚拟机主动反馈机制的示意图;

图5为本发明实施例公开的另一种容器调度方法的流程图;

图6为本发明实施例公开的一种管理节点调度器的结构示意图;

图7为本发明实施例公开的另一种管理节点调度器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种容器调度方法及管理节点调度器,以实现在管理节点调度器调度容器任务时,减少物理服务器对内存气球的频繁操作,降低系统整体消耗,提高系统的整体性能。

参见图3,本发明实施例公开的一种容器调度方法的流程图,包括步骤:

步骤S101、当调度容器任务时,确定所述容器任务所需的运行空间;

其中,容器所需的运行空间也即容器在虚拟机运行时需要占用的虚拟机内存。

步骤S102、判断主动反馈实际占用内存的虚拟机中,是否存在实际占用内存大于所述运行空间的虚拟机,如果是,则执行步骤S103;

需要说明的是,所述主动反馈实际占用内存的虚拟机具体为:虚拟机内容器停止运行,且相对应的内存气球未回收释放内存的虚拟机。

如图4所示,本发明一实施例公开的一种虚拟机主动反馈机制的示意图,当某个虚拟机内的容器停止运行后(如图4中的实线框所示的虚拟机),容器运行时占用的虚拟机内存等资源就会释放给所运行的虚拟机。此时,该虚拟机内的内存气球(如图4中第一个虚拟机中所示的圆形区域,表示内存气球)并不立刻将释放的内存回收,虚拟机会主动向管理节点调度器反馈实际占用内存,该内存包括内存气球之前释放的内存。

其中,当虚拟机向管理节点调度器主动反馈实际占用内存的发送时间达到预设时间段后,若该虚拟机一直未接收到管理节点调度器分发的新的容器任务,则该虚拟机对应的内存气球就会回收之前释放的内存至宿主机。

步骤S103、从实际占用内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

步骤S104、将所述容器任务调度至设置在作为容器宿主机的虚拟机内、且与所述容器任务相对应的容器内运行。

综上可知,本发明公开的容器调度方法,当管理节点调度器调度容器任务时,管理节点调度器会优先从内存气球未回收释放内存,且主动反馈实际占用内存的虚拟机中,选取实际占用内存大于容器所需的运行空间的虚拟机,作为容器宿主机,相比传统方案以虚拟机配置内存作为选取依据而言,本发明将虚拟机的实际内存作为选取依据,从而大大减少了物理服务器对内存气球的频繁操作,降低了系统整体消耗,提高了系统的整体性能。

可以理解的是,向管理节点调度器主动反馈实际占用内存的虚拟机可以为一个或多个,而一个容器只能选取一个虚拟机作为容器宿主机,因此,为进一步优化上述实施例,本发明还提供了步骤S103中,当主动反馈实际占用内存的虚拟机为一个或多个时的具体实施方式,也即步骤S103具体包括:

当存在实际占用内存大于所述运行空间的虚拟机时,判断实际占用内存大于所述运行空间的虚拟机是否为多个;

若实际占用内存大于所述运行空间的虚拟机为一个,则将该实际占用内存大于所述运行空间的虚拟机作为执行所述容器任务的容器的容器宿主机;

若实际占用内存大于所述运行空间的虚拟机为多个,则从多个候选虚拟机中,选取一个满足预设要求的虚拟机作为执行所述容器任务的容器的容器宿主机;

其中,预设要求可以为“随机选取”,也即当实际占用内存大于所述运行空间的虚拟机为多个时,将从多个候选虚拟机中,随机选取的虚拟机作为容器的容器宿主机。

预设要求可以为“虚拟机实际占用内存与容器所需的运行空间的差值满足预设值”其中,预设值依据实际需要而定,也即当实际占用内存大于所述运行空间的虚拟机为多个时,将多个候选虚拟机中,实际占用内存与容器所需的运行空间的差值满足预设值的虚拟机,作为容器的容器宿主机。

需要说明的是,虚拟机的实际占用内存除需满足容器的运行需求外,还需保证虚拟机正常运行,而虚拟机运行必然会占用一定的内存,因此,所选定的虚拟机实际占用内存与容器所需的运行空间必须存在一定内存差值。

可以理解的是,当主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机时,管理节点调度器就需要按照传统的调度方法选取作为容器宿主机的虚拟机。

如图5所示,本发明另一实施例公开的一种容器调度方法的流程图,在图3所示实施例的基础上,在步骤S102之后,还包括步骤:

步骤S105、若主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机,则从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

需要说明的是,当管理节点调度器没有接收到虚拟机主动反馈的实际占用内容时,管理节点调度器也会从配置内存大于所述运行空间的虚拟机中,选取容器宿主机。

步骤S106、启动内存气球机制,通过与选取虚拟机对应的内存气球,向所述选取虚拟机释放内存,使所述选取虚拟机的实际占用内存大于所述运行空间;

步骤S107、将所述容器任务调度至内存气球释放内存后的作为容器宿主机的虚拟机中,与所述容器任务相对应的容器中运行。

综上可知,本发明公开的容器调度方法,当管理节点调度器调度容器任务时,管理节点调度器会优先从内存气球未回收释放内存,且主动反馈实际占用内存的虚拟机中,选取实际占用内存大于容器所需的运行空间的虚拟机,作为容器宿主机;当主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机时,管理节点调度器会从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为容器的容器宿主机,然后启动内存气球机制,向该虚拟机释放足够资源以满足容器运行。因此,相比传统方案以虚拟机配置内存作为选取依据而言,本发明将虚拟机的实际内存作为选取依据,从而大大减少了物理服务器对内存气球的频繁操作,降低了系统整体消耗,提高了系统的整体性能。

与上述方法实施例相对应,本发明还公开了一种管理节点调度器。

参见图6,本发明实施例公开的一种管理节点调度器的结构示意图,包括:

确定单元201,用于当调度容器任务时,确定所述容器任务所需的运行空间;

其中,容器所需的运行空间也即容器在虚拟机运行时需要占用的虚拟机内存。

判断单元202,用于判断主动反馈实际占用内存的虚拟机中,是否存在实际占用内存大于所述运行空间的虚拟机;其中,所述主动反馈实际占用内存的虚拟机为:虚拟机内容器停止运行,且相对应的内存气球未回收释放内存的虚拟机;

其中,当虚拟机向管理节点调度器主动反馈实际占用内存的发送时间达到预设时间段后,若该虚拟机一直未接收到管理节点调度器分发的新的容器任务,则该虚拟机对应的内存气球就会回收之前释放的内存至宿主机。

第一选取单元203,用于在所述判断单元202判断为是的情况下,从实际占用内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

第一调度单元204,用于将所述容器任务调度至设置在作为容器宿主机的虚拟机内、且与所述容器任务相对应的容器内运行。

综上可知,本发明公开的管理节点调度器,当管理节点调度器调度容器任务时,管理节点调度器会优先从内存气球未回收释放内存,且主动反馈实际占用内存的虚拟机中,选取实际占用内存大于容器所需的运行空间的虚拟机,作为容器宿主机,相比传统方案以虚拟机配置内存作为选取依据而言,本发明将虚拟机的实际内存作为选取依据,从而大大减少了物理服务器对内存气球的频繁操作,降低了系统整体消耗,提高了系统的整体性能。

可以理解的是,向管理节点调度器主动反馈实际占用内存的虚拟机可以为一个或多个,而一个容器只能选取一个虚拟机作为容器宿主机,因此,为进一步优化上述实施例,判断单元202具体包括:

第一判断子单元,用于若存在实际占用内存大于所述运行空间的虚拟机,则判断实际占用内存大于所述运行空间的虚拟机是否为多个;

第一选取子单元,用于在所述第一判断子单元判断为是的情况下,从多个候选虚拟机中,选取一个满足预设要求的虚拟机作为执行所述容器任务的容器的容器宿主机;

其中,预设要求可以为“随机选取”,也即当实际占用内存大于所述运行空间的虚拟机为多个时,将从多个候选虚拟机中,随机选取的虚拟机作为容器的容器宿主机。

预设要求可以为“虚拟机实际占用内存与容器所需的运行空间的差值满足预设值”其中,预设值依据实际需要而定,也即当实际占用内存大于所述运行空间的虚拟机为多个时,将多个候选虚拟机中,实际占用内存与容器所需的运行空间的差值满足预设值的虚拟机,作为容器的容器宿主机。

需要说明的是,虚拟机的实际占用内存除需满足容器的运行需求外,还需保证虚拟机正常运行,而虚拟机运行必然会占用一定的内存,因此,所选定的虚拟机实际占用内存与容器所需的运行空间必须存在一定内存差值。

第二选取子单元,用于在所述第一判断子单元判断为否的情况下,将该实际占用内存大于所述运行空间的虚拟机作为执行所述容器任务的容器的容器宿主机。

可以理解的是,当主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机时,管理节点调度器就需要按照传统的调度方法选取作为容器宿主机的虚拟机。

参见图7,本发明另一实施例公开的一种管理节点调度器的结构示意图,在图6所示实施例的基础上,还包括:

第二选取单元205,用于所述判断单元202判断为否的情况下,从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为执行所述容器任务的容器的容器宿主机;

需要说明的是,当管理节点调度器没有接收到虚拟机主动反馈的实际占用内容时,管理节点调度器也会从配置内存大于所述运行空间的虚拟机中,选取容器宿主机。

启动单元206,用于启动内存气球机制,通过与选取虚拟机对应的内存气球,向所述选取虚拟机释放内存,使所述选取虚拟机的实际占用内存大于所述运行空间;

第二调度单元207,用于将所述容器任务调度至内存气球释放内存后的作为容器宿主机的虚拟机中,与所述容器任务相对应的容器中运行。

综上可知,本发明公开的管理节点调度器,当管理节点调度器调度容器任务时,管理节点调度器会优先从内存气球未回收释放内存,且主动反馈实际占用内存的虚拟机中,选取实际占用内存大于容器所需的运行空间的虚拟机,作为容器宿主机;当主动反馈实际占用内存的虚拟机中,不存在实际占用内存大于所述运行空间的虚拟机时,管理节点调度器会从配置内存大于所述运行空间的虚拟机中,选取一个虚拟机作为容器的容器宿主机,然后启动内存气球机制,向该虚拟机释放足够资源以满足容器运行。因此,相比传统方案以虚拟机配置内存作为选取依据而言,本发明将虚拟机的实际内存作为选取依据,从而大大减少了物理服务器对内存气球的频繁操作,降低了系统整体消耗,提高了系统的整体性能。

需要说明的是,装置实施例中各组成部分的具体工作原理,请参见方法实施例对应部分,此处不再赘述。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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