当前位置: 首页 > 专利查询>武汉大学专利>正文

基于Kubernetes的动态负载均衡资源调度方法技术

技术编号:23314894 阅读:28 留言:0更新日期:2020-02-11 17:43
本发明专利技术公开了一种基于Kubernetes的动态负载均衡资源调度方法,本发明专利技术结合Kubernetes调度系统的特点改进了一种动态负载均衡算法,将调度算法分为静态调度部分和动态调度部分,该算法在集群环境变化时依然能够较好的维持系统的负载均衡。本发明专利技术提供的Kubernetes的容器资源调度策略,解决了Kubernetes的调度策略单一,无法根据容器应用中对系统内核、网络传输速度等特定因素的约束调度需求,实现集群中容器到机器节点的合理调度。并实现了将某个工作节点上运行的Pod迁移到另一个与调度策略匹配程度更高的新工作节点上的动态负载均衡调度策略。

Dynamic load balancing resource scheduling method based on kubernetes

【技术实现步骤摘要】
基于Kubernetes的动态负载均衡资源调度方法
本专利技术属于云计算
,涉及一种动态负载均衡资源调度方法,具体涉及一种基于Kubernetes的容器资源调度方法。
技术介绍
云计算、大数据、移动技术的快速发展,加之企业业务需求的不断变化,导致企业架构要随时更改以适合业务需求,跟上技术更新的步伐。毫无疑问,这些重担都将压在企业开发人员身上。团队之间如何高效协调、快速交付产品、快速部署应用、以及满足企业业务需求,是开发人员亟需解决的问题。Docker技术可以帮助开发人员解决这些问题。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。Kubernetes构建在Docker容器技术之上,为用户提供了一个容器化应用的整体解决方案,它具有强大的容器编排能力,遵循微服务架构理论,并且开放开源,现今Kubernetes已成为Docker生态圈最流行的开源容器集群调度系统。Kubernetes使用Docker对应用程序进行打包、实例化及运行,以集群的方式运行及管理跨主机的容器,解决不同主机之间所运行的容器之间的通信问题。其中,Scheduler(调度器)是Kubernetes容器集群管理系统中加载并运行的调度程序,其负责收集、统计分析容器集群管理系统中所有Node的资源使用情况,然后以此为依据将新建的Pod分配到优先级最高的可用Node上去建立。现版本的Kubernetes调度器在进行资源调度时的主要考量因素是CPU和内存,但是这种资源调度方式忽略了网络因素对Pod在宿主机上启动运行的影响。控制节点的Scheduler组件在将待调度Pod和宿主机绑定后,宿主机还需要考虑下述两方面因素才能将Pod启动并正常运行:1.宿主机需要到Pod资源描述文件指定的网络地址下载Pod中所有容器的镜像文件,宿主机与镜像存储系统之间的网络传输速度直接关系到Pod的启动速度的快慢;2.Pod中数据是临时的,当Pod销毁时,其中的数据会丢失,所以Pod需要通过数据卷的方式将数据持久化。因此Pod在启动运行后,Pod还需要挂载持久化存储系统进行数据的存取,宿主机与持久化存储之间的数据传输速度会直接影响Pod中运行的应用的IO速度。Kubernetes进行资源调度是根据各工作节点上报的资源使用情况和Pod创建时请求的资源量进行的。从一个Pod被Scheduler调度到合适的工作节点上开始,到其生命周期截止,Pod都不会在各工作节点间发生迁移。但是随着时间的推进,工作节点上资源的变化,Pod的创建与删除等种种因素的影响,在Pod创建之初调度器做出的调度选择在此刻可能已不在适用。在实际的应用场景中,往往需要将一个正在某一个工作节点运行的Pod迁移到一个与调度策略匹配程度更高的新工作节点上。
技术实现思路
本专利技术的目的是提供一种基于Kubernetes容器资源调度方法,解决Kubernetes的调度策略单一,无法根据容器应用中对系统内核、网络传输速度等特定因素,实现集群中容器到机器节点的合理调度;并实现了将某个工作节点上运行的Pod迁移到另一个与调度策略匹配程度更高的新工作节点上的动态负载均衡调度。本专利技术所采用的技术方案是:一种基于Kubernetes的动态负载均衡资源调度方法,采用Kubernetes容器集群管理系统;所述系统加载并运行若干个Node,其中Node是Kubernetes容器集群的工作节点;其特征在于,所述方法包括以下步骤:步骤1:Kubernetes容器集群管理系统中的工作节点向控制节点汇报资源使用状况;步骤2:在控制节点上创建Pod,在Pod的资源描述文件中指明Pod需求,并放入待调度Pod队列;步骤3:调度器从待调度Pod队列取出Pod,根据Pod的资源描述文件,为Pod选择最合适的节点;步骤4:待调度Pod在目标节点上调度运行;步骤5:监控程序定期采集Pod和宿主机的性能信息,并将这些信息存入持久化数据库etcd;步骤6:从持久化数据库etcd中读取Pod和其宿主机的性能数据,进行处理运算,处理后将CPU利用率、内存利用率、镜像平均传输速度和集群的镜像网络负载均值之比反馈到调度器;步骤7:调度器根据集群整体负载信息进行资源的动态调整。本专利技术相比现有的调度策略,其优点主要体现在以下几个方面:1.Kubernetes默认的资源模型比较单一,本专利技术改进了Kubernetes的资源模型,提出了在CPU、内存的基础上加入网络带宽,存储空间等资源模型作为调度的衡量因素;2.设计了一种基于双负载队列的负载均衡方法,使用二叉堆的方式实现高负载队列和低负载队列,通过周期性检测集群的负载情况,将负载较高的节点的一些Pod迁移到负载较低的节点上,以保证集群的负载均衡;3.针对Kubernetes不支持动态调度的缺陷,本专利技术结合Kubernetes调度系统的特点改进了一种动态负载均衡算法,将调度算法分为静态调度部分和动态调度部分,该算法在集群环境变化时依然能够较好的维持系统的负载均衡。附图说明图1为本专利技术实施例的方法原理图;图2为本专利技术实施例中动态调度触发条件示意图;图3为本专利技术实施例中动态控制流程图;图4为本专利技术实施例中动态调度过程图。具体实施方式为了便于本领域普通技术人员理解和实施本专利技术,下面结合附图及实施例对本专利技术作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本专利技术,并不用于限定本专利技术。本专利技术提供的一种基于Kubernetes的动态负载均衡资源调度方法,采用Kubernetes容器集群管理系统;系统加载并运行若干个Node,其中Node是Kubernetes容器集群的工作节点;本专利技术可改善现有的Kubernetes系统中的调度器的调度策略,使Pod能够被调度到优先级最高的可用节点(Node)上,从而改善Kubernetes容器集群的整体性能,尤其是动态调度策略,实现了整个集群资源的负载均衡。请见图1,本专利技术提供的一种基于Kubernetes的动态负载均衡资源调度方法,包括以下步骤:步骤1:Kubernetes容器集群管理系统中的工作节点向控制节点汇报资源使用状况;Kubernetes资源调度模块最核心的组件是控制节点(Master节点)上的Scheduler模块,该模块负责管理待调度Pod和所有可用节点,并根据持久化数据库etcd上存储的集群负载信息建立高负载队列和低负载队列,根据调度算法和调度策略为待调度Pod选择最佳的宿主机,将Pod和Node进行绑定,并将绑定信息存入持久化数据库etcd。步骤2:在控制节点上创建Pod,在Pod的资源描述文件中指明Pod需求,并放入待调度Pod队列;Pod需求包括申请的资源量、挂载的存储卷等;步骤本文档来自技高网
...

【技术保护点】
1.一种基于Kubernetes的动态负载均衡资源调度方法,采用Kubernetes容器集群管理系统;所述系统加载并运行若干个Node,其中Node是Kubernetes容器集群的工作节点;/n其特征在于,所述方法包括以下步骤:/n步骤1:Kubernetes容器集群管理系统中的工作节点向控制节点汇报资源使用状况;/n步骤2:在控制节点上创建Pod,在Pod的资源描述文件中指明Pod需求,并放入待调度Pod队列;/n步骤3:调度器从待调度Pod队列取出Pod,根据Pod的资源描述文件,为Pod选择最合适的节点;/n步骤4:待调度Pod在目标节点上调度运行;/n步骤5:监控程序定期采集Pod和宿主机的性能信息,并将这些信息存入持久化数据库etcd;/n步骤6:从持久化数据库etcd中读取Pod和其宿主机的性能数据,进行处理运算,处理后将CPU利用率、内存利用率、镜像平均传输速度和集群的镜像网络负载均值之比反馈到调度器;/n步骤7:调度器根据集群整体负载信息进行资源的动态调整。/n

【技术特征摘要】
1.一种基于Kubernetes的动态负载均衡资源调度方法,采用Kubernetes容器集群管理系统;所述系统加载并运行若干个Node,其中Node是Kubernetes容器集群的工作节点;
其特征在于,所述方法包括以下步骤:
步骤1:Kubernetes容器集群管理系统中的工作节点向控制节点汇报资源使用状况;
步骤2:在控制节点上创建Pod,在Pod的资源描述文件中指明Pod需求,并放入待调度Pod队列;
步骤3:调度器从待调度Pod队列取出Pod,根据Pod的资源描述文件,为Pod选择最合适的节点;
步骤4:待调度Pod在目标节点上调度运行;
步骤5:监控程序定期采集Pod和宿主机的性能信息,并将这些信息存入持久化数据库etcd;
步骤6:从持久化数据库etcd中读取Pod和其宿主机的性能数据,进行处理运算,处理后将CPU利用率、内存利用率、镜像平均传输速度和集群的镜像网络负载均值之比反馈到调度器;
步骤7:调度器根据集群整体负载信息进行资源的动态调整。


2.根据权利要求1所述的基于Kubernetes的动态负载均衡资源调度方法,其特征在于:步骤2中所述需求包括申请的资源量、挂载的存储卷。


3.根据权利要求1所述的基于Kubernetes的动态负载均衡资源调度方法,其特征在于:步骤3中所述为Pod选择最合适的节点,具体实现包括采用静态调度为Pod选择最合适的节点,或采用动态调度为Pod选择最合适的节点;
所述静态调度,当待调度Pod队列不为空时,按照先进先出的顺序将待调度Pod队列里的Pod按照设计的调度策略调...

【专利技术属性】
技术研发人员:陈晶何琨杜瑞颖叶琼州
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北;42

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

1