一种基于机器学习的容器混合扩缩容方法及系统与流程
未命名
07-23
阅读:129
评论:0
1.本技术涉及云计算领域领域,具体涉及一种基于机器学习的容器混合扩缩容方法及系统。
背景技术:
2.在当前的云计算产品中,弹性伸缩通常是根据应用需求和策略,触发阈值后自动调整弹性计算资源,降低实际需求与预估资源的差距,其本质是解决资源与业务负载之间供需平衡的问题,对产品的功能和性能起到至关重要的作用。
3.kubernetes在容器扩缩容方面主要包括两种策略:一种是容器水平扩缩容,根据容器的实时负载,自动调整pod控制器的实例副本数。另一种是容器垂直扩缩容,依赖业务负载指标,自动计算或调整pod控制器中pod模板的cpu和内存的配额。
4.水平扩缩容主要是调整pod控制器的副本数,扩缩容是在触发阈值后进行调整,不可避免会产生滞后性;而且同一个pod控制器下每个副本的配额规格是相同的,每个副本的配额相同会造成扩缩容不精准,造成资源浪费。垂直扩缩容主要是调整pod的资源配额,目前亟待解决的问题是每次都需要重启pod的,这对于业务方来说是难以接受的。
技术实现要素:
5.本技术实施方式提出了一种基于机器学习的容器混合扩缩容方法及系统,以改善上述技术问题。
6.一种基于机器学习的容器混合扩缩容方法,包括以下步骤:
7.metrics server通过kubelet收集系统资源使用状态数据,包括pod的cpu,内存,gpu,磁盘io使用情况;prometheusadaptar通过prometheus收集自定义收集的数据类型,包括:每秒请求数,并发数,pps,延迟,接口响应成功率;每个pod控制器收集实时数据组成一个n维数组,n维数组中的数据为n个影响资源使用量的因素,n维数组的内容为:[pod名称,时间戳,pod的cpu使用量,pod的内存使用量,pod的gpu使用量,pod的磁盘io使用量,pod的每秒请求数,pod的并发数,pod的pps,pod的延迟,pod的接口响应成功率],按时间排序,将数据存储到数据库中;基于历史数据,在数据表中增加两列,分别为pod控制器中设置的cpu配额和pod控制器中设置的内存配额,记录在当前规模下的配额设定。
[0008]
在一些实施方式中,还包括:在数据表中增加人工标签列,0代表异常,1代表正常,2代表无法判断,如果有错误的数据,通过标记可去除数据,剔除掉数据的异常值。
[0009]
在一些实施方式中,还包括:根据历史数据加载数据并绘制图表,修补失真数据,提高数据质量;综合历史同时期的数据,当天相邻数据,进行修补。
[0010]
在一些实施方式中,还包括:收集待预测的pod控制器的资源使用量,机器学习预测算法计算出未来x小时pod控制器的期望配额,限制期望配额的最小配额mindesiredvalue和最大配额maxdesiredvalue,maxdesiredvalue根据当前集群资源剩余量变化,防止预测出的数据过小或过大影响其他组件运行。
[0011]
在一些实施方式中,还包括:收集被预测的pod控制器的n维数组x与历史数据中n维数组y的距离,根据欧氏距离的计算方法,计算历史数据n维数组间的距离:
[0012][0013]
其中,i=1至n,xi为数组x的元素,yi为数组y的元素。
[0014]
在一些实施方式中,还包括:
[0015]
圈定与待预测的样本距离最近的m个样本,作为待预测样本的近邻;需要不断对m值进行训练,重复直至取得误差率最小的m值;根据近邻中的大部分样本所需要的资源配额来决定待分类样本所需要的资源配额;输出期望配额desiredbasicvalue。
[0016]
在一些实施方式中,还包括:基于基本的期望配额desiredbasicvalue,增加由于时间影响的周期性变化因素系数s(t),节假期及特殊事件项因素系数h(t),以及其他影响因素系数ε(t),计算真实的目标配额;desiredvalue=desiredbasicvalue*s(t)*h(t)*ε(t);其中,t为时间。
[0017]
在一些实施方式中,还包括:计算目标指标和实际指标的差距,用混合扩缩容控制器决定策略。
[0018]
在一些实施方式中,还包括:
[0019]
计算当前配额currentmetricvalue与真实的目标配额desiredvalue的比率:ratio=currentmetricvalue/desiredvalue;
[0020]
当ratio≈1时保持不变,否则当currentmetricvalue《desiredvalue时为扩容,当currentmetricvalue》desiredvalue时为缩容;
[0021]
在一些实施方式中,还包括,计算待调整配额:
[0022]
adjustvalue=desiredvalue-currentmetricvalue;
[0023]
当adjustvalue《mindesiredvalue时,adjustvalue=mindesiredvalue;
[0024]
当adjustvalue》maxdesiredvalue时,adjustvalue=maxdesiredvalue;
[0025]
当mindesiredvalue《adjustvalue《maxdesiredvalue,如果集群中节点的剩余资源无法调度adjustvalue,尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,总额为adjustvalue;
[0026]
当mindesiredvalue《adjustvalue《maxdesiredvalue,如果集群可以成功调度配额adjustvalue,根据adjustvalue查看pod控制器中是否有已经存在该规格的副本集,存在则直接对副本集进行水平扩缩容,不存在则在pod控制器中创建对应规格的副本集更新或者创建对应控制器的副本集,将事件在需要进行操作的时间戳通知给pod控制器,事件中包含:预计调整时间戳,调整动作,目标要调整的资源量。
[0027]
一种基于机器学习的容器混合扩缩容系统,包括:电子设备,所述电子设备用于执行如上述的方法。
[0028]
本发明的有益之处在于:
[0029]
1.pod控制器支持多种配额的副本集的创新。
[0030]
2.混合扩缩容控制器的设计,可以实现不同副本集进行不同的扩缩容活动,保证在进行垂直扩缩容的同时,保证有部分pod没有重建,减少抖动和波动。
[0031]
3.对未来资源需求配额进行预测,降低滞后率。
[0032]
4.当集群可调度节点剩余配额不足,尝试将期望配额按集群可调度节点的剩余资源分割成x个配额,完成扩容。
附图说明
[0033]
为了更清楚地说明本技术实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034]
图1为基于机器学习的混合扩缩容框图;
[0035]
图2为pod控制器框图1;
[0036]
图3为pod控制器框图2;
[0037]
图4为pod控制器框图3;
[0038]
图5为机器学习预测算法流程图;
[0039]
图6为混合扩缩容控制器流程图流程图。
具体实施方式
[0040]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施方式中的附图,对本技术实施方式中的技术方案进行清楚、完整地描述。显然,所描述的实施方式仅仅是本技术一部分实施方式,而不是全部的实施方式。基于本技术中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本技术保护的范围。
[0041]
在本技术中,除非另有明确的规定或限定,术语“安装”、“连接”、“固定”等术语应做广义理解。例如,可以是固定连接,也可以是可拆卸连接,或一体连接;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通,也可以是仅为表面接触,或者通过中间媒介的表面接触连接。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。
[0042]
此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为特指或特殊结构。术语“一些实施方式”、“其他实施方式”等的描述意指结合该实施方式或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施方式或示例中。在本技术中,对上述术语的示意性表述不必须针对的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本技术中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
[0043]
本技术实施方式提出了一种基于机器学习的容器混合扩缩容方法及系统,以改善上述技术问题。
[0044]
一种基于机器学习的容器混合扩缩容方法,包括以下步骤:
[0045]
metrics server通过kubelet收集系统资源使用状态数据,包括pod的cpu,内存,gpu,磁盘io使用情况;prometheusadaptar通过prometheus收集自定义收集的数据类型,包括:每秒请求数,并发数,pps,延迟,接口响应成功率;每个pod控制器收集实时数据组成一
个n维数组,n维数组中的数据为n个影响资源使用量的因素,n维数组的内容为:[pod名称,时间戳,pod的cpu使用量,pod的内存使用量,pod的gpu使用量,pod的磁盘io使用量,pod的每秒请求数,pod的并发数,pod的pps,pod的延迟,pod的接口响应成功率],按时间排序,将数据存储到数据库中;基于历史数据,在数据表中增加两列,分别为pod控制器中设置的cpu配额和pod控制器中设置的内存配额,记录在当前规模下的配额设定。
[0046]
在一些实施方式中,还包括:在数据表中增加人工标签列,0代表异常,1代表正常,2代表无法判断,如果有错误的数据,通过标记可去除数据,剔除掉数据的异常值。
[0047]
在一些实施方式中,还包括:根据历史数据加载数据并绘制图表,修补失真数据,提高数据质量;综合历史同时期的数据,当天相邻数据,进行修补。
[0048]
在一些实施方式中,还包括:收集待预测的pod控制器的资源使用量,机器学习预测算法计算出未来x小时pod控制器的期望配额,限制期望配额的最小配额mindesiredvalue和最大配额maxdesiredvalue,maxdesiredvalue根据当前集群资源剩余量变化,防止预测出的数据过小或过大影响其他组件运行。
[0049]
在一些实施方式中,还包括:收集被预测的pod控制器的n维数组x与历史数据中n维数组y的距离,根据欧氏距离的计算方法,计算历史数据n维数组间的距离,n表示空间维数。
[0050][0051]
其中,i=1至n,xi为数组x的元素,yi为数组y的元素。
[0052]
在一些实施方式中,还包括:
[0053]
圈定与待预测的样本距离最近的m个样本,作为待预测样本的近邻;需要不断对m值进行训练,直至取误差率最小的m值。根据近邻中的大部分样本所需要的资源配额来决定待分类样本所需要的资源配额;输出期望配额desiredbasicvalue。
[0054]
在一些实施方式中,还包括:基于基本的期望配额desiredbasicvalue,增加由于时间影响的周期性变化因素系数s(t),节假期及特殊事件项因素系数h(t),以及其他影响因素系数ε(t),计算真实的目标配额;desiredvalue=desiredbasicvalue*s(t)*h(t)*ε(t);其中,t为时间。
[0055]
在一些实施方式中,还包括:计算目标指标和实际指标的差距,用混合扩缩容控制器决定策略。
[0056]
在一些实施方式中,还包括:
[0057]
计算当前配额的currentmetricvalue与真实的目标配额desiredvalue比率ratio=currentmetricvalue/desiredvalue当ratio≈1则保持不变,否则当currentmetricvalue《desiredvalue时为扩容,当currentmetricvalue》desiredvalue时为缩容。
[0058]
在一些实施方式中,还包括,计算待调整配额adjustvalue=desiredvalue-currentmetricvalue
[0059]
当adjustvalue《mindesiredvalue时,adjustvalue=mindesiredvalue
[0060]
当adjustvalue》maxdesiredvalue时,adjustvalue=maxdesiredvalue。
[0061]
在一些实施方式中,还包括,当mindesiredvalue《adjustvalue《
maxdesiredvalue,如果集群中节点的剩余资源无法调度adjustvalue,尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,总额为adjustvalue。
[0062]
在一些实施方式中,还包括当mindesiredvalue《adjustvalue《maxdesiredvalue,如果集群可以成功调度配额adjustvalue,根据adjustvalue查看pod控制器中是否有已经存在该规格的副本集,存在则直接对副本集进行水平扩缩容,不存在则在pod控制器中创建对应规格的副本集更新或者创建对应控制器的副本集,将事件在需要进行操作的时间戳通知给pod控制器,事件中包含:预计调整时间戳,调整动作,目标要调整的资源量。
[0063]
本发明还公开了一种基于机器学习的容器混合扩缩容系统,包括:电子设备,所述电子设备用于执行如上述的方法。
[0064]
本设计以kubernetes水平,垂直扩缩容策略为基础,提出一种基于机器学习的预测算法,进行混合扩缩容,目的是进行及时且精准的调整,pod控制器支持多种配额的属性设置,每种配额由一个副本集控制,一个副本集下控制的多个pod的配额相同;支持针对一个pod控制器下的不同副本集进行不同调整策略,做到调整后的资源精准匹配需求,提高集群资源利用率,减少扩缩容次数,整合水平和垂直扩缩容的优缺点。主要的方法包括:通过机器学习算法预测pod控制器未来的资源配额;混合扩缩容控制器根据未来的资源配额决定进行扩缩容的策略;允许一种pod控制器中存在多种配额的副本集,根据策略来实现精准扩缩容。
[0065]
实现步骤:
[0066]
1.构建历史数据库,对特征数据进行收集和落地,作为步骤2机器学习预测算法的输入项。通过步骤1.1收集系统资源使用数据;通过步骤1.2收集自定义项的数据。机器学习预测算法需要定时获取数据并进行存储,数据通过metrics api暴露。
[0067]
1.1metrics server通过kubelet收集系统资源使用状态数据,包括pod的cpu,内存,gpu,磁盘io使用情况。
[0068]
1.2prometheusadaptar通过prometheus收集自定义收集的数据类型,包括:每秒请求数,并发数,pps,延迟,接口响应成功率。
[0069]
1.3每个pod控制器收集实时数据组成一个n维数组,n维数组中的数据为n个影响资源使用量的因素,n维数组的内容为:[pod名称,时间戳,pod的cpu使用量,pod的内存使用量,pod的gpu使用量,pod的磁盘io使用量,pod的每秒请求数,pod的并发数,pod的pps,pod的延迟,pod的接口响应成功率],按时间排序,将数据存储到数据库中。
[0070]
1.5基于历史数据,在数据表中增加两列,分别为pod控制器中设置的cpu配额和pod控制器中设置的内存配额,记录在当前规模下的配额设定。
[0071]
1.6在数据表中增加人工标签列,0代表异常,1代表正常,2代表无法判断,如果有错误的数据,通过标记可去除数据,剔除掉数据的异常值。
[0072]
1.7根据历史数据加载数据并绘制图表,修补失真数据,提高数据质量;综合历史同时期的数据,当天相邻数据,进行修补。
[0073]
2.收集待预测的pod控制器的资源使用量,机器学习预测算法计算出未来x小时pod控制器的期望配额,限制期望配额的最小配额mindesiredvalue和最大配额maxdesiredvalue,maxdesiredvalue根据当前集群资源剩余量变化,防止预测出的数据过小或过大影响其他组件运行。
[0074]
2.1收集被预测的pod控制器的n维数组x与历史数据中n维数组y的距离,根据欧氏距离的计算方法,计算历史数据n维数组间的距离,n表示空间维数。
[0075]
2.2根据2.1中算出来的距离,圈定与待预测的样本距离最近的m个样本,作为待预测样本的近邻;需要不断对m值进行训练,直至取误差率最小的m值。根据近邻中的大部分样本所需要的资源配额来决定待分类样本所需要的资源配额;输出期望配额desiredbasicvalue;
[0076]
2.4基于基本的期望配额desiredbasicvalue,增加由于时间影响的周期性变化因素系数s(t),节假期及特殊事件项因素系数h(t),以及其他影响因素系数ε(t),计算真实的目标配额;
[0077]
desiredvalue=desiredbasicvalue*s(t)*h(t)*ε(t)。
[0078]
其中s(t)表示为受到时间影响的周期性变化因素,同一pod控制器在不同的时间段对资源的请求量不同,而且资源使用量也有明显的周期性,所以可针对月/周/日进行调整,在每日的波峰处,系数调高,每日的波谷处,系数调小;如果整个月份都对资源要求比较高,可以以月为单位将系数调高,反之,调小。计算方式中的初始化是
[0079]
这里的值越大,表示效应越明显;这个值越小,表示季节的效应越不明显
[0080]
h(t)表示为资源预测量受到节点日或者特殊事件的影响导致波动,di表示第i个节日前后一段时间,ki表示节假日的影响范围,例如运行在pod控制器上面的业务预计有类似双十一的电商活动等,导致资源使用量有波动。
[0081]
ε(t)表示为噪声项,资源预测量受到其他不可控因素影响,比如部分机器故障,政策变动等;
[0082]
3.根据步骤2给出的目标配额desiredvalue,计算目标指标和实际指标的差距,用混合扩缩容控制器决定策略。
[0083]
3.1计算当前配额和目标配额的比率
[0084]
ratio=currentmetricvalue/desiredvalue
[0085]
当ratio≈1则保持不变,否则当currentmetricvalue《desiredvalue,为扩容,当currentmetricvalue》desiredvalue为缩容;
[0086]
3.2计算待调整配额
[0087]
adjustvalue=desiredvalue-currentmetricvalue;
[0088]
3.2.1当adjustvalue《mindesiredvalue时,adjustvalue=mindesiredvalue;
[0089]
3.2.2当adjustvalue》maxdesiredvalue时,adjustvalue=maxdesiredvalue;
[0090]
3.2.3当mindesiredvalue《adjustvalue《maxdesiredvalue,如果集群中节点的剩余资源无法调度adjustvalue,尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,总额为adjustvalue;进入3.2.5
[0091]
3.2.4当mindesiredvalue《adjustvalue《maxdesiredvalue,如果集群可以成功调度配额adjustvalue,进入3.2.5;
[0092]
3.2.5根据adjustvalue查看pod控制器中是否有已经存在该规格的副本集,存在则直接对副本集进行水平扩缩容,不存在则在pod控制器中创建对应规格的副本集更新或者创建对应控制器的副本集,将事件在需要进行操作的时间戳通知给pod控制器,事件中包含:预计调整时间戳,调整动作,目标要调整的资源量。
[0093]
4.pod控制器收到混合扩缩容控制器的变更事件请求后,根据事件的时间戳,对pod控制器下的副本集进行混合扩缩容,通过这个策略,提高资源利用率。尽量一次加够,既不浪费,也不会增加太多副本。
[0094]
4.1当pod控制器中已经存在adjustvalue该规格的副本集时,直接进行水平调整;可进行如图2的扩容或者缩容。
[0095]
图2pod控制器框图-1
[0096]
4.2当pod控制器中没有adjustvalue该规格的副本集时,创建对应规格的副本集;如图3。
[0097]
图3pod控制器框图-2
[0098]
4.3当pod控制器中没有adjustvalue该规格的副本集且集群中单个节点的剩余资源无法调度adjustvalue,尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,如图4。
[0099]
图4pod控制器框图-3
[0100]
5.对预测模型结果进行评估,根据预测的期望资源desiredvalue与实际需求资源比较,重新从步骤2开始,调整相关参数n,x,s(t),h(t),ε(t)等,使结果更加精准。
[0101]
图5机器学习预测算法流程图
[0102]
步骤:
[0103]
step1:构建历史数据库,对数据进行补充,筛选,清洗,建图。
[0104]
step2:收集待预测的pod控制器的资源使用量。
[0105]
step3:根据欧氏距离的计算方法,计算待预测pod控制器与历史数据n维数组间的距离。
[0106]
step4:圈定与待预测的样本距离最近的n个样本,需要不断对n值进行训练,根据近邻中的大部分样本所需要的资源配额来决定待分类样本所需要的资源配额;输出期望配额desiredbasicvalue。
[0107]
step5:增加由于时间影响的周期性变化因素系数s(t),节假期及特殊事件项因素系数h(t),以及其他影响因素系数ε(t),计算真实的目标配额。
[0108]
step6:判断目标配额配额是否合理,如果不合理需要调整先关系数,重新进行上述步骤。
[0109]
混合扩缩容控制器流程
[0110]
图6混合扩缩容控制器流程图。
[0111]
步骤:
[0112]
step1:计算目标配额和当前配额的比率,判断比例是否≈1,≈1则保持不变,否则需要进行扩缩容。
[0113]
step2:计算待调整配额adjustvalue。
[0114]
step3:判断集群节点剩余资源是否可调度adjustvalue,当集群节点剩余资源不可调度时进入步骤4,当集群节点剩余资源可调度时进入步骤5。
[0115]
step4:尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,重新进入步骤2计算配额。
[0116]
step5:根据adjustvalue查看pod控制器中是否有已经存在该规格的副本集,存在
则直接对副本集进行水平扩缩容,不存在则在pod控制器中创建对应规格的副本集更新或者创建对应控制器的副本集。
[0117]
step6:将事件在需要进行操作的时间戳通知给pod控制器,事件中包含:预计调整时间戳,调整动作,目标要调整的资源量。
[0118]
本技术相对现有技术而言,所具有的优点和效果:
[0119]
1.一个pod控制器下支持多种配额的副本集,在满足pod需求的基础上,通过pod的规格差异,高效利用资源。
[0120]
2.采用水平和垂直扩缩容结合的模式,精准控制扩缩容后的配额总量,减少抖动和波动,既可以垂直扩缩容,又可以保证有部分pod没有重建。
[0121]
3.基于机器学习算法对未来资源需求配额进行预测,降低滞后率。
[0122]
见技术方案章节中附图。
[0123]
如图是本设计所述的基于机器学习预测算法进行混合扩缩容的整体架构图,基于kubernetes已有的水平扩缩容和垂直扩缩容,新增混合扩缩容控制器,增加机器学习预测算法,预测pod控制器未来所需的配额,减少了滞后率。pod控制器中增加不同配额的副本数配置,即一个pod控制器下有多个副本组,每个副本组管理一种配额,增加了精准率。图中各组件作用如下:
[0124]
主要使用k8s目前支持的监控组件查询资源使用情况,包括资源使用的核心指标和资源使用的自定义指标。核心指标主要从kubelet等组件获取数据,由metrics-server提供给机器学习预测算法使用。自定义指标主要通过prometheus adapter提供的api,获取prometheus采集到的指标,采集到的数据作为机器学习预测算法的输入。
[0125]
机器学习预测算法定时通过metrics-api收集监控数据,并且保留在数据库中。通过对历史数据的清洗,分析,处理,负责预测pod控制器在未来一段时间的资源目标配额,将数据输入到混合扩缩容控制器。主要考虑综合监测数据如何进行精准预测的相关策略。
[0126]
本设计informer沿用原生k8s的informer设计,依赖list&watch机制,在本地维护了一份所关心的api对象的缓存;及时获知这些对象的状态变化,然后更新本地缓存,并将数据做一定处理后放入cache。同时,其采集到的数据也将作为混合扩缩容控制器和pod控制器的输入。
[0127]
cache用于存放混合扩缩容控制器和pod控制器间的信息缓存,调度的中间结果将暂存于cache。
[0128]
混合扩缩容控制器通过informer获取当前的混合扩缩容对象,通过获取机器学习预测出来的数据和当前对象的状态,混合扩缩容控制器计算目标配额与当前配额的不同,通过一定的算法,计算pod控制器应该采取哪种扩缩容策略,策略由pod控制器监听。
[0129]
通过informer list/watch资源的创建/更新/删除事件,根据informer中获取到的应该进行何种混合扩缩容动作,负责根据策略进行pod控制器的调整并把操作下发给副本集。pod控制器中支持大于一种的配额的需求,每种配额由一个副本集进行控制;判断如果在pod控制器中已经有需要扩缩容的副本集,则直接对副本集进行水平扩缩容,如果pod控制器中没有需要扩缩容的配额副本集,则新建副本集。
[0130]
在一些实施例中,该基于机器学习的容器混合扩缩容方法可应用于基于机器学习的容器混合扩缩容系统,所述基于机器学习的容器混合扩缩容系统包括监控模块、机器学
习预测模块、混合缩容控制器、pod控制器、缓存器和informer模块。其中,将监控模块用于监控组件查询资源使用情况,可选的,主要使用k8s目前支持的监控组件查询资源使用情况,包括资源使用的核心指标和资源使用的自定义指标。核心指标主要从kubelet等组件获取数据,由metrics-server提供给机器学习预测算法使用。自定义指标主要通过prometheus adapter提供的api,获取prometheus采集到的指标,采集到的数据作为机器学习预测算法的输入;机器学习预测模块用于预测pod控制器未来所需的配额,可选的,机器学习预测模块定时通过metrics-api收集监控数据,并且保留在数据库中。通过对历史数据的清洗,分析,处理,负责预测pod控制器在未来一段时间的资源目标配额,将数据输入到混合扩缩容控制器。主要考虑综合监测数据如何进行精准预测的相关策略;混合缩容控制器用于计算目标配额与当前配额的不同,可选的,混合扩缩容控制器通过informer获取当前的混合扩缩容对象,通过获取机器学习模块预测出来的数据和当前对象的状态,通过一定的算法,计算pod控制器应该采取哪种扩缩容策略,策略由pod控制器监听;pod控制器用于对informer list/watch资源的创建/更新/删除事件,可选的,pod控制器根据informer中获取到的应该进行何种混合扩缩容动作,负责根据策略进行pod控制器的调整并把操作下发给副本集。pod控制器中支持大于一种的配额的需求,每种配额由一个副本集进行控制;判断如果在pod控制器中已经有需要扩缩容的副本集,则直接对副本集进行水平扩缩容,如果pod控制器中没有需要扩缩容的配额副本集,则新建副本集;缓存器用于存放混合扩缩容控制器和pod控制器间的信息缓存,调度的中间结果将暂存于cache;informer模块用于获知这些对象的状态变化,然后更新本地缓存,并将数据做一定处理后放入cache。同时,其采集到的数据也将作为混合扩缩容控制器和pod控制器的输入。
[0131]
以上实施方式仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施方式对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施方式技术方案的精神和范围,均应包含在本技术的保护范围之内。
技术特征:
1.一种基于机器学习的容器混合扩缩容方法,其特征在于,包括以下步骤:metrics server通过kubelet收集系统资源使用状态数据,包括pod的cpu,内存,gpu,磁盘io使用情况;prometheusadaptar通过prometheus收集自定义收集的数据类型,包括:每秒请求数,并发数,pps,延迟,接口响应成功率;每个pod控制器收集实时数据组成一个n维数组,n维数组中的数据为n个影响资源使用量的因素,n维数组的内容为:[pod名称,时间戳,pod的cpu使用量,pod的内存使用量,pod的gpu使用量,pod的磁盘io使用量,pod的每秒请求数,pod的并发数,pod的pps,pod的延迟,pod的接口响应成功率],按时间排序,将数据存储到数据库中;基于历史数据,在数据表中增加两列,分别为pod控制器中设置的cpu配额和pod控制器中设置的内存配额,记录在当前规模下的配额设定。2.根据权利要求1所述的方法,其特征在于,还包括:在数据表中增加人工标签列,0代表异常,1代表正常,2代表无法判断,如果有错误的数据,通过标记可去除数据,剔除掉数据的异常值。3.根据权利要求1所述的方法,其特征在于,还包括:根据历史数据加载数据并绘制图表,修补失真数据,提高数据质量;综合历史同时期的数据,当天相邻数据,进行修补;收集待预测的pod控制器的资源使用量,机器学习预测算法计算出未来x小时pod控制器的期望配额,限制期望配额的最小配额mindesiredvalue和最大配额maxdesiredvalue,maxdesiredvalue根据当前集群资源剩余量变化,防止预测出的数据过小或过大影响其他组件运行。4.根据权利要求3所述的方法,其特征在于,还包括:收集被预测的pod控制器的n维数组x与历史数据中n维数组y的距离,根据欧氏距离的计算方法,计算历史数据n维数组间的距离:其中,i=1至n,xi为数组x的元素,yi为数组y的元素。5.根据权利要求4所述的方法,其特征在于,还包括:圈定与待预测的样本距离最近的m个样本,作为待预测样本的近邻;需要不断对m值进行训练,重复直至取得误差率最小的m值;根据近邻中的大部分样本所需要的资源配额来决定待分类样本所需要的资源配额;输出期望配额desiredbasicvalue。6.根据权利要求5所述的方法,其特征在于,还包括:基于基本的期望配额desiredbasicvalue,增加由于时间影响的周期性变化因素系数s(t),节假期及特殊事件项因素系数h(t),以及其他影响因素系数ε(t),计算真实的目标配额:desiredvalue=desiredbasicvalue*s(t)*h(t)*ε(t);其中,t为时间。7.根据权利要求6所述的方法,其特征在于,还包括:计算目标指标和实际指标的差距,用混合扩缩容控制器决定策略。8.根据权利要求7所述的方法,其特征在于,还包括:计算当前配额currentmetricvalue与真实的目标配额desiredvalue的比率:ratio=
currentmetricvalue/desiredvalue;当ratio≈1时保持不变,否则当currentmetricvalue<desiredvalue时为扩容,当currentmetricvalue>desiredvalue时为缩容。9.根据权利要求8所述的方法,其特征在于,还包括,计算待调整配额:adjustvalue=desiredvalue-currentmetricvalue;当adjustvalue<mindesiredvalue时,adjustvalue=mindesiredvalue;当adjustvalue>maxdesiredvalue时,adjustvalue=maxdesiredvalue;当mindesiredvalue<adjustvalue<maxdesiredvalue,如果集群中节点的剩余资源无法调度adjustvalue,尝试将adjustvalue按集群可调度节点的剩余资源分割成x个配额,总额为adjustvalue;当mindesiredvalue<adjustvalue<maxdesiredvalue,如果集群可以成功调度配额adjustvalue,根据adjustvalue查看pod控制器中是否有已经存在该规格的副本集,存在则直接对副本集进行水平扩缩容,不存在则在pod控制器中创建对应规格的副本集更新或者创建对应控制器的副本集,将事件在需要进行操作的时间戳通知给pod控制器,事件中包含:预计调整时间戳,调整动作,目标要调整的资源量。10.一种基于机器学习的容器混合扩缩容系统,其特征在于,包括:电子设备,所述电子设备用于执行如权利要求1~9任一项所述的方法。
技术总结
本申请提供一种基于机器学习的容器混合扩缩容方法及系统,方法包括以下步骤:metrics server通过kubelet收集系统资源使用状态数据,包括pod的CPU,内存,GPU,磁盘IO使用情况;PrometheusAdaptar通过Prometheus收集自定义收集的数据类型,包括:每秒请求数,并发数,PPS,延迟,接口响应成功率;每个pod控制器收集实时数据组成一个n维数组,n维数组中的数据为n个影响资源使用量的因素,n维数组的内容为:[pod名称,时间戳,pod的CPU使用量,pod的内存使用量,pod的GPU使用量,pod的磁盘IO使用量,pod的每秒请求数,pod的并发数,pod的PPS,pod的延迟,pod的接口响应成功率],按时间排序,将数据存储到数据库中;分别为pod控制器中设置的CPU配额和pod控制器中设置的内存配额,记录在当前规模下的配额设定。在当前规模下的配额设定。在当前规模下的配额设定。
技术研发人员:景宇 闫海娜 刘磊 杨帆 甄富 鞠娜
受保护的技术使用者:天翼云科技有限公司
技术研发日:2022.12.06
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
