一种在集群中并行调度容器的方法和装置制造方法及图纸

技术编号:15762755 阅读:118 留言:0更新日期:2017-07-05 22:47
本发明专利技术涉及集群资源调度技术领域,提供在集群中并行调度容器的方法,调度器周期性的获取集群状态信息,所述集群状态信息包括集群中所有节点的资源信息和集群中所有容器的描述信息;所述容器的描述信息包括该容器的容器标识ID、该容器对资源的需求和该容器的部署节点标识ID;所述节点的资源信息包括该节点的标识ID和该节点拥有的资源数量;根据集群状态信息、所述调度器已调度的容器信息和其他调度器已调度的容器信息,将待部署的容器调度到集群中的节点上;其中,所述已调度的容器信息包括已调度的容器的容器ID和部署节点ID。通过上述方案,有效的降低了并行调度中资源冲突的问题。

Method and device for parallel scheduling of containers in a cluster

The present invention relates to a cluster resource scheduling technology, provides a method of parallel scheduling in the cluster container, the scheduler periodically obtain cluster state information, the state information including all container cluster resource information of all nodes in the cluster and the cluster description information; description information of the container comprises a container, the container identification ID the container demand for resources and the container deployment node identification ID; resource information of the nodes including the number of ID nodes and the resource identifier of the node with the container information; according to the cluster status information, the scheduler has the scheduling of container information and other scheduler scheduled, will be deployed to the container scheduling the nodes in the cluster; among them, ID and ID container container deployment node information of the scheduled container has the scheduling. Through the above scheme, the problem of resource conflict in parallel scheduling is effectively reduced.

【技术实现步骤摘要】
一种在集群中并行调度容器的方法和装置
本专利技术涉及集群资源调度相关
,尤其涉及一种在集群中并行调度容器的方法和装置。
技术介绍
随着虚拟化技术的发展,越来越多的公司将自己的线上应用迀移到云平台上。容器(Container)作为一种轻量级的虚拟化技术,近年来发展迅速。容器技术为不同的应用程序创造了独立的运行环境,实现了资源隔离、配置与安全保障,能够满足应用按需分配的资源需求以及保证应用的隔离性和可用性。为了满足大型应用的需求,实践中往往需要将很多容器部署在计算机集群(Cluster,以下简称集群)中进行统一管理并对外提供服务。容器集群管理工具目前有Google公司的Kubernetes,Docker公司的DockerSwarm,CloudFoundry公司的Diego等。以Kuberentes为例,Kubernetes是由Google开源的容器集群管理系统,为在分布式集群环境下大规模容器化的应用提供资源调度、部署运行、服务发现、弹性伸缩等功能。Kubernetes通过在线方式监控容器集群状态,判断容器运行状态是否符合用户的配置,以决定是否要创建或删除容器。资源调度是容器集群管理系统需要解决的一个重要问题,资源调度是指为一个待部署的容器通过一定的规则在集群的众多节点中选择一个适合部署该容器的节点,调度器一般需要考虑待部署容器需要的资源(多少CPU、多少Memory、多少硬盘等)以及一些其它约束,例如是否需要部署在指定位置、是否需要把该容器与和它相同类型的其它容器分散部署在集群中等等。图1是以Kubernetes为例的容器集群中的资源调度方案。其中,node为节点,节点可以是虚拟机也可以是物理机,一个节点上可以部署若干个容器,且每个节点上都有一个Agent。节点上的Agent用于管理部署在该节点上的所有容器,包括监控该节点的资源信息(如CPU、内存、磁盘空间等等)以及监控部署在该节点上的容器的运行状态(如运行中、挂起或者创建失败等)。Agent周期性的接受Master的轮询,向Master上报自身所在节点的资源信息和所有容器的运行状态。Master是容器集群管理系统的中心管理模块。Master可以是集群中的某一个节点,或若干个节点(处于高可用性的目的)。Master用于获取并保存集群整体的状态信息,该集群状态信息包括:所有节点的资源信息和所有容器的描述信息,其中,容器的描述信息包括对容器的部署对资源的需求和部署节点等。其中,部署节点在容器未被调度前为空(””)。调度器Scheduler周期性的从Master同步得到最新的集群状态信息,并基于最新的集群状态信息对待调度的容器进行调度。为了加快调度的速度,包括Google在内的Omega系统提出并行调度的解决方案,也就是说系统中会存在多个调度器从Master获取集群的状态信息,并对待调度的容器进行调度。现有技术中,各调度器可以按照一定的规则来分配调度任务以保证每一个待调度的容器有且只有一个调度器为其选择部署节点。然而按照现在的调度机制可知,每个调度器都是周期性的从Master同步获取集群的状态信息,且都可以将自己负责的容器调度到集群中的任意节点上。这很可能会产生资源冲突,例如集群中仅有两个Node,Master保存的集群状态信息显示Node1剩余资源是{5CPU,10G内存},Node2剩余资源是{4CPU,8G内存},此时两个调度器同时开始调度各自的任务,Scheduler1调度的C1的资源需求为{3CPU,5G内存},Scheduler2调度的C2的资源需求为{3CPU,6G内存}。如果两个调度器都希望把各自负责的容器放到更加空闲的节点上,那么Scheduler1和Scheduler2都会把Node1作为C1和C2的部署节点通知Master。Master在收到请求以后如果将C1和C2的部署节点都改为Node1的话,Node1上的Agent在实际执行的时候会发现资源不足,C1和C2必将有一个部署失败(先部署C1,则C2将部署失败;先部署C2的话,则C1将部署失败)。而实际上,C1和C2分别部署在Node1和Node2上是一个可行方案,但是并行调度器没有找到这个方案。由上可知,在并行调度系统中,亟需一种解决调度冲突的解决方案。
技术实现思路
本专利技术提供了一种在集群中并行调度容器的方法和设备,以解决并行调度中资源冲突的问题。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种在集群中并行调度容器的方法,包括:调度器周期性的获取集群状态信息,所述集群状态信息包括集群中所有节点的资源信息和集群中所有容器的描述信息;其中,所述容器的描述信息包括该容器的容器标识ID、该容器对资源的需求和该容器的部署节点标识ID;所述节点的资源信息包括该节点的标识ID和该节点拥有的资源数量;根据所述集群状态信息Shared_Info、所述调度器已调度的容器信息Assumed_Local和其他调度器已调度的容器信息Assumed_Remote,将待部署的容器调度到集群中的节点上;其中,所述已调度的容器信息包括已调度的容器的容器ID和部署节点ID。由于频繁的获取集群状态信息会对系统中的性能产生很大的压力,所以现有技术中都是通过周期性的与系统中其他组件进行同步,以获取系统的集群状态信息。同步周期越长,各个调度器进行并行容器调度时,发生资源冲突的概率就越大。为了解决资源冲突的问题,有一种方法就是采用这种减小同步周期的方法。这种频繁的同步虽然能够一定程度上改善资源冲突的问题,但是频繁的同步,对Master造成了很大的性能负担,并且也不能完全杜绝资源冲突的问题。本专利技术实施例中,调度器做调度决策时,不仅依据从Master同步过来的集群状态信息,还考虑到了调度器自身已经调度的容器的信息和其他调度器已经调度的容器的信息,从而在不增加Master的负担的前提下,有效的降低了资源冲突的概率。在一种可能的设计中,根据所述集群状态信息Shared_Info、所述调度器已调度的容器信息Assumed_Local和其他调度器已调度的容器信息Assumed_Remote,将待部署的容器调度到集群中的节点上,具体为:调度器根据所述Shared_Info、所述Assumed_Local和所述Assumed_Remote,生成当前决策信息Current_State;根据所述Current_State和预设的调度规则将待部署的容器调度到集群中的节点上。预设的调度规则可以是将容器调度到资源最充足的节点上。本专利技术实施例生成当前决策信息Current_State,并根据当前决策信息Current_State进行调度决策,有效的降低了资源冲突的概率。并且系统动态的维护一个当前决策信息Current_State,当需要调度容器时,直接查询该当前决策信息Current_State即可,不需要再根据所述Shared_Info、所述Assumed_Local和所述Assumed_Remote进行计算,从而加快了调度器的调度时间。一种可能的设计中,调度器根据所述Shared_Info、所述Assumed_Local和所述Assumed_Remote,生成当前决策信息Current_State,具体为:当所述Sh本文档来自技高网
...
一种在集群中并行调度容器的方法和装置

【技术保护点】
一种在集群中并行调度容器的方法,其特征在于,包括:调度器周期性的获取集群状态信息Shared_Info,所述集群状态信息包括集群中所有节点的资源信息和集群中所有容器的描述信息;其中,所述容器的描述信息包括该容器的容器标识ID、该容器对资源的需求和该容器的部署节点标识ID;所述节点的资源信息包括该节点的标识ID和该节点拥有的资源数量;根据所述Shared_Info、所述调度器已调度的容器信息Assumed_Local和其他调度器已调度的容器信息Assumed_Remote,将待部署的容器调度到集群中的节点上;其中,所述已调度的容器信息包括已调度的容器的容器ID和部署节点ID。

【技术特征摘要】
1.一种在集群中并行调度容器的方法,其特征在于,包括:调度器周期性的获取集群状态信息Shared_Info,所述集群状态信息包括集群中所有节点的资源信息和集群中所有容器的描述信息;其中,所述容器的描述信息包括该容器的容器标识ID、该容器对资源的需求和该容器的部署节点标识ID;所述节点的资源信息包括该节点的标识ID和该节点拥有的资源数量;根据所述Shared_Info、所述调度器已调度的容器信息Assumed_Local和其他调度器已调度的容器信息Assumed_Remote,将待部署的容器调度到集群中的节点上;其中,所述已调度的容器信息包括已调度的容器的容器ID和部署节点ID。2.如权利要求1所述的方法,其特征在于,所述根据所述集群状态信息Shared_Info、所述调度器已调度的容器信息Assumed_Local和其他调度器已调度的容器信息Assumed_Remote,将待部署的容器调度到集群中的节点上,具体为:根据所述Shared_Info、所述Assumed_Local和所述Assumed_Remote,生成当前决策信息Current_State;根据所述Current_State和预设的调度规则将待部署的容器调度到集群中的节点上。3.如权利要求2所述的方法,其特征在于,所述根据所述Shared_Info、所述Assumed_Local和所述Assumed_Remote,生成当前决策信息Current_State,具体为:当所述Shared_Info与所述Assumed_Local或者所述Assumed_Remote中关于某一个容器的部署节点有冲突时,以所述Assumed_Local或者所述Assumed_Remote为准,生成所述Current_State。4.如权利要求1-3任一所述的方法,其特征在于,在所述获取集群状态信息之前,所述方法还包括:接收所述其他调度器发送的调度通告,所述其他调度器发送的调度通告包括容器ID和节点ID;将所述其他调度器发送的调度通告保存到所述Assumed_Remote中;在所述将待部署的容器调度到集群中的节点上之后,所述方法还包括:向所述其他调度器发送包含所述待部署的容器的容器ID和所述集群中的节点的节点ID的调度通告。5.如权利要求4所述的方法,其特征在于,所述调度通告中还包括该调度通告生成的时间。6.一种在集群中并行调度容器的装置,其特征在于,包括:交互单元,用于周期性的获取集群状态信息,所述集群状态信息包括...

【专利技术属性】
技术研发人员:丁海洋谢军安胡瑞丰蒋飞虎姜耀国
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1