基于遗传算法的Pod调度方法及系统与流程

文档序号:31726447发布日期:2022-10-05 00:42阅读:119来源:国知局
基于遗传算法的Pod调度方法及系统与流程
基于遗传算法的pod调度方法及系统
技术领域
1.本发明涉及kubernetes集群调度技术领域,具体地说是基于遗传算法的pod调度方法及系统。


背景技术:

2.kubernetes作为云计算的管理平台具有重大意义,随着云计算的不断发展,kubernetes已经成为了云原生的基石。kubernetes已经成为了大多数互联网公司进行简化运维的利器,是云计算服务的重要支撑技术。目前,kubernetes中对pod的调度分为两步来完成的,第一步是过滤,第二步是打分。对于过滤:选择满足预设条件的node,比如cpu,内存资源是否满足,标签是否符合等,将不符合条件的node剔除掉。对于打分:是对通过过滤的node进行打分,最后选择分数最高node,如果最高分有相同的,则在最高分的node中随机选取一个。kubernetes本身的评分算法如下:
3.score=(cpu((capacity-sum(requested))10/capacity)+
4.memory((capacity-sum(requested))10/capacity))/2
5.score表示评分的结果,cpu表示cpu剩余总量,capacity表示对应资源的初始最大值,sum(requested)表示对应资源当前已经分配的资源总和。
6.采用默认的调度算法进行pod调度时,主要的考虑因素是cpu和内存两者总和值的大小,没有考虑一个节点中,可能出现cpu剩余量很少,但是内存剩余很多,或者cpu剩余量较多,但是内存剩余很少的情况,导致资源的浪费。
7.如何克服对pod的调度时、由于node中cpu和内存比例失衡造成的资源浪费,是需要解决的技术问题。


技术实现要素:

8.本发明的技术任务是针对以上不足,提供基于遗传算法的pod调度方法及系统,来解决如何克服对pod的调度时、由于node中cpu和内存比例失衡造成的资源浪费的技术问题。
9.第一方面,本发明的一种基于遗传算法的pod调度算法,基于遗传算法求解最优解的思想,在kubernetes的pod调度中,选出cpu和内存之间比例值满足理想值的node作为最优node,所述方法包括如下步骤:
10.确定目标pod的cpu需求量和内存需求量;
11.基于kubernetes自身的过滤方法对所有node进行过滤,基于所有符合要求的node构建可调度node集合;
12.对于可调度node集合中每个node,基于所述node当前cpu剩余量与目标pod的cpu需求量之间的差值以及所述node当前内存剩余量与目标pod的内存需求量之间的差值,计算所述node当前cpu和内存的比例值,记为所述node的比例值;
13.将目标pod的cpu需求量和内存需求量之间的比值作为理想值,基于可调度node集
合中每个node对应的比例值,通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值,将所述最优比例值对应的node作为最优node。
14.作为优选,通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值,包括如下步骤:
15.s100、对于可调度node集合中的n个node,按照node当前cpu剩余量对所有node进行升序排序,得到一个数组;
16.s200、对于可调度node集合每个node,采用二进制编码方式进行染色体编码;
17.s300、对于可调度node集合中每个node,计算所述node的适应度值,所述适应度值表示所述node被选取的可能性大小;
18.s400、对于可调度node集合中的每个node,基于其染色体编码和适应度值创建对应的个体;
19.s500、基于步骤s400创建p个体,并基于所述p个个体创建种群;
20.s600、对于所述种群中每个个体,计算所述个体的适应度值,并选取适应度值最大的个体作为所述种群中最优个体;
21.所述个体的适应度值为node中cpu剩余量和内存剩余量的比值,所述剩余量为所述node的当前资源剩余量与目标pod的资源需求量之间的插值,所述资源对应cpu和内存;
22.s700、通过轮盘赌的方式计算每个个体的选择算子,所述选择算子表示个体被选为适应度值最大个体的概率,个体ni的选择算子fi的计算公式为:
[0023][0024]
所述fi取值范围为[0,1],种群中全部个体的被选择概率总和为1;
[0025]
其中,p表示种群中个体的数量,fi表示个体的适应度值;
[0026]
s800、基于每个个体的选择算子,计算每个个体的累计概率qi;
[0027][0028]
s900、在[0,1]区间生成一个随机数x作为轮盘选择的指针,如果
[0029]qi-1
《x≤qi[0030]
序号i对用的个体ni被选择为父代;
[0031]
sa00、重复执行步骤s900两次,得到两个父代,分别为第一父代和第二父代;
[0032]
sb00、对所述第一父代和第二父代进行交叉,得到子代;
[0033]
sc00、重复执行步骤s900至步骤sb00共p次,得到p个作为子代的个体;
[0034]
sd00、对于所述p新生成的个体,随机选择v个体进行变异;
[0035]
v=v
×
p
[0036]
其中,v表示产生变异的个体数量,v表示变异的概率,p表示种群的数量;
[0037]
se00、重复执行步骤sa00-sd00创建下一代种群,计算每个个体的适应度值,如果子代个体的适应度值fi大于最优个体n
best
的适应度值,则将这个子代作为最优个体n
best

[0038]
sf00、重复执行步骤s700值步骤sd00,迭代g次直至生成pg代种群,从所述pg代种群中选出最优个体,所述最优个体n
best
对应的node即为目标pod的最优调度节点。
[0039]
作为优选,染色体长度的计算公式为:
[0040]2x
《n≤2y[0041]
y表示染色体的长度,则创建一个长度为y的数组,数组中的值为1或者0,序号为i的node的染色体用dnai表示,染色体的解码如下:
[0042][0043]
表示这个染色体的个体对应的是切片nodeslice中下标为i位置的node节点ni。
[0044]
作为优选,编号为i的node的适应度值fi计算公式为:
[0045][0046]ri
表示编号为i的node在调度pod后的cpu和内存的比例,z表示目标node中cpu和内存的比例值,m表示当fi表示编号为i的node的适应度值;
[0047][0048]ci
=capacitycpu
i-sum(requestedcpu)
i-requestcpu
[0049]
mi=capacitymemory
i-sum(requestedmemory)
i-requestmemory
[0050]
其中,ci表示序号为i的node当前cpu剩余量,mi表示序号为i的node当前内存的剩余量,其中capacitycpui表示序号为i的node最初最大的cpu量,sum(requestedcpu)i表示当前cpu已经分配的总量,requestcpu表示目标pod的cpu需求量,capacitymemoryi表示序号为i的node最初最大的内存量,sum(requestedmemory)i表示当前内存已经分配的总量,requestmemory表目标pod的内存需求量。
[0051]
作为优选,通过匹配交叉算法对第一父代和第二父代进行交叉,包括如下步骤:
[0052]
第一父代和第二父代内随机生成两个交叉点,两个交叉点内基因数相等,分为作为交叉操作的第一基因串和第二基因串;
[0053]
将第二基因串复制到第一父代中相应位置,生成第一子代的染色体,将第二基因串复制到第二父代中的相应位置,生成第二子代的染色体。
[0054]
第二方面,本发明的一种基于遗传算法的pod调度系统,用于执行如第一方面任一项所述的一种基于遗传算法的pod调度方法选择pod的调度节点,所述系统包括:
[0055]
目标pod确认模块,所述目标pod确认模块用于确定目标pod的cpu需求量和内存需求量;
[0056]
可调度node集合构建模块,所述可调度node集合构建模块用于基于kubernetes自身的过滤方法对所有node进行过滤,基于所有符合要求的node构建可调度node集合;
[0057]
比例值计算模块,对于可调度node集合中每个node,所述比例值计算模块用于基于所述node当前cpu剩余量与目标pod的cpu需求量之间的差值以及所述node当前内存剩余量与目标pod的内存需求量之间的差值,计算所述node当前cpu和内存的比例值,记为所述node的比例值;
[0058]
优化模块,所述优化模块用于将目标pod的cpu需求量和内存需求量之间的比值作
为理想值,基于可调度node集合中每个node对应的比例值,通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值,将所述最优比例值对应的node作为最优node。
[0059]
作为优选,所述优化模块用于通过如下步骤基于遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值:
[0060]
s100、对于可调度node集合中的n个node,按照node当前cpu剩余量对所有node进行升序排序,得到一个数组;
[0061]
s200、对于可调度node集合每个node,采用二进制编码方式进行染色体编码;
[0062]
s300、对于可调度node集合中每个node,计算所述node的适应度值,所述适应度值表示所述node被选取的可能性大小;
[0063]
s400、对于可调度node集合中的每个node,基于其染色体编码和适应度值创建对应的个体;
[0064]
s500、基于步骤s400创建p个体,并基于所述p个个体创建种群;
[0065]
s600、对于所述种群中每个个体,计算所述个体的适应度值,并选取适应度值最大的个体作为所述种群中最优个体;
[0066]
所述个体的适应度值为node中cpu剩余量和内存剩余量的比值,所述剩余量为所述node的当前资源剩余量与目标pod的资源需求量之间的插值,所述资源对应cpu和内存;
[0067]
s700、通过轮盘赌的方式计算每个个体的选择算子,所述选择算子表示个体被选为适应度值最大个体的概率,个体ni的选择算子fi的计算公式为:
[0068][0069]
所述fi取值范围为[0,1],种群中全部个体的被选择概率总和为1;
[0070]
其中,p表示种群中个体的数量,fi表示个体的适应度值;
[0071]
s800、基于每个个体的选择算子,计算每个个体的累计概率qi;
[0072][0073]
s900、在[0,1]区间生成一个随机数x作为轮盘选择的指针,如果
[0074]qi-1
《x≤qi[0075]
序号i对用的个体ni被选择为父代;
[0076]
sa00、重复执行步骤s900两次,得到两个父代,分别为第一父代和第二父代;
[0077]
sb00、对所述第一父代和第二父代进行交叉,得到子代;
[0078]
sc00、重复执行步骤s900至步骤sb00共p次,得到p个作为子代的个体;
[0079]
sd00、对于所述p新生成的个体,随机选择v个体进行变异;
[0080]
v=v
×
p
[0081]
其中,v表示产生变异的个体数量,v表示变异的概率,p表示种群的数量;
[0082]
se00、重复执行步骤sa00-sd00创建下一代种群,计算每个个体的适应度值,如果子代个体的适应度值fi大于最优个体n
best
的适应度值,则将这个子代作为最优个体n
best

[0083]
sf00、重复执行步骤s700值步骤sd00,迭代g次直至生成pg代种群,从所述pg代种群中选出最优个体,所述最优个体n
best
对应的node即为目标pod的最优调度节点。
[0084]
作为优选,染色体长度的计算公式为:
[0085]2x
《n≤2y[0086]
y表示染色体的长度,则创建一个长度为y的数组,数组中的值为1或者0,序号为i的node的染色体用dnai表示,染色体的解码如下:
[0087][0088]
表示这个染色体的个体对应的是切片nodeslice中下标为i位置的node节点ni。
[0089]
作为优选,编号为i的node的适应度值fi计算公式为:
[0090][0091]ri
表示编号为i的node在调度pod后的cpu和内存的比例,z表示目标node中cpu和内存的比例值,m表示当fi表示编号为i的node的适应度值;
[0092][0093]ci
=capacitycpu
i-sum(requestedcpu)
i-requestcpu
[0094]
mi=capacitymemory
i-sum(requestedmemory)
i-requestmemory
[0095]
其中,ci表示序号为i的node当前cpu剩余量,mi表示序号为i的node当前内存的剩余量,其中capacitycpui表示序号为i的node最初最大的cpu量,sum(requestedcpu)i表示当前cpu已经分配的总量,requestcpu表示目标pod的cpu需求量,capacitymemoryi表示序号为i的node最初最大的内存量,sum(requestedmemory)i表示当前内存已经分配的总量,requestmemory表目标pod的内存需求量。
[0096]
作为优选,所述优化模块用于基于如下步骤通过匹配交叉算法对第一父代和第二父代进行交叉:
[0097]
第一父代和第二父代内随机生成两个交叉点,两个交叉点内基因数相等,分为作为交叉操作的第一基因串和第二基因串;
[0098]
将第二基因串复制到第一父代中相应位置,生成第一子代的染色体,将第二基因串复制到第二父代中的相应位置,生成第二子代的染色体。
[0099]
本发明的基于遗传算法的pod调度方法及系统具有以下优点:
[0100]
1、通过控制集群中每个node的cpu和内存比例,让node的cpu和内存都得到充分的利用,不会出现cpu还有较多的剩余但是内存已经基本用完,或者cpu已经基本用完,但是内存还有较多剩余的情况,让cpu和内存资源得到了充分的利用;
[0101]
2、基于遗传算法的思想找出最优的node,遗传算法有并行性和较好的全局搜索性,从而提高了效率和精确性。
附图说明
[0102]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些
实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0103]
下面结合附图对本发明进一步说明。
[0104]
图1为实施例1基于遗传算法的pod调度方法的流程框图;
[0105]
图2为实施例1基于遗传算法的pod调度方法的通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值的流程框图;
[0106]
图3为实施例1基于遗传算法的pod调度方法中匹配交叉原理框图;
[0107]
图4、图5和图6合并为实施例1基于遗传算法的pod调度方法与kubernetes自身调度方法效果对比示意图。
具体实施方式
[0108]
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
[0109]
需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例中的“多个”,是指两个或两个以上。
[0110]
本发明实施例提供基于遗传算法的pod调度方法及系统,用于解决如何克服对pod的调度时、由于node中cpu和内存比例失衡造成的资源浪费的技术问题。
[0111]
实施例1:
[0112]
本发明一种基于遗传算法的pod调度算法,其特征在于基于遗传算法求解最优解的思想,在kubernetes的pod调度中,选出cpu和内存之间比例值满足理想值的node作为最优node,所述方法包括如下步骤:
[0113]
l100、确定目标pod的cpu需求量和内存需求量;
[0114]
l200、基于kubernetes自身的过滤方法对所有node进行过滤,基于所有符合要求的node构建可调度node集合;
[0115]
l300、对于可调度node集合中每个node,基于所述node当前cpu剩余量与目标pod的cpu需求量之间的差值以及所述node当前内存剩余量与目标pod的内存需求量之间的差值,计算所述node当前cpu和内存的比例值,记为所述node的比例值;
[0116]
l400、将目标pod的cpu需求量和内存需求量之间的比值作为理想值,基于可调度node集合中每个node对应的比例值,通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值,将所述最优比例值对应的node作为最优node。
[0117]
步骤l300中计算可被调度node集合中node当前的cpu剩余量减去目标pod的cpu的需求量除以内存剩余量减去目标pod内存的需求量,得到目标pod被调度到该node后,该node剩余的cpu和内存的比例值。
[0118]ci
=capacitycpu
i-sum(requestedcpu)
i-requestcpu;
[0119]
mi=capacitymemory
i-sum(requestedmemory)
i-requestmemory;
[0120]
[0121]
其中,ci表示序号为i的node当前cpu剩余量,mi表示序号为i的node当前内存的剩余量,其中capacitycpui表示序号为i的node最初最大的cpu量,sum(requestedcpu)i表示当前cpu已经分配的总量,requestcpu表示目标pod的cpu需求量,capacitymemoryi表示序号为i的node最初最大的内存量,sum(requestedmemory)i表示当前内存已经分配的总量,requestmemory表目标pod的内存需求量,ri表示cpu与内存的比例值。
[0122]
步骤l400利用遗传算法求最优解的思想,选出可调度集合中node求得的比例值与本文中给出的理想比例值最接近的比例值,选出的比例值对应的node,即为最优的node.
[0123]
作为具体实施,利用遗传算法的思想求最优解具体的步骤如下。
[0124]
s100、对于可调度node集合中的n个node,按照node当前cpu剩余量对所有node进行升序排序,得到一个数组;
[0125]
s200、染色体编码,对于可调度node集合每个node,采用二进制编码方式进行染色体编码;
[0126]
本实施例遗传算法采用二进制编码,通过kubernetes的本身的过滤算法得到node数目为n,通过下面公式计算染色体的长度:
[0127]2x
《n≤2y[0128]
y表示染色体的长度,则创建一个长度为y的数组,数组中的值为1或者0,用序号为i的node的染色体用dnai表示;
[0129]
染色体的解码如下:
[0130][0131]
表示这个染色体的个体对应的是切片nodeslice中下标为i位置的node节点ni。种群中的个体和node一一对应;
[0132]
s300、求解适应度值。适应度表示每个node被选取的可能性的大小,适应度越大,表示被选择的概率越大,序号为i的node的适应度值用fi表示为:
[0133][0134]ri
表示编号为i的node在调度pod后的cpu和内存的比例,z表示目标node中cpu和内存的比例值,m表示当fi表示编号为i的node的适应度值;
[0135]
s400、创建个体,基于其染色体编码和适应度值创建对应的个体,种群中的个体和node一一对应;
[0136]
对于序号为i的nodeni,通过步骤s200得到染色体dnai和步骤s300得到的适应度fi,创建个体ni;
[0137]
s500、创建初始种群,重复执行p次步骤s500创建种群;
[0138]
对于种群pk,其中p表示的是种群中个体的数量,k表示种群进化的代数,初始种群的代数k值为1,种群p1中有p个随机生成的个体;
[0139]
s600、选择最优个体,对于所述种群中每个个体,计算所述个体的适应度值,并选取适应度值最大的个体作为所述种群中最优个体n
best

[0140]
个体的适应度值为node中cpu剩余量和内存剩余量的比值,所述剩余量为所述node的当前资源剩余量与目标pod的资源需求量之间的插值,所述资源对应cpu和内存;
[0141]
s700、计算选择算子,选择算子的目的是为了选择适应度大的个体基因,从父辈群体中选择适应度大的个体进行繁衍(交叉)得到下一代个体,提高遗传算法的收敛速度;
[0142]
本文采用轮盘赌的方式进行个体的选取,轮盘赌的含义为种群中的个体ni的适应度值除以种群中所有个体的适应度值的总和,得到一个0到1的概率fi,全部个体的被选择的概率总和为1。
[0143][0144]fi
表示个体的选择算子,p表示种群中个体的数量;
[0145]
步骤s08:计算每个个体的累计概率为qi:
[0146][0147]
各个个体被选择概率的总概率和为1;
[0148]
s900、在[0,1]区间生成一个随机数x作为轮盘选择的指针,如果
[0149]qi-1
《x≤qi[0150]
序号i对用的个体ni被选择为父代;
[0151]
例如:n1的概率f1为0.1,n2的概率f2为0.2,则n1的累计概率q1为0.1,n1的累计概率q2为0.3,
[0152]
q1=f1[0153]
q2=f1+f2[0154]
如果随机数x为0.15,则个体n2就被选择为父代;
[0155]
sa00、重复执行步骤s900两次,得到两个父代,分别为第一父代和第二父代;
[0156]
sb00、:父代染色体进行交叉,生成子代;
[0157]
交叉算子是遗传算法最重要的过程之一,个体的染色体通过交叉繁衍出下一代,通过选择操作和适应度函数能够保证父父辈的优秀的基因,然后通过交叉产生子代丰富了种群的多样性,交叉的方式有多种,本实施例采用部分匹配交叉算子,如图3所示;
[0158]
sc00、重复执行步骤s900至步骤sb00共p次,得到p个作为子代的个体;
[0159]
sd00、对于所述p新生成的个体,随机选择v个体进行变异;
[0160]
v=v
×
p
[0161]
其中,v表示产生变异的个体数量,v表示变异的概率,p表示种群的数量;
[0162]
se00、重复执行步骤sa00-sd00创建下一代种群,计算每个个体的适应度值,如果子代个体的适应度值fi大于最优个体n
best
的适应度值,则将这个子代作为最优个体n
best

[0163]
sf00、重复执行步骤s700值步骤sd00,迭代g次直至生成pg代种群,从所述pg代种群中选出最优个体,所述最优个体n
best
对应的node即为目标pod的最优调度节点。
[0164]
将选出的最佳个体,通过解码找到对应的node,该node即为目标pod的最优调度节点。
[0165]
作为具体实施,sb00通过匹配交叉算法对第一父代和第二父代进行交叉,包括如下步骤:
[0166]
(1)第一父代和第二父代内随机生成两个交叉点,两个交叉点内基因数相等,分为作为交叉操作的第一基因串和第二基因串;
[0167]
(2)将第二基因串复制到第一父代中相应位置,生成第一子代的染色体,将第二基因串复制到第二父代中的相应位置,生成第二子代的染色体。
[0168]
本实施例的方法通过控制集群中每个node的cpu和内存比例,让node的cpu和内存都得到充分的利用,不会出现cpu还有较多的剩余但是内存已经基本用完,或者cpu已经基本用完,但是内存还有较多剩余的情况,让cpu和内存资源得到了充分的利用,基于遗传算法的思想找出最优的node,遗传算法有并行性和较好的全局搜索性。
[0169]
如对比图图4-图6所示,假设node中cpu和node的最佳比例0.2。cpu的单位为c,内存的单位为g,假设有三个node通过了kubernetes本身的过滤算法,每个node的cpu初始值都为12c,内存的初始值都为60g,每node当前的资源剩余量和当前剩余cpu与内存的比例为r,f表示遗传算法中每个node的适应度值,score表示在kubernetes本身的算法中,每个node的评分,如图1所示。通过图可以看出,node1的适应度值最大为100,所以通过遗传算法求和理想比例最接近的node为node1,目标pod调度到node1上,在目标pod调度到node1之后,node1中cpu的剩余量为2c,内存剩余量为10.5g,cpu和内存的剩余比例为0.19。通过kubernetes本身的评分函数,node3的评分最高为3.75,目标pod调度到node3中,在目标pod调度到node3之后,node3中cpu的剩余量为1c,内存的剩余量为24g,剩余cpu和内存的比例为0.042。通过上述分析,当使用kubernetes默认的评分函数进行评分,将目标pod调度到node3之后,node3中cpu剩余量仅为1c,但内存剩余量仍有24g,出现了cpu资源缺少,但内存仍有很多剩余的情况,导致资源浪费的情况。使用给出一个理想比例,通过遗传算法选出目标pod调度到node后,node剩余cpu和内存的比值与理想比值最接近的方法,保证了node中cpu和内存之间的比例尽可能接近理想比例,避免出现cpu和内存中某个资源剩余量很少,但另外一个资源剩余量很多的情况。
[0170]
实施例2:
[0171]
本发明一种基于遗传算法的pod调度系统,包括目标pod确认模块、可调度node集合构建模块、比例值计算模块以及优化模块,该系统可执行实施例1公开的一种基于遗传算法的pod调度方法选择pod的调度节点。
[0172]
目标pod确认模块用于确定目标pod的cpu需求量和内存需求量。
[0173]
可调度node集合构建模块用于基于kubernetes自身的过滤方法对所有node进行过滤,基于所有符合要求的node构建可调度node集合。
[0174]
对于可调度node集合中每个node,所述比例值计算模块用于基于所述node当前cpu剩余量与目标pod的cpu需求量之间的差值以及所述node当前内存剩余量与目标pod的内存需求量之间的差值,计算所述node当前cpu和内存的比例值,记为所述node的比例值。
[0175]
该比例值计算模块计算可被调度node集合中node当前的cpu剩余量减去目标pod的cpu的需求量除以内存剩余量减去目标pod内存的需求量,得到目标pod被调度到该node后,该node剩余的cpu和内存的比例值。
[0176]ci
=capacitycpu
i-sum(requestedcpu)
i-requestcpu;
[0177]
mi=capacitymemory
i-sum(requestedmemory)
i-requestmemory;
[0178][0179]
其中,ci表示序号为i的node当前cpu剩余量,mi表示序号为i的node当前内存的剩余量,其中capacitycpui表示序号为i的node最初最大的cpu量,sum(requestedcpu)i表示当前cpu已经分配的总量,requestcpu表示目标pod的cpu需求量,capacitymemoryi表示序号为i的node最初最大的内存量,sum(requestedmemory)i表示当前内存已经分配的总量,requestmemory表目标pod的内存需求量,ri表示cpu与内存的比例值。
[0180]
优化模块用于将目标pod的cpu需求量和内存需求量之间的比值作为理想值,基于可调度node集合中每个node对应的比例值,通过遗传算法求解最优解的思想,选出与理想值最接近的比例值作为最优比例值,将所述最优比例值对应的node作为最优node。
[0181]
作为具体实施,该优化模块通过如下步骤利用遗传算法的思想求最优解:
[0182]
s100、对于可调度node集合中的n个node,按照node当前cpu剩余量对所有node进行升序排序,得到一个数组;
[0183]
s200、染色体编码,对于可调度node集合每个node,采用二进制编码方式进行染色体编码;
[0184]
本实施例遗传算法采用二进制编码,通过kubernetes的本身的过滤算法得到node数目为n,通过下面公式计算染色体的长度:
[0185]2x
《n≤2y[0186]
y表示染色体的长度,则创建一个长度为y的数组,数组中的值为1或者0,用序号为i的node的染色体用dnai表示;
[0187]
染色体的解码如下:
[0188][0189]
表示这个染色体的个体对应的是切片nodeslice中下标为i位置的node节点ni。种群中的个体和node一一对应;
[0190]
s300、求解适应度值。适应度表示每个node被选取的可能性的大小,适应度越大,表示被选择的概率越大,序号为i的node的适应度值用fi表示为:
[0191][0192]ri
表示编号为i的node在调度pod后的cpu和内存的比例,z表示目标node中cpu和内存的比例值,m表示当fi表示编号为i的node的适应度值;
[0193]
s400、创建个体,基于其染色体编码和适应度值创建对应的个体,种群中的个体和node一一对应;
[0194]
对于序号为i的nodeni,通过步骤s200得到染色体dnai和步骤s300得到的适应度fi,创建个体ni;
[0195]
s500、创建初始种群,重复执行p次步骤s500创建种群;
[0196]
对于种群pk,其中p表示的是种群中个体的数量,k表示种群进化的代数,初始种群
的代数k值为1,种群p1中有p个随机生成的个体;
[0197]
s600、选择最优个体,对于所述种群中每个个体,计算所述个体的适应度值,并选取适应度值最大的个体作为所述种群中最优个体n
best

[0198]
个体的适应度值为node中cpu剩余量和内存剩余量的比值,所述剩余量为所述node的当前资源剩余量与目标pod的资源需求量之间的插值,所述资源对应cpu和内存;
[0199]
s700、计算选择算子,选择算子的目的是为了选择适应度大的个体基因,从父辈群体中选择适应度大的个体进行繁衍(交叉)得到下一代个体,提高遗传算法的收敛速度;
[0200]
本文采用轮盘赌的方式进行个体的选取,轮盘赌的含义为种群中的个体ni的适应度值除以种群中所有个体的适应度值的总和,得到一个0到1的概率fi,全部个体的被选择的概率总和为1。
[0201][0202]fi
表示个体的选择算子,p表示种群中个体的数量;
[0203]
步骤s08:计算每个个体的累计概率为qi:
[0204][0205]
各个个体被选择概率的总概率和为1;
[0206]
s900、在[0,1]区间生成一个随机数x作为轮盘选择的指针,如果
[0207]qi-1
《x≤qi[0208]
序号i对用的个体ni被选择为父代;
[0209]
例如:n1的概率f1为0.1,n2的概率f2为0.2,则n1的累计概率q1为0.1,n1的累计概率q2为0.3,
[0210]
q1=f1[0211]
q2=f1+f2[0212]
如果随机数x为0.15,则个体n2就被选择为父代;
[0213]
sa00、重复执行步骤s900两次,得到两个父代,分别为第一父代和第二父代;
[0214]
sb00、:父代染色体进行交叉,生成子代;
[0215]
交叉算子是遗传算法最重要的过程之一,个体的染色体通过交叉繁衍出下一代,通过选择操作和适应度函数能够保证父父辈的优秀的基因,然后通过交叉产生子代丰富了种群的多样性,交叉的方式有多种,本实施例采用部分匹配交叉算子,如图3所示;
[0216]
sc00、重复执行步骤s900至步骤sb00共p次,得到p个作为子代的个体;
[0217]
sd00、对于所述p新生成的个体,随机选择v个体进行变异;
[0218]
v=v
×
p
[0219]
其中,v表示产生变异的个体数量,v表示变异的概率,p表示种群的数量;
[0220]
se00、重复执行步骤sa00-sd00创建下一代种群,计算每个个体的适应度值,如果子代个体的适应度值fi大于最优个体n
best
的适应度值,则将这个子代作为最优个体n
best

[0221]
sf00、重复执行步骤s700值步骤sd00,迭代g次直至生成pg代种群,从所述pg代种群中选出最优个体,所述最优个体n
best
对应的node即为目标pod的最优调度节点。
[0222]
将选出的最佳个体,通过解码找到对应的node,该node即为目标pod的最优调度节
点。
[0223]
作为具体实施,该模块通过如下步骤通过匹配交叉算法对第一父代和第二父代进行交叉:
[0224]
(1)第一父代和第二父代内随机生成两个交叉点,两个交叉点内基因数相等,分为作为交叉操作的第一基因串和第二基因串;
[0225]
(2)将第二基因串复制到第一父代中相应位置,生成第一子代的染色体,将第二基因串复制到第二父代中的相应位置,生成第二子代的染色体。
[0226]
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1