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

一种容器集群的调度方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 13:46:35


一种容器集群的调度方法、装置、电子设备和存储介质

技术领域

本发明涉及云计算技术领域,具体而言,涉及一种容器集群的调度方法、装置、电子设备和存储介质。

背景技术

全球云计算技术发展历经20年,历经虚拟化时代、传统云计算时代演变为至今的云原生技术时代。“云”中的资源可随时获取,按需使用,按使用付费,可无限扩展 ,这种特性被称为像水电一样使用IT基础设施。

云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务的技术组件部分进行最大化的剥离,从而让云原生设施接管应用中原有的大量非功能特性(如弹性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时具备轻量、敏捷、高度自动化的特点。云原生架构的典型技术代表是容器技术与Kubernetes编排调度技术,在企业的数字化转型过程中,两者也成为云原生时代下的新型PaaS平台计算基础架构的根基。

云原生架构的典型技术代表是Docker容器技术与Kubernetes编排调度技术,Docker提供容器的生命周期管理和Docker镜像构建运行时容器。它的主要优点是将软件/应用程序运行所需的设置和依赖项打包到一个容器中,从而实现了可移植性等优点。而Kubernetes用于关联和编排在多个主机上运行的容器。Kubernetes是一个全新的基于容器技术的分布式系统支撑平台,在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。默认调度器是为新建立的容器进行工作节点选择,负责集群的资源调度。通过调度算法为待调度容器列表中的每个容器从工作节点列表中选择一个最适合的工作节点,整个调度过程分为预选阶段、优选打分阶段、选定阶段,预选阶段策略和优选打分阶段函数有30种以上的类型情况。在云原生架构平台的日常运行态中,容器调度的情况经常发生,如通过API新创建的Pod容器、控制管理器为补足副本而创建的容器Pod、触发容器弹性伸缩场景时、工作节点宕机需要重新调度创建容器Pod等。

在如此高频的运行调度机制下,默认调度器工作机制下每触发一次调度操作就要遍历30种以上的预选阶段策略和优选打分阶段,调度器在预选阶段即使已经知道当前工作节点不符合某个预选过滤条件仍然会继续判断后续的预选过滤条件是否符合。在大规模容器数、服务数、工作节点数的情况下,这些判断逻辑会浪费很多计算时间,一次容器的调度耗时长达约数秒以上。随着集群规模的不断扩大,当运行的容器数、服务数、工作节点数不断增长的时候,在性能和稳定性的问题逐渐凸显,由于调度器的吞吐量低、调度器默认调度策略缺陷,会导致业务扩容超时失败。在规模庞大的集群上,一次容器的调度耗时长。由于Kubernetes的调度器是队列化的调度器模型,一旦扩容高峰等待的容器数量过多就会导致后面容器扩容排队超时,造成容器调度失败、容器扩容失败、业务系统程序响应超时及报错、用户体验较差并且在扩容高峰过后恢复失败容器及业务成本较高。

发明内容

鉴于上述问题,本发明提供了一种容器集群的调度方法、装置、电子设备和存储介质。

为解决上述技术问题,本发明采用的技术方案是:

第一方面,本发明公开了一种容器集群的调度方法,包括如下步骤:S1、接收待调度请求,启动工作节点分组器;S2、将容器集群内多个工作节点进行预分组,并进行分组编号及编号排序;S3、按照工作节点的分组编号进行按组预选,判断预选后节点分组内的工作节点是否满足全部容器调度绑定要求,若是,则预选成功,执行步骤S4,若否,则预选失败,执行步骤S5;S4、将容器调度绑定预选成功的工作节点,判断所述容器调度至工作节点是否正常,若是,则记录调度结果至统计分析器,若否,则执行步骤S6;S5、发送指令至预选执行器,过滤预选失败的工作节点,并将结果记录至统计分析器;S6、检查工作节点健康运行状况,执行预选执行器,记录执行结果至统计分析器;S7、判断当前轮次容器调度是否结束,若是,则进行下一轮调度前预热工作,若否,则继续预选其余工作节点。

作为优选方案,所述将容器集群内多个工作节点进行预分组,包括:根据每个工作节点上的工作负载数量对容器集群内多个工作节点进行排序,按照30-50个工作节点为一组进行分组。

作为优选方案,在步骤S3中,若所述节点分组内的工作节点检查到容器调度绑定要求中存在一项不满足,则预选失败,余下容器绑定要求不再检查。

作为优选方案,所述容器调度绑定要求包括:检查工作节点名称是否与Pod期望调度的NodeName匹配,判断预选Pod所用的端口列表中的端口是否在预选工作节点中已被占用,请求的存储卷在当前工作节点是否可用,检查工作节点上的资源可用性是否满足Pod对象的运行需求。

作为优选方案,在所述执行预选执行器之前,还包括检查预选控制器和预选执行器,以及预选控制器和预选执行器运行时守护进程是否在线,若是,则执行预选执行器,若否,则先启动守护进程,再执行预选执行器。

作为优选方案,在步骤S7中,所述预热工作包括:清除Kubernetes调度器前一次调度的队列缓存,再根据统计分析器获取的历次调度预选中最优执行结果,为下一次调度进行预选优先推荐。

第二方面,本发明公开了一种容器集群的调度装置,包括:启动模块,用于接收待调度请求,启动工作节点分组器;预分组模块,用于将容器集群内多个工作节点进行预分组,并进行分组编号及编号排序;预选模块,用于按照工作节点的分组编号进行按组预选,判断预选后节点分组内的工作节点是否满足容器调度绑定要求,若是,则预选成功,执行绑定模块,若否,则预选失败,执行过滤模块;绑定模块,用于将容器调度绑定预选成功的工作节点,判断所述容器调度至工作节点是否正常,若是,则记录调度结果至统计分析器,若否,则执行健康检查模块;过滤模块,用于发送指令至预选执行器,过滤预选失败的工作节点,并将结果记录至统计分析器;健康检查模块,用于检查工作节点健康运行状况,执行预选执行器,记录执行结果至统计分析器;轮次判断模块,用于判断当前轮次容器调度是否结束,若是,则进行下一轮调度前预热工作,若否,则继续预选其余工作节点。

第三方面,本发明公开了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

第四方面,本发明公开了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。

与现有技术相比,本发明的有益效果包括:提供了一种容器集群的调度方法,完全适配现有云原生技术架构,在不改变现有Kubernetes调度器的基本能力框架基础上,在不影响现有在线业务正常运行的情况下,在实现调度策略方法的改进优化,提供大规模容器调度的提效方法。在云原生容器云平台使用最为广泛的场景中,如:通过API新创建Pod容器、控制管理器为补足副本而创建容器Pod、触发容器弹性伸缩场景时、工作节点宕机需要重新调度创建容器Pod等高频使用场景中,通过分布式智能预选控制器程序把待创建的容器Pod进行高效智能预选出待调度的计算节点,遍历所有目标节点,筛选出符合要求的候选节点,可避免在初步判定预选过滤失败的计算节点中再做不必要的预选算法和预选策略分析,大大提高云原生容器云平台计算调度时间、提升预选节点准确率和预选成功率。从而实现大规模容器集群调度的性能质的提高和提升云原生容器云平台稳定性,保障容器调度成功率、调度实时性和极大提升用户业务系统快速响应、系统运行流畅度体验,继而保证业务连续性、服务等级指标、服务等级目标、服务质量等企业业务系统核心要素。企业也可通过此大规模容器集群调度提效方法实现提高服务器、存储、网络等各类资源利用率,实现节省各类基础架构资源成本的目的。

附图说明

参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:

图1为本发明实施例的容器集群的调度方法的流程示意图;

图2为本发明实施例的容器集群的调度装置的结构示意图。

具体实施方式

容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。

根据本发明的一实施方式结合图1示出。本发明公开了一种容器集群的调度方法,包括如下步骤:

S1、接收待调度请求,启动工作节点分组器。

本发明实施例中,使用容器Pod队列调度器实现调度队列化控制并触发启动工作节点分组器。当满足启动条件时,队列调度器启动工作节点分组器。

S2、将容器集群内多个工作节点进行预分组,并进行分组编号及编号排序。

具体的,将容器集群内多个工作节点进行预分组,包括:根据每个工作节点上的工作负载数量对容器集群内多个工作节点进行排序,如根据每个工作节点上的工作负载数量从小到大依次排序,按照30-50个工作节点为一组进行分组。

S3、按照工作节点的分组编号进行按组预选,判断预选后节点分组内的工作节点是否满足全部容器调度绑定要求,若是,则预选成功,执行步骤S4,若否,则预选失败,执行步骤S5。

具体的,根据工作节点分组器提供的分组编号信息,按照分组ID启动预选控制器。预选控制器根据工作节点分组器下发的分组编号信息,将预选策略和预选算法以并发进程调用形式分发到各个工作节点组。在没有预选控制执行期间处于停止状态,当所在工作节点接收到待调度和绑定请求,会启动预选控制器,然后由预选执行器完成预选调度执行动作。

上述预选策略和预选算法即容器调度绑定要求,包括:检查工作节点名称是否与Pod期望调度的NodeName匹配,判断预选Pod所用的端口列表中的端口是否在预选工作节点中已被占用,请求的存储卷在当前工作节点是否可用,检查工作节点上的资源可用性是否满足Pod对象的运行需求等。

预选控制器根据上述各类预算策略判定预选过滤失败的工作节点,若工作节点中有一条预选策略失败,则不再对该工作节点做其余的预选算法和预选策略分析,且重新进行下一工作节点的预选工作。

S4、预选成功后,工作节点进入调度队列,将容器调度绑定预选成功的工作节点,判断容器调度至工作节点是否正常,若是,则记录调度结果至统计分析器,若否,则执行步骤S6。

S5、发送指令至预选执行器,过滤预选失败的工作节点,并将结果记录至统计分析器。

S6、检查工作节点健康运行状况,执行预选执行器,记录执行结果至统计分析器。

根据容器集群内的工作节点健康状况来判断容器集群当前状况是否满足启动预选执行器条件,若满足,则执行预选执行器,各个预选执行器执行结束,上报执行结果到统计分析器,统计分析器汇总各工作节点预选调度的执行结果。

检查工作节点健康运行状况,包括:检查工作节点的各项资源负载,如CPU使用率、内存使用率、存储IO、网络IO、工作负载等是否超过阈值,各类网络通讯服务是否能正常对外提供服务。

在所述执行预选执行器之前,还包括:检查预选控制器和预选执行器,以及预选控制器和预选执行器运行时守护进程是否在线,若是,则执行预选执行器,若否,则先启动守护进程,再执行预选执行器。

检查预选控制器和预选执行器,以及运行时守护进程是否在线,包括:

根据预选控制器的进程存活状态和进程运行时长来判断预选控制器是否有正在运行。预选控制器以守护进程方式(Daemon Set)运行于各个工作节点组上。守护进程作用类似Watch Dog看门狗程序,若检测预选控制器的进程存活状态异常则重启预选控制器进程。

根据统计分析器接收数据的时间戳来判断上次预选执行结果是否已经上报至统计分析器。

根据当前轮次容器调度周期完成时间来判断是否满足启动预选控制器的时间条件。

S7、判断当前轮次容器调度是否结束,若是,则进行下一轮调度前预热工作,若否,则继续预选其余工作节点。

当每次预选调度开始前,工作节点分组器会通过统计分析器获取上次的调度预选执行结果汇总信息,为大规模容器集群场景中的下次智能预选调度做好准备预热工作。该预热工作包括:清除Kubernetes调度器前一次调度的队列缓存,再根据统计分析器获取的历次调度预选中最优执行结果,为下一次调度进行预选优先推荐。

参见图2,本发明公开了一种容器集群的调度装置,包括:

启动模块,用于接收待调度请求,启动工作节点分组器。

预分组模块,用于将容器集群内多个工作节点进行预分组,并进行分组编号及编号排序。

预选模块,用于按照工作节点的分组编号进行按组预选,判断预选后节点分组内的工作节点是否满足容器调度绑定要求,若是,则预选成功,执行绑定模块,若否,则预选失败,执行过滤模块。

绑定模块,用于将容器调度绑定预选成功的工作节点,判断容器调度至工作节点是否正常,若是,则记录调度结果至统计分析器,若否,则执行健康检查模块。

过滤模块,用于发送指令至预选执行器,过滤预选失败的工作节点,并将结果记录至统计分析器。

健康检查模块,用于检查工作节点健康运行状况,执行预选执行器,记录执行结果至统计分析器。

轮次判断模块,用于判断当前轮次容器调度是否结束,若是,则进行下一轮调度前预热工作,若否,则继续预选其余工作节点。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明还公开了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述任一项方法的步骤。

本发明还公开了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述任一项方法的步骤。

综上所述,本发明的有益效果包括:提供了一种容器集群的调度方法,完全适配现有云原生技术架构,在不改变现有Kubernetes调度器的基本能力框架基础上,在不影响现有在线业务正常运行的情况下,在实现调度策略方法的改进优化,提供大规模容器调度的提效方法。在云原生容器云平台使用最为广泛的场景中,如:通过API新创建Pod容器、控制管理器为补足副本而创建容器Pod、触发容器弹性伸缩场景时、工作节点宕机需要重新调度创建容器Pod等高频使用场景中,通过分布式智能预选控制器程序把待创建的容器Pod进行高效智能预选出待调度的计算节点,遍历所有目标节点,筛选出符合要求的候选节点,可避免在初步判定预选过滤失败的计算节点中再做不必要的预选算法和预选策略分析,大大提高云原生容器云平台计算调度时间、提升预选节点准确率和预选成功率。从而实现大规模容器集群调度的性能质的提高和提升云原生容器云平台稳定性,保障容器调度成功率、调度实时性和极大提升用户业务系统快速响应、系统运行流畅度体验,继而保证业务连续性、服务等级指标、服务等级目标、服务质量等企业业务系统核心要素。企业也可通过此大规模容器集群调度提效方法实现提高服务器、存储、网络等各类资源利用率,实现节省各类基础架构资源成本的目的。

应理解,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括 :U 盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明的技术范围不仅仅局限于上述说明中的内容,本领域技术人员可以在不脱离本发明技术思想的前提下,对上述实施例进行多种变形和修改,而这些变形和修改均应当属于本发明的保护范围内。

相关技术
  • 一种容器集群的调度方法、装置、电子设备和存储介质
  • 容器服务集群节点调度方法及装置、服务器、存储介质
技术分类

06120113808111