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

技术领域

本公开的实施例涉及计算机技术领域,具体涉及负载均衡方法、装置、电子设备和计算机可读介质。

背景技术

Kubernetes系统是一个开源的,用于管理云平台中多个主机上的容器化的应用。传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,不利于应用的升级更新/回滚等操作。Kubernetes系统是通过部署容器方式实现应用的运行。Kubernetes系统可以包括多个节点,每个节点都可以设置有多个容器集合。每个容器集合可以包含多个容器。容器之间互相隔离,进程不会相互影响,可以区分各自的计算资源。

实际中,接入Kubernetes系统的容器是动态变化的,进而使得容器集合和节点的负载也动态变化。但是,Kubernetes系统本身无法实现资源的动态调度,这就导致节点之间容器集合分布不均,节点之间负载不均衡,进而容易出现节点运行异常或宕机等情况。为了保证容器的正常运行,出现运行异常或宕机的节点上的容器集合需要迁移至其他节点。如此,可能进一步加剧了其他节点之间的负载不均衡,引起其他节点的运行异常或宕机,甚至影响到整个Kubernetes系统的运行稳定。

发明内容

本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。

本公开的一些实施例提出了负载均衡方法、装置、电子设备和计算机可读介质,来解决以上背景技术部分提到的技术问题。

第一方面,本公开的一些实施例提供了一种负载均衡方法,该方法包括:计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

第二方面,本公开的一些实施例提供了一种负载均衡装置,该装置包括:利用率计算单元,被配置成计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;节点利用率均值计算单元,被配置成基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;节点选择单元,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,被配置成根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;迁移单元,被配置成确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

第三方面,本公开的一些实施例提供了一种电子设备,包括:一个或多个处理器;存储器,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器执行上述第一方面的负载均衡方法。

第四方面,本公开的一些实施例提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述第一方面的负载均衡方法。

本公开的上述各个实施例中的一个实施例具有如下有益效果:首先计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列。然后基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值,节点利用率均值可以反映Kubernetes系统的整体性能,有利于对节点负载的迁移做出判断。当节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率时,根据节点利用率序列中确定第一数量的高利用率节点和第二数量的低利用率节点,确定可以迁出和迁入的节点。最后,确定高利用率节点上的可迁移容器集合,并将可迁移容器集合迁移至低利用率节点。如此,实现了对Kubernetes系统中节点的负载动态调整,有利于Kubernetes系统中节点之间的负载平衡,提高Kubernetes系统的运行稳定性。

附图说明

结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。

图1是本公开的一些实施例的负载均衡方法的应用场景的示意图;

图2是根据本公开的负载均衡方法的一些实施例的流程图;

图3是根据本公开的负载均衡方法的另一些实施例的流程图;

图4是根据本公开的负载均衡方法的又一些实施例的流程图;

图5是根据本公开的负载均衡装置的一些实施例的结构示意图;

图6是适于用来实现本公开的一些实施例的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。

需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。

需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。

本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。

下面将参考附图并结合实施例来详细说明本公开。

图1是根据本公开一些实施例的负载均衡方法的一个应用场景的示意图。

Kubernetes系统中存在多个节点101、102、103,每个节点上有对应的容器集合。例如,节点101上包含容器集合1011、1012、1013。节点101、102、103可以与负载均衡服务器104连接,负载均衡服务器104可以实时或间隔设定时间对每个节点的利用率进行计算,并对节点利用率进行排序得到节点利用率序列。负载均衡服务器104可以根据节点利用率序列计算节点利用率均值。实际中,节点101、102、103的负载通常是不相同的。当节点利用率序列中不存在、与节点利用率均值的差值大于第一设定阈值的节点利用率时,说明当前的Kubernetes系统中,各个节点的负载比较均衡,负载均衡服务器104可以不调整节点的负载。当节点利用率序列中存在、与节点利用率均值的差值大于第一设定阈值的节点利用率时,说明当前的Kubernetes系统中,存在负载差别较大的节点,可能影响到节点的正常运行和Kubernetes系统的稳定性。此时,负载均衡服务器104可以从节点利用率序列中确定至少一个高利用率节点和至少一个低利用率节点。之后,负载均衡服务器104可以将高利用率节点上的可迁移容器集合迁移至低利用率节点。如图1所示,负载均衡服务器104确定节点101为高利用率节点,节点102为低利用率节点。则负载均衡服务器104可以将节点101上的容器集合1011迁移至节点102。则容器集合1011迁移至节点102后,成为节点102上的容器集合1024。如此,实现了对Kubernetes系统中节点负载的动态调整,可以提高Kubernetes系统的运行稳定性。

应该理解,图1中的节点和负载均衡服务器数目仅仅是示意性的。根据实现需要,可以具有任意数目的节点和负载均衡服务器。

继续参考图2,图2示出了根据本公开的负载均衡方法的一些实施例的流程200。该负载均衡方法,包括以下步骤:

步骤201,计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列。

在一些实施例中,负载均衡方法的执行主体(例如图1所示的负载均衡服务器104)可以通过有线连接方式或者无线连接方式从Kubernetes系统的节点中获取信息。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。

上述节点可以设置有至少一个容器集合,每个容器集合都可以占用节点的多种资源。执行主体可以实时获取Kubernetes系统中每个节点的相关信息,并根据相关信息计算每个节点的利用率,进而得到节点利用率序列。其中,节点利用率序列内的节点利用率可以按照由大到小的顺序排列,也可以按照由小到大的顺序排列。

步骤202,基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值。

在一些实施例中,执行主体可以对节点利用率序列中的节点利用率进行求和,然后将求和得到的结果除以节点利用率的个数,得到节点利用率均值。执行主体还可以根据节点自身的特点对节点利用率进行加权求和,然后将加权求和得到的结果除以节点利用率的个数,得到节点利用率均值。例如,某些节点上的容器集合可以是:容器集合要求长时间无故障运行、高安全级别运行、不允许别的容器集合加入节点等。对于包含这些类型容器集合的节点,可以配置与其他节点不同的权重,进而影响节点利用率均值的计算结果。如此,可以通过节点利用率均值真实反映Kubernetes系统的整体性能,有利于对节点负载的迁移做出准确判断。例如,当节点利用率均值为50%时,说明此时Kubernetes系统的负载不大,整体性能稳定。即使有些节点的负载超过80%,远超过节点利用率均值的50%,也无需将这些节点上的容器集合迁移至其他节点。当节点利用率均值为80%时,说明此时Kubernetes系统的负载很大,整体性能不稳定。即使有些节点的负载为85%,与节点利用率均值的80%差别不大,也需要将这些节点上的容器集合迁移至其他节点,以维持Kubernetes系统的稳定。可见,节点利用率均值决定是否迁移容器集合。

步骤203,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点。

当节点利用率序列中、某些节点利用率与节点利用率均值的差值大于第一设定阈值时,说明Kubernetes系统中节点之间存在负载不均衡的情况。执行主体可以从节点利用率序列中选出第一数量的高利用率节点和第二数量的低利用率节点。其中,第一设定阈值的取值根据实际需要而定。高利用率节点可以是节点利用率高于节点利用率均值的全部节点,也可以是从节点利用率高于节点利用率均值的全部节点中选取的部分节点。同理可以得到低利用率节点。相应的第一数量和第二数量的取值根据实际需要而定。

步骤204,确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

容器集合可以有不同的属性。例如,有些容器集合在节点本地存储有多种数据,而容器集合正常运行需要用到这些数据,这些容器集合为不可迁移容器集合,对应的属性可以是:不可迁移。另一些容器集合则可以不依赖节点本地数据运行,这些容器集合通常为可迁移容器集合,对应的属性可以是:可迁移。执行主体可以首先确定高利用率节点上的可迁移容器集合,然后再将可迁移容器集合迁移至上述低利用率节点。如此,可以调整Kubernetes系统中节点的负载,有利于Kubernetes系统中节点之间的负载平衡,提高Kubernetes系统的运行稳定性。

本公开的一些实施例公开的负载均衡方法,首先计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列。然后基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值,节点利用率均值可以反映Kubernetes系统的整体性能,有利于对节点负载的迁移做出判断。当节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率时,根据节点利用率序列中确定第一数量的高利用率节点和第二数量的低利用率节点,确定可以迁出和迁入的节点。最后,确定高利用率节点上的可迁移容器集合,并将可迁移容器集合迁移至低利用率节点。如此,实现了对Kubernetes系统中节点的负载动态调整,有利于Kubernetes系统中节点之间的负载平衡,提高Kubernetes系统的运行稳定性。

进一步参考图3,其示出了负载均衡方法的另一些实施例的流程300。该负载均衡方法的流程300,包括以下步骤:

步骤301,从上述Kubernetes系统中筛选出、节点迁移属性为允许迁移容器集合的至少一个节点。

上述节点可以包括节点迁移属性,上述节点迁移属性可以用于标识节点是否允许迁移容器集合。执行主体可以根据节点迁移属性,筛选出允许迁移容器集合的节点。

步骤302,计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列。

执行主体可以计算每个允许迁移容器集合的节点的利用率,得到节点利用率序列。

在一些实施例的可选实现方式中,上述计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列,可以包括以下步骤:

第一步,间隔设定时间计算上述至少一个节点中每个节点的利用率。

执行主体可以间隔设定时间计算上述至少一个节点中每个节点的利用率,间隔时间可以根据需要设定。

第二步,按照利用率由大到小的顺序排序,生成节点利用率序列。

执行主体可以按照利用率由大到小的顺序排序,生成节点利用率序列。

在一些实施例的可选实现方式中,上述间隔设定时间计算上述至少一个节点中每个节点的利用率,可以包括以下步骤:

第一步,间隔设定时间获取每个节点的指定信息。

为了计算节点的利用率,执行主体可以间隔设定时间获取每个节点的指定信息。其中,上述指定信息可以包括:容器集合的处理器使用率、容器集合的内存使用率、容器集合的数量。

第二步,基于上述指定信息构建各个节点的状态信息。

执行主体可以通过指定信息计算节点的多个特征信息,然后通过特征信息构建节点的状态信息。状态信息可以通过矩阵的形式表示。

第三步,根据上述状态信息计算各个节点的利用率。

执行主体可以对状态信息包含的信息进行矩阵计算等处理,得到节点的利用率。

在一些实施例的可选实现方式中,上述根据上述状态信息计算各个节点的利用率,可以包括以下步骤:

第一步,基于上述状态信息分别计算节点处理器使用率、节点内存使用率和节点容器集合部署率。

节点的负载主要通过处理器使用率、内存使用率和容器集合的数量来表征。对应的,执行主体可以通过状态信息包含的信息计算节点处理器使用率、节点内存使用率和节点容器集合部署率。

第二步,对上述节点处理器使用率、节点内存使用率和节点容器集合部署率加权求和,得到节点的利用率。

不同的容器集合对处理器、内容的要求可以不同。对应的,执行主体可以对上述节点处理器使用率、节点内存使用率和节点容器集合部署率加权求和,得到节点的利用率。通过加权的方式可以对处理器、内存、容器集合部署率进行性能均衡,使得得到的节点的利用率可以整体上体现节点的运行状态。

步骤303,基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值。

步骤304,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点。

步骤305,确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

步骤303至步骤305的内容与步骤202和步骤204的内容相同,此处不再一一赘述。

进一步参考图4,其示出了负载均衡方法的另一些实施例的流程400。该负载均衡方法的流程400,包括以下步骤:

步骤401,计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列。

步骤402,基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值。

步骤403,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点。

步骤401至步骤403的内容与步骤201和步骤203的内容相同,此处不再一一赘述。

步骤404,查询上述高利用率节点上每个容器集合的容器迁移属性。

为了迁移容器集合,执行主体可以查询上述高利用率节点上每个容器集合的容器迁移属性。其中,上述容器迁移属性用于标识容器集合是否允许迁移。例如,允许迁移的容器迁移属性可以通过“1”标识,不允许迁移的容器迁移属性可以通过“0”标识。容器迁移属性还可以通过字符等形式表示,此处不再一一赘述。

步骤405,将容器迁移属性为允许迁移的容器集合标记为可迁移容器集合。

执行主体可以将容器迁移属性为允许迁移的容器集合标记为可迁移容器集合。

步骤406,将上述可迁移容器集合迁移至上述低利用率节点。

需要说明的是,节点上可能全部是允许迁移的容器集合,执行主体通常不会将全部的允许迁移的容器集合迁移至其他节点,而是尽量保证节点负载均衡的情况下迁移允许迁移的容器集合。

在一些实施例的可选实现方式中,上述将上述可迁移容器集合迁移至上述低利用率节点,可以包括以下步骤:

第一步,分别获取上述可迁移容器集合的第一运行模式信息、和上述低利用率节点的第二运行模式信息。

可迁移容器集合可以不同的运行模式。例如,有些可迁移容器集合可以是长时间运行的、有些可迁移容器集合可以是短时间运行的、有些可迁移容器集合可以是定时运行的。对应不同的运行模式,对节点各种资源(例如处理器、内存等)的占用也不同。为此,执行主体可以分别获取上述可迁移容器集合的第一运行模式信息、和上述低利用率节点的第二运行模式信息。其中,第一运行模式信息可以是上述的长时间运行、短时间运行或定时运行等。第二运行模式信息可以与第一运行模式信息相同,也可以不同。

第二步,响应于上述第一运行模式信息与上述第二运行模式信息匹配,将上述可迁移容器集合迁移至上述低利用率节点。

执行主体可以对第一运行模式信息与第二运行模式信息进行匹配。当第一运行模式信息与第二运行模式信息匹配时,执行主体可以将上述可迁移容器集合迁移至上述低利用率节点。例如,第一运行模式信息与第二运行模式信息是都是短时间运行,则第一运行模式信息与第二运行模式信息匹配。第二运行模式信息为长时间运行时,第一运行模式信息为任意一种运行模式,都与第二运行模式信息匹配。

在一些实施例的可选实现方式中,上述将上述可迁移容器集合迁移至上述低利用率节点,可以包括以下步骤:

第一步,根据上述可迁移容器集合的处理器使用率和内存使用率,计算上述可迁移容器集合的容器集合负载。

执行主体可以根据上述可迁移容器集合的处理器使用率和内存使用率,计算上述可迁移容器集合的容器集合负载。

第二步,响应于上述低利用率节点增加上述容器集合负载后的利用率、与上述节点利用率均值之间的差值小于等于第二设定阈值,将上述可迁移容器集合迁移至上述低利用率节点。

执行主体可以计算增加上述容器集合负载后的低利用率节点的利用率。当该利用率与上述节点利用率均值之间的差值小于等于第二设定阈值时,说明低利用率节点增加可迁移容器集合后,不会出现节点负载不均衡的情况。此时,执行主体可以将上述可迁移容器集合迁移至上述低利用率节点。需要说明的是,此处的第二设定阈值可以是一个数值区间。例如,第二设定阈值可以是(-1,1)。差值在(-1,1)的范围内可以认为增加的可迁移容器集合不会对低利用率节点造成负载不均衡。

在一些实施例的可选实现方式中,上述将上述可迁移容器集合迁移至上述低利用率节点,可以包括以下步骤:

第一步,计算迁移可迁移容器集合后的高利用率节点的利用率、与上述节点利用率均值之间的第一差值。

执行主体可以计算迁移可迁移容器集合后高利用率节点的利用率与节点利用率均值之间的第一差值。

第二步,计算迁移可迁移容器集合后的低利用率节点的利用率、与上述节点利用率均值之间的第二差值。

与上述第一差值的计算过程相同,执行主体可以计算得到对应低利用率节点的第二差值。

第三步,响应于上述第一差值和第二差值都小于等于上述第二设定阈值,停止迁移上述可迁移容器集合。

当第一差值和第二差值都小于等于上述第二设定阈值时,说明此时各个节点的负载差别不大,基本达到了负载均衡。此时,执行主体可以停止迁移上述可迁移容器集合。如此,实现了对节点负载的动态调整,有利于Kubernetes系统中节点之间的负载平衡,提高Kubernetes系统的运行稳定性。

在一些实施例的可选实现方式中,当Kubernetes系统接入新容器集合时,执行主体可以优先将新容器集合接入低利用率节点,以提高节点负载的稳定性。

进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种负载均衡装置的一些实施例,这些装置实施例与图2所示的那些方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图5所示,一些实施例的负载均衡装置500包括:利用率计算单元501、节点利用率均值计算单元502、节点选择单元503和迁移单元504。其中,利用率计算单元501,被配置成计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;节点利用率均值计算单元502,被配置成基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;节点选择单元503,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,被配置成根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;迁移单元504,被配置成确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

在一些实施例的可选实现方式中,上述节点包括节点迁移属性,上述节点迁移属性用于标识节点是否允许迁移容器集合,以及,上述利用率计算单元501可以包括:节点筛选子单元(图中未示出)和利用率计算子单元(图中未示出)。其中,节点筛选子单元,被配置成从上述Kubernetes系统中筛选出、节点迁移属性为允许迁移容器集合的至少一个节点;利用率计算子单元,被配置成计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列。

在一些实施例的可选实现方式中,上述利用率计算子单元可以包括:利用率计算模块(图中未示出)和节点利用率序列生成模块(图中未示出)。其中,利用率计算模块,被配置成间隔设定时间计算上述至少一个节点中每个节点的利用率;节点利用率序列生成模块,被配置成按照利用率由大到小的顺序排序,生成节点利用率序列。

在一些实施例的可选实现方式中,上述利用率计算模块可以包括:信息获取子模块(图中未示出)、状态信息构建子模块(图中未示出)和利用率计算子模块(图中未示出)。其中,信息获取子模块,被配置成间隔设定时间获取每个节点的指定信息,上述指定信息包括:容器集合的处理器使用率、容器集合的内存使用率、容器集合的数量;状态信息构建子模块,被配置成基于上述指定信息构建各个节点的状态信息;利用率计算子模块,被配置成根据上述状态信息计算各个节点的利用率。

在一些实施例的可选实现方式中,上述利用率计算子模块可以包括:信息计算模组(图中未示出)和利用率计算模组(图中未示出)。其中,信息计算模组,被配置成基于上述状态信息分别计算节点处理器使用率、节点内存使用率和节点容器集合部署率;利用率计算模组,被配置成对上述节点处理器使用率、节点内存使用率和节点容器集合部署率加权求和,得到节点的利用率。

在一些实施例的可选实现方式中,上述迁移单元504可以包括:迁移属性查询子单元(图中未示出)、标记子单元(图中未示出)和迁移子单元(图中未示出)。其中,迁移属性查询子单元,被配置成查询上述高利用率节点上每个容器集合的容器迁移属性,上述容器迁移属性用于标识容器集合是否允许迁移;标记子单元,被配置成将容器迁移属性为允许迁移的容器集合标记为可迁移容器集合;迁移子单元,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

在一些实施例的可选实现方式中,上述迁移子单元可以包括:运行模式获取模块(图中未示出)和迁移模块(图中未示出)。其中,运行模式获取模块,被配置成分别获取上述可迁移容器集合的第一运行模式信息、和上述低利用率节点的第二运行模式信息;迁移模块,响应于上述第一运行模式信息与上述第二运行模式信息匹配,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

在一些实施例的可选实现方式中,上述迁移模块可以包括:容器集合负载计算子模块(图中未示出)和迁移子模块(图中未示出)。其中,容器集合负载计算子模块,被配置成根据上述可迁移容器集合的处理器使用率和内存使用率,计算上述可迁移容器集合的容器集合负载;迁移子模块,响应于上述低利用率节点增加上述容器集合负载后的利用率、与上述节点利用率均值之间的差值小于等于第二设定阈值,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

在一些实施例的可选实现方式中,上述迁移子模块可以包括:第一差值计算模组(图中未示出)、第二差值计算模组(图中未示出)和迁移模组(图中未示出)。其中,第一差值计算模组,被配置成计算迁移可迁移容器集合后的高利用率节点的利用率、与上述节点利用率均值之间的第一差值;第二差值计算模组,被配置成计算迁移可迁移容器集合后的低利用率节点的利用率、与上述节点利用率均值之间的第二差值;迁移模组,响应于上述第一差值和第二差值都小于等于上述第二设定阈值,被配置成停止迁移上述可迁移容器集合。

可以理解的是,该装置500中记载的诸单元与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于装置500及其中包含的单元,在此不再赘述。

如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。

特别地,根据本公开的一些实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的一些实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的一些实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开的一些实施例的方法中限定的上述功能。

需要说明的是,本公开的一些实施例上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的一些实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的一些实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开的一些实施例中的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括利用率计算单元、节点利用率均值计算单元、节点选择单元和迁移单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,迁移单元还可以被描述为“用于迁移容器集合的单元”。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

根据本公开的一个或多个实施例,提供了一种负载均衡方法,包括:计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述节点包括节点迁移属性,上述节点迁移属性用于标识节点是否允许迁移容器集合,以及,上述计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,包括:从上述Kubernetes系统中筛选出、节点迁移属性为允许迁移容器集合的至少一个节点;计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列。

根据本公开的一个或多个实施例,上述计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列,包括:间隔设定时间计算上述至少一个节点中每个节点的利用率;按照利用率由大到小的顺序排序,生成节点利用率序列。

根据本公开的一个或多个实施例,上述间隔设定时间计算上述至少一个节点中每个节点的利用率,包括:间隔设定时间获取每个节点的指定信息,上述指定信息包括:容器集合的处理器使用率、容器集合的内存使用率、容器集合的数量;基于上述指定信息构建各个节点的状态信息;根据上述状态信息计算各个节点的利用率。

根据本公开的一个或多个实施例,上述根据上述状态信息计算各个节点的利用率,包括:基于上述状态信息分别计算节点处理器使用率、节点内存使用率和节点容器集合部署率;对上述节点处理器使用率、节点内存使用率和节点容器集合部署率加权求和,得到节点的利用率。

根据本公开的一个或多个实施例,上述确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点,包括:查询上述高利用率节点上每个容器集合的容器迁移属性,上述容器迁移属性用于标识容器集合是否允许迁移;将容器迁移属性为允许迁移的容器集合标记为可迁移容器集合;将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述将上述可迁移容器集合迁移至上述低利用率节点,包括:分别获取上述可迁移容器集合的第一运行模式信息、和上述低利用率节点的第二运行模式信息;响应于上述第一运行模式信息与上述第二运行模式信息匹配,将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述将上述可迁移容器集合迁移至上述低利用率节点,包括:根据上述可迁移容器集合的处理器使用率和内存使用率,计算上述可迁移容器集合的容器集合负载;响应于上述低利用率节点增加上述容器集合负载后的利用率、与上述节点利用率均值之间的差值小于等于第二设定阈值,将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述将上述可迁移容器集合迁移至上述低利用率节点,包括:计算迁移可迁移容器集合后的高利用率节点的利用率、与上述节点利用率均值之间的第一差值;计算迁移可迁移容器集合后的低利用率节点的利用率、与上述节点利用率均值之间的第二差值;响应于上述第一差值和第二差值都小于等于上述第二设定阈值,停止迁移上述可迁移容器集合。

根据本公开的一个或多个实施例,提供了一种负载均衡装置,包括:利用率计算单元,被配置成计算Kubernetes系统中至少一个节点的利用率,得到节点利用率序列,上述节点设置有至少一个容器集合;节点利用率均值计算单元,被配置成基于上述节点利用率序列计算上述Kubernetes系统的节点利用率均值;节点选择单元,响应于上述节点利用率序列中、存在与上述节点利用率均值的差值大于第一设定阈值的节点利用率,被配置成根据上述节点利用率序列确定第一数量的高利用率节点和第二数量的低利用率节点;迁移单元,被配置成确定上述高利用率节点上的可迁移容器集合,并将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述节点包括节点迁移属性,上述节点迁移属性用于标识节点是否允许迁移容器集合,以及,上述利用率计算单元包括:节点筛选子单元,被配置成从上述Kubernetes系统中筛选出、节点迁移属性为允许迁移容器集合的至少一个节点;利用率计算子单元,被配置成计算上述至少一个节点中每个节点的利用率,得到上述节点利用率序列。

根据本公开的一个或多个实施例,上述利用率计算子单元包括:利用率计算模块,被配置成间隔设定时间计算上述至少一个节点中每个节点的利用率;节点利用率序列生成模块,被配置成按照利用率由大到小的顺序排序,生成节点利用率序列。

根据本公开的一个或多个实施例,上述利用率计算模块包括:信息获取子模块,被配置成间隔设定时间获取每个节点的指定信息,上述指定信息包括:容器集合的处理器使用率、容器集合的内存使用率、容器集合的数量;状态信息构建子模块,被配置成基于上述指定信息构建各个节点的状态信息;利用率计算子模块,被配置成根据上述状态信息计算各个节点的利用率。

根据本公开的一个或多个实施例,上述利用率计算子模块包括:信息计算模组,被配置成基于上述状态信息分别计算节点处理器使用率、节点内存使用率和节点容器集合部署率;利用率计算模组,被配置成对上述节点处理器使用率、节点内存使用率和节点容器集合部署率加权求和,得到节点的利用率。

根据本公开的一个或多个实施例,上述迁移单元包括:迁移属性查询子单元,被配置成查询上述高利用率节点上每个容器集合的容器迁移属性,上述容器迁移属性用于标识容器集合是否允许迁移;标记子单元,被配置成将容器迁移属性为允许迁移的容器集合标记为可迁移容器集合;迁移子单元,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述迁移子单元包括:运行模式获取模块,被配置成分别获取上述可迁移容器集合的第一运行模式信息、和上述低利用率节点的第二运行模式信息;迁移模块,响应于上述第一运行模式信息与上述第二运行模式信息匹配,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述迁移模块包括:容器集合负载计算子模块,被配置成根据上述可迁移容器集合的处理器使用率和内存使用率,计算上述可迁移容器集合的容器集合负载;迁移子模块,响应于上述低利用率节点增加上述容器集合负载后的利用率、与上述节点利用率均值之间的差值小于等于第二设定阈值,被配置成将上述可迁移容器集合迁移至上述低利用率节点。

根据本公开的一个或多个实施例,上述迁移子模块包括:第一差值计算模组,被配置成计算迁移可迁移容器集合后的高利用率节点的利用率、与上述节点利用率均值之间的第一差值;第二差值计算模组,被配置成计算迁移可迁移容器集合后的低利用率节点的利用率、与上述节点利用率均值之间的第二差值;迁移模组,响应于上述第一差值和第二差值都小于等于上述第二设定阈值,被配置成停止迁移上述可迁移容器集合。

以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 负载均衡方法、装置、电子设备和计算机可读存储介质
  • 负载均衡方法及装置、计算机可读存储介质及电子设备
技术分类

06120112177133