基于Kubernetes的物理资源调度方法及调度器与流程
未命名
10-09
阅读:64
评论:0

基于kubernetes的物理资源调度方法及调度器
技术领域
1.本发明涉及云计算技术领域,尤其涉及一种基于kubernetes的物理资源调度方法及调度器。
背景技术:
2.kubernetes是一种用于管理云平台中多个主机上容器化的应用的分布式系统引擎,其可以实现物理资源调度、自动化部署运营、服务发现、弹性伸缩、高可用等功能。
3.物理资源调度可以通过kubernetes调度器实现,其核心是如何从集群中选择合适的节点(node)分配给工作单元(pod)。当前,kubernetes调度器在实现物理资源调度时,通常需要包含node预选、node优选和node选定三个阶段。
4.node预选阶段主要是通过pod对应配置中的requests配置对node的硬件资源进行检查,也叫做静态资源检查。由于静态资源检查使用的requests配置主要是配置deployment、statusfulset等对象时对cpu、内存等资源进行预判和设置,而由于程序运行时的情况各异,这将导致requests配置与实际情况产生差异,即在实际的pod运行过程中,可能出现从requests配置来看,一个node有大量的物理资源可用,但实际上node上运行的pod已经占用了node上大量的物理资源,node上剩余的物理资源已经较为紧张。
5.进而,当kubernetes中出现大量的pod需要调度时,受基于requests配置的预选方式的影响,很容易出现这一类看似空闲的node被判断为优选结果的情况,从而导致较多的pod被调度到该node,使该node上的物理资源出现异常。严重时,甚至会出现node异常离线的问题,对kubernetes整体的运行安全产生不利的影响,降低了集群的稳定性。
技术实现要素:
6.本发明提供一种基于kubernetes的物理资源调度方法及调度器,用以解决现有技术中存在的缺陷。
7.本发明提供一种基于kubernetes的物理资源调度方法,包括:
8.获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;
9.遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;
10.基于各所述节点对应的评价信息,对所述待调度pod进行调度;
11.其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
12.根据本发明提供的一种基于kubernetes的物理资源调度方法,各所述训练样本对应的评价信息标签基于如下方法确定:
13.基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇;
14.基于所述多个聚类簇中的样本特征,对所述多个聚类簇中包含的训练样本进行集中标注,得到各所述训练样本对应的评价信息标签。
15.根据本发明提供的一种基于kubernetes的物理资源调度方法,所述基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇,包括:
16.遍历各所述训练样本,基于当前训练样本的预设邻域内存在的其他训练样本的数量,判断所述当前训练样本是否为核样本;若所述当前训练样本为核样本,则将所述当前训练样本存入核样本集;
17.遍历所述核样本集中的每一核样本,基于当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,确定所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本是否属于同一初始簇;
18.确定所述核样本集中各核样本对应的初始簇后,计算各所述核样本对应的初始簇之间的轮廓系数;
19.调整所述密度聚类算法中的预设参数,重复执行遍历动作,计算得到多个轮廓系数,并基于所述多个轮廓系数,确定所述多个聚类簇。
20.根据本发明提供的一种基于kubernetes的物理资源调度方法,当前训练样本的预设邻域内存在的其他训练样本,基于如下方法确定:
21.计算所述当前训练样本与各所述训练样本之间的hausdorff距离;
22.若所述hausdorff距离小于所述预设邻域的预设半径,则确定所述hausdorff距离对应的训练样本为所述当前训练样本的预设邻域内存在的其他训练样本。
23.根据本发明提供的一种基于kubernetes的物理资源调度方法,所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,基于如下方法确定:
24.遍历所述当前核样本的预设邻域内存在的每一其他训练样本,确定与当前其他训练样本邻近且处于所述当前核样本的预设邻域内的若干临近样本;
25.基于所述当前其他训练样本与所述若干临近样本之间的距离的均值、最大值以及最小值,确定所述当前其他训练样本与所述当前核样本之间的隶属度。
26.根据本发明提供的一种基于kubernetes的物理资源调度方法,所述调度评价模型基于如下方法训练得到:
27.基于所述训练样本以及所述训练样本集中各训练样本对应的评价信息标签,采用包含有正则项的损失函数,对多个分类决策树模型进行迭代训练,得到所述调度评价模型。
28.根据本发明提供的一种基于kubernetes的物理资源调度方法,所述迭代训练的过程中,当前轮次的迭代训练时采用的损失函数基于所述当前轮次的前一轮次的迭代训练时采用的损失函数的一阶梯度以及二阶梯度确定。
29.本发明还提供一种调度器,包括:
30.信息获取模块,用于获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;
31.评价模块,用于遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;
32.调度模块,用于基于各所述节点对应的评价信息,对所述待调度pod进行调度;
33.其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
34.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的基于kubernetes的物理资源调度方法。
35.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的基于kubernetes的物理资源调度方法。
36.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的基于kubernetes的物理资源调度方法。
37.本发明提供的基于kubernetes的物理资源调度方法及调度器,通过获取kubernetes集群中的调度信息,调度信息包括待调度pod的pod信息以及各节点的负载信息;然后遍历各节点,将待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到调度评价模型输出的待调度pod被调度至当前节点时的评价信息;最好基于各节点对应的评价信息,对待调度pod进行调度。该方法引入了当前节点的负载信息,避免了只考虑硬件资源而导致的节点上物理资源出现异常的情况,保证了kubernetes集群的安全运行,提高了kubernetes集群的稳定性。同时,该方法结合了调度评价模型,可以使对待调度pod的调度过程更加客观,调度效果更佳,调度效率更高,还可以实现物理资源的充分利用。
附图说明
38.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1是本发明提供的kubernetes的物理资源调度方法的流程示意图;
40.图2是本发明提供的调度器的结构示意图;
41.图3是本发明提供的电子设备的结构示意图。
具体实施方式
42.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.当前,kubernetes在进行物理资源调度时,主要包括kubernetes原生方案以及kubernetes原生方案的改进方案。
44.对于原生方案,主要是根据当前kubernetes集群中node的资源占用情况,经过一系列的甄选操作,得到一个可用于部署当前新pod的node,并将该新pod部署到该node上。
45.kubernetes为pod选择合适node的过程,包含node预选、node优选和node选定三个阶段。
46.node预选阶段是使用一系列的预选规则对每个node进行检查,将不符合条件的node过滤,从而完成node预选。该阶段的预选规则主要是一些强制性规则的校验,用来检查主机是否能够匹配pod所需要的资源,如果有一个规则没有任何主机能够满足,则该pod会被挂起,直到有主机能够满足。预选阶段规则校验涉及的资源基本为不可压缩资源(例如内存、硬盘空间),一般只要不退出pod就无法回收。
47.node优选阶段是对预选出的node进行优先级排序,以便选出最合适运行pod对象的node。node优选通过一系列的优先函数,对每个node的条件进行打分,然后通过预设置的权重得到某个node的最终得分。优选阶段主要涉及一些可压缩资源,例如cpu循环、disk i/o带宽等。这些资源可以被限制和回收,pod可以降低这些资源的使用量,从而不被杀掉。
48.node选择是在优先级排序结果中,选择优先级最高的node运行pod。当这类node多于1个时,则随机选择一个。调度过程将pod与选定的node的绑定之后,kubernetes会在node上启动pod。
49.kubernetes调度器在进行node初选时,对硬件资源的判断是基于静态资源来计算的。主要包括如下步骤:
50.1)获取各node上已经部署的pod信息。
51.2)获取已部署pod的静态配置信息。
52.3)根据pod相关配置中的requests信息计算该节点总资源的使用量。
53.4)根据各node剩余的资源量计算node的分值,剩余资源量较高的给予较高的评分。
54.5)根据上一步计算的node得分,以及其它各初选函数得到的分值进行初选。
55.这种方案在调度pod到node时,由于静态资源检查使用的requests配置与实际情况可能产生差异,因此,在运行了一段时间的集群中,可能会出现下面的情况:根据requests配置显示某一节点较为空闲。但实际上该节点上运行的pod占用了大量内存,该节点上运行的操作系统的内存资源较为紧张。
56.由于上述配置与实际运行情况的背离,当kubernetes中出现大量的pod需要调度时,受基于requests配置的预选方式影响,很容易出现这一类看似空闲的node被判断为优选结果的情况,从而导致较多的pod被调度到该node,使实际系统资源出现异常。严重时,甚至会出现node异常离线的问题,对kubernetes整体的运行安全产生不利的影响。
57.对于kubernetes原生方案的改进方案,主要是在kubernetes原生方案的基础上,增加了对node当前资源使用情况以及历史的pod调度信息的考虑。这种方案虽然从调度的当前时刻看,调度的pod所在node已经是当前最优。但是,由于应用运行对于资源的使用有不确定性,因此,调度的应用可能在后面发生资源使用的变化,导致集群出现稳定性异常。
58.为此,本发明实施例中提供了一种基于kubernetes的物理资源调度方法。
59.图1为本发明实施例中提供的一种基于kubernetes的物理资源调度方法的流程示意图,如图1所示,该方法包括:
60.s1,获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;
61.s2,遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时
的评价信息;
62.s3,基于各所述节点对应的评价信息,对所述待调度pod进行调度;
63.其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
64.具体地,本发明实施例中提供的基于kubernetes的物理资源调度方法,其执行主体为kubernetes调度器,该kubernetes调度器可以配置于服务器内,该服务器可以是本地服务器,也可以是云端服务器,本地服务器具体可以是计算机等,本发明实施例中对此不作具体限定。
65.首先执行步骤s1,获取kubernetes集群中的调度信息。kubernetes集群中包括多个pod以及多个节点,pod是kubernetes创建或部署的最小的基本单元,一个pod代表kubernetes集群上正在运行的一个工作单元,可以包括多个容器进程。节点是能够承载pod运行的主机,在每个节点上均有对应的操作系统。
66.调度信息可以包括待调度pod的pod信息以及各节点的负载信息,待调度pod是指需要确定将其调度至哪一个节点的pod,pod信息可以包括待调度pod的部署信息、运行相关信息以及待调度pod上运行的应用的历史运行时刻的资源使用信息等。各节点是指kubernetes集群中的节点,负载信息可以包括节点的名称、ip地址、cpu占用率、cpu核数、内存容量、磁盘占用率、磁盘容量以及i/o速率等信息。
67.获取kubernetes集群中的调度信息后,由于其中包含众多属性数据,而部分属性数据可能与后续评价信息的确定无关联甚至可能对后续评价信息的确定产生干扰,因此可以对调度信息进行预处理操作。预处理操作可以包括:重复数据删除操作、唯一值数据删除操作、数值型缺失值补插操作、类别型特征编码操作以及标准化操作。
68.1)重复数据删除操作。在调度信息采集的过程中,存在重复爬取的情况,需要删除这部分数据。通过识别发现多条重复值,则直接删除这部分重复数据。此外,调度信息中存在的如ip地址、节点名称等无用的数据,也可删除。
69.2)唯一值数据删除操作。由于唯一值数据通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些数据即可。
70.3)数值型缺失值插补操作。对于调度信息中的数值型数据,如果数值型数据的距离是可度量的,则使用该数值型数据的有效值的平均值来插补缺失的值;如果数值型数据的距离是不可度量的,则使用该数值型数据的有效值的众数来插补缺失的值。也可采用多重插补,多重插补认为待插补的值是随机的,实践上通常是估计出待插补的值,再加上不同的噪声,形成多组可选插补值,根据某种选择依据,选取最合适的插补值。
71.4)类别型特征编码操作。对于调度信息中的类别型特征,该类别型特征为无序类别变量,应将其转化为矩阵。对类别数量少于10,采用one-hot编码方式;对类别超过10的采用频率编码方式。
72.5)数值标准化。本发明实施例中,可以采用min-max标准化方式,将调度信息变换至[0,1]区间内。
[0073]
然后执行步骤s2,遍历kubernetes集群中各节点,以当前时刻遍历到的节点作为当前节点,将待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到调
度评价模型输出的待调度pod被调度至当前节点时的评价信息。该调度评价模型用于表征待调度pod被调度至当前节点的合适程度,得到的评价信息通常以分值的形式进行表示,分值越高则越合适,分值越低则越不合适。该调度评价模型可以是基于机器学习的决策树模型,也可以是机器学习的神经网络模型,此处不做具体限定。
[0074]
该调度评价模型可以通过训练样本集以及训练样本集中各训练样本对应的评价信息标签,结合损失函数对初始调度评价模型进行训练得到。采用的训练样本集中可以包括多个训练样本,每个训练样本均包括一个pod样本的pod信息以及该pod样本被调度到的节点样本的负载信息。每个训练样本均对应有一个评价信息标签,该评价信息标签用于表征该训练样本中pod样本被调度至当前节点的合适程度。该评价信息标签可以通过人工标注得到,也可以在人工标注时引入pod样本的调度规律等参考信息,此处不做具体限定。
[0075]
在利用训练样本集以及训练样本集中各训练样本对应的评价信息标签对初始调度评价模型进行训练之前,可以对各训练样本进行预处理操作。预处理操作也可以包括:重复数据删除操作、唯一值数据删除操作、数值型缺失值补插操作、类别型特征编码操作以及标准化操作。在对各训练样本进行标准化操作时,可以对各训练样本x1,x2…
xn进行线性变换,使线性变换结果yi分别落到[0,1]区间,转换函数如下:
[0076][0077]
其中,n为训练样本的数量。
[0078]
该步骤s2中,kubernetes集群中每个节点的负载信息与待调度pod的pod信息,均可以作为调度评价模型的输入,通过调度评价模型得到待调度pod被调度至kubernetes集群中每个节点的评价信息。
[0079]
最后执行步骤s3,通过各节点对应的评价信息,对待调度pod进行调度。此处,各节点对应的评价信息即为待调度pod被调度至各节点的评价信息,可以直接将待调度pod调度至评价信息最高的节点,即将待调度pod部署至评价信息最高的节点。
[0080]
本发明实施例中提供的基于kubernetes的物理资源调度方法首先获取kubernetes集群中的调度信息,调度信息包括待调度pod的pod信息以及各节点的负载信息;然后遍历各节点,将待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到调度评价模型输出的待调度pod被调度至当前节点时的评价信息;最好基于各节点对应的评价信息,对待调度pod进行调度。该方法引入了当前节点的负载信息,避免了只考虑硬件资源而导致的节点上物理资源出现异常的情况,保证了kubernetes集群的安全运行,提高了kubernetes集群的稳定性。同时,该方法结合了调度评价模型,可以使对待调度pod的调度过程更加客观,调度效果更佳,调度效率更高,还可以实现物理资源的充分利用。
[0081]
在调度过程中,通过使用调度评价模型对节点的适配性进行预测型评价,再根据评价信息排序,选择最合适的节点来部署pod。不但基于当前的系统情况来调度,还能预测未来该pod与节点的适配性,得到最佳的调度结果。
[0082]
在上述实施例的基础上,本发明实施例中提供的基于kubernetes的物理资源调度方法,各所述训练样本对应的评价信息标签基于如下方法确定:
[0083]
基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇;
[0084]
基于所述多个聚类簇中的样本特征,对所述多个聚类簇中包含的训练样本进行集中标注,得到各所述训练样本对应的评价信息标签。
[0085]
具体地,本发明实施例中,在确定各训练样本对应的评价信息标签时,可以先通过密度聚类算法,对各训练样本进行聚类分析,得到多个聚类簇。密度聚类算法是指基于密度的聚类算法,是以数据集在空间分布上的稠密度为依据进行聚类的算法。密度聚类算法可以包括具有噪声的基于密度的空间聚类应用(density-based spatial clustering of application with noise,dbscan)算法以及对点排序确定簇结构(ordering points to identify the clustering structure,optics)算法等。
[0086]
对各训练样本进行聚类分析的过程,即是对各训练样本进行分类的过程,属于同一类别的若干个训练样本构成一个聚类簇,因此对各训练样本进行聚类分析后可以得到多个聚类簇。
[0087]
通过聚类分析能够寻找到每个节点样本在资源调度时的分配规律,处于同一聚类簇中的pod样本与节点样本之间的调度关系彼此相似,处于不同聚类簇中的pod样本与节点样本之间的调度关系彼此相似性较低。
[0088]
然后可以对每个聚类簇中的训练样本进行特征提取,得到每个聚类簇中的样本特征,进而可以通过每个聚类簇中的样本特征,对每个聚类簇中包含的训练样本进行集中标注。即可以理解的是,由于在每个聚类簇中包含的所有训练样本均属于同一类别,因此均可以采用相同的评价信息标签进行标注,如此不需要人工逐一对训练样本集中的每个训练样本均进行标注,可以提升标注效率。
[0089]
该集中标注的过程可以通过人工实现,聚类簇中的样本特征为人工标注提供标注依据。在得到多个聚类簇后再进行的人工标注,与传统的人工标注不同,标注人员能够基于聚类分析得到的多个聚类簇,对每个聚类簇进行集中标注。由于每个聚类簇的分配特性相似,因此聚类簇中每个节点的调度情况也类似,评价信息标签也相似,这样就为评价信息标签设定了一个更好的参照系,无需标注人员逐条审核,极大节省标注时间。
[0090]
集中标注的内容可以是每个pod最适合被调度到的node的节点编号,若kubernetes集群中共有n个node,则评价信息标签可以分别表示为[1,2,3,
…
,n]。
[0091]
本发明实施例中,采用密度聚类算法对各训练样本进行聚类分析,得到多个聚类簇,更加直观地挖掘出pod资源调度规律。通过多个聚类簇中的样本特征,对多个聚类簇中包含的训练样本进行集中标注,可以提高训练样本的标注效率,节省标注时间,降低人工成本。
[0092]
在上述实施例的基础上,本发明实施例中提供的基于kubernetes的物理资源调度方法,所述基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇,包括:
[0093]
s4,遍历各所述训练样本,基于当前训练样本的预设邻域内存在的其他训练样本的数量,判断所述当前训练样本是否为核样本;若所述当前训练样本为核样本,则将所述当前训练样本存入核样本集;
[0094]
s5,遍历所述核样本集中的每一核样本,基于当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,确定所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本是否属于同一初始簇;
[0095]
s6,确定所述核样本集中各核样本对应的初始簇后,计算各所述核样本对应的初
始簇之间的轮廓系数;
[0096]
s7,调整所述密度聚类算法中的预设参数,重复执行遍历动作,计算得到多个轮廓系数,并基于所述多个轮廓系数,确定所述多个聚类簇。
[0097]
具体地,本发明实施例中,在通过密度聚类算法,对各训练样本进行聚类分析,得到多个聚类簇时,采用的密度聚类算法是dbscan算法。首先执行步骤s4,即遍历各训练样本,以当前时刻遍历到的训练样本作为当前训练样本,通过计算当前训练样本与各训练样本中除当前训练样本外的其他训练样本之间的距离,确定当前训练样本的预设邻域内存在的其他训练样本的数量。预设邻域的预设半径e可以根据需要进行设定,此处不作具体限定。
[0098]
可以理解的是,在计算当前训练样本与各训练样本中的其他训练样本之间的距离时,可以采用计算欧式距离的方式进行。除此之外,由于欧式距离计算相对简单,往往无法代表各训练样本之间的真实距离,尤其是在本发明实施例中存在多个训练样本的场景下,训练样本之间差异较大,欧氏距离无法完全表达其距离特征。因此,本发明实施例中为解决欧式距离带来的问题,也可以采用计算hausdorff距离的方式进行计算,以改进原始的dbscan算法中距离度量不全面的问题。
[0099]
此后,根据当前训练样本的预设邻域内存在的其他训练样本的数量,判断所述当前训练样本是否为核样本。在判断过程中,可以引入数量阈值minpts,然后比较当前训练样本的预设邻域内存在的其他训练样本的数量与数量阈值之间的大小关系,若当前训练样本的预设邻域内存在的其他训练样本的数量大于或等于数量阈值,则可以确定当前训练样本为核样本,否则可以确定当前训练样本不是核样本。可以理解的是,核样本可以是聚类分析的聚类中心,也即后续得到的各聚类簇的中心。
[0100]
在确定当前训练样本为核样本的情况下,可以将当前训练样本存入核样本集。在遍历各训练样本之后,可以得到各训练样本中属于核样本的训练样本,且所有的核样本均存储至核样本集内。
[0101]
然后执行步骤s5,遍历核样本集中的每一核样本,以当前时刻遍历到的核样本作为当前核样本,计算当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度。
[0102]
由于原始的dbscan算法将每个训练样本同等对待,但在实际训练样本中可能存在噪声点,这些噪声点可能会影响各聚类簇的正确构造,进而降低聚类分析的泛化能力,并且在本发明实施例中需要更多关注到这些噪声样本,将噪声样本与其他聚类簇中的训练样本区分开来,以便后续标注人员能够更好区分训练样本中调度关系的差异,提升标注效率。
[0103]
由于聚类簇之间的重叠,分布在聚类簇边缘的某些训练样本在实际应用中并不一定属于某一个聚类簇,而可能是属于多个聚类簇或者为噪声样本,这导致这些噪声样本的类别出现模糊不确定性;而分布在簇类中心的训练样本的类别的确定性要远远高于分布在边缘的训练样本,因此在聚类时不能把训练样本集中的所有训练样本等同看待。考虑到隶属度函数基于模糊集理论,不像传统聚类算法只是简单的判断某个训练样本是否属于某个聚类簇,而是能够计算出某个训练样本在多大程度上属于某个聚类簇,这样可以控制各训练样本的权重,因此为了消除噪声样本的影响,在dbscan算法中引入隶属度函数。
[0104]
隶属度函数可以选取可以根据需要进行,可以选取传统的基于距离的隶属度函
数,但是这种隶属度函数只考虑了训练样本与该训练样本所处的类别中心点,即核样本之间的关系,没有考虑样本分布情况对隶属度的影响。而在kubernetes集群中,根据集群原始的节点调度特性以及经验,真实数据分布具有分散性。在此基础上,也可以隶属度函数进行改进,将pod样本的分散性分布特性也考虑在内,得到knn隶属度函数。通过knn隶属度函数来计算隶属度,提高聚类分析算法的抗噪性。
[0105]
此后,通过当前核样本的预设邻域内存在的其他训练样本与当前核样本之间的隶属度,确定当前核样本的预设邻域内存在的其他训练样本与当前核样本是否属于同一初始簇。在判断当前核样本的预设邻域内存在的其他训练样本与当前核样本是否属于同一初始簇时,可以引入隶属度阈值,然后将当前核样本的预设邻域内存在的每一其他训练样本与当前核样本之间的隶属度与隶属度阈值进行比较,若当前核样本的预设邻域内存在的某一其他训练样本与当前核样本之间的隶属度小于隶属度阈值,则可以确定该其他训练样本与当前训练样本不属于同一初始簇。否则,则可以确定该其他训练样本与当前训练样本属于同一初始簇,并将该其他训练样本与当前训练样本共同存入相同的初始簇内。
[0106]
然后执行步骤s6,确定核样本集中各核样本对应的初始簇后,计算各核样本对应的初始簇之间的轮廓系数。由于初始确定的密度聚类算法中的预设邻域的预设半径e、数量阈值minpts以及隶属度阈值等预设参数不一定保证得到合适的各聚类簇,因此可以通过计算各核样本对应的初始簇之间的轮廓系数,以便于通过调整轮廓系数得到使得聚类效果最优的预设半径以及数量阈值。
[0107]
此处,轮廓系数可以通过如下计算公式表示:
[0108][0109]
其中,ai为训练样本i到自身所在的初始簇中所有其它的训练样本之间的平均距离,bi为训练样本i到其它的初始簇中所有的训练样本之间的距离最小值。
[0110]
每个训练样本均对应有一个轮廓系数,该轮廓系数sc的取值范围在-1到1之间。当sc取负值时,训练样本i到其它的初始簇内的训练样本的距离小于其到自身所在的初始簇内所有其他的训练样本的距离,说明两个初始簇有重叠,这样的聚类效果较差,sc值越大,其聚类质量越高,聚类效果越好。
[0111]
最后执行步骤s7,调整密度聚类算法中的预设参数,重复执行遍历动作,即重复执行上述步骤s4-s6,并计算得到多个轮廓系数。通过多个轮廓系数,确定出多个聚类簇。
[0112]
此处,预设参数可以包括预设邻域的预设半径e、数量阈值minpts以及隶属度阈值等参数。
[0113]
在通过多个轮廓系数确定出多个聚类簇时,可以从多个轮廓系数中选取最大的轮廓系数对应的各初始簇,并将其作为最终的聚类分析结果,即将最大的轮廓系数对应的各初始簇作为最终的各聚类簇。
[0114]
本发明实施例中,通过利用隶属度与轮廓系数来调整预设参数,进而自动选取最优参数,解决了传统dbscan算法存在的手动设定参数不准确的缺陷。
[0115]
在上述实施例的基础上,本发明实施例中提供的基于kubernetes的物理资源调度方法,所述当前训练样本的预设邻域内存在的其他训练样本,基于如下方法确定:
[0116]
计算所述当前训练样本与各所述训练样本之间的hausdorff距离;
[0117]
若所述hausdorff距离小于所述预设邻域的预设半径,则确定所述hausdorff距离对应的训练样本为所述当前训练样本的预设邻域内存在的其他训练样本。
[0118]
具体地,本发明实施例中,在确定当前训练样本的预设邻域内存在的其他训练样本时,可以通过计算当前训练样本与各训练样本之间的hausdorff距离实现,可以代表各训练样本之间的真实距离,使距离度量更加全面。
[0119]
在计算当前训练样本与各训练样本之间的hausdorff距离之后,可以判断每个训练样本与当前训练样本之间的hausdorff距离是否小于预设半径,如果小于预设半径,则可以确定该训练样本在当前训练样本的预设邻域内,即为该预设邻域内除当前训练样本外的其他训练样本。
[0120]
本发明实施例中,使用hausdorff距离,能够更好度量各训练样本之间的相似度,提升密度聚类算法鲁棒性。
[0121]
在上述实施例的基础上,本发明实施例中提供的基于kubernetes的物理资源调度方法,所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,基于如下方法确定:
[0122]
遍历所述当前核样本的预设邻域内存在的每一其他训练样本,确定与当前其他训练样本邻近且处于所述当前核样本的预设邻域内的若干临近样本;
[0123]
基于所述当前其他训练样本与所述若干临近样本之间的距离的均值、最大值以及最小值,确定所述当前其他训练样本与所述当前核样本之间的隶属度。
[0124]
具体地,本发明实施例中,在确定隶属度时,虽然基于knn的隶属度函数能够考虑训练样本的空间分布关系,但仅是将周围若干训练样本点的距离纳入考虑范围,未能将一些特殊情况或总体情况反映出来,因此本发明实施例中提出了一种模糊性判断的隶属度计算方法,即k近邻隶属度计算方法,可以减少噪声样本的影响。
[0125]
首先,遍历当前核样本的预设邻域内存在的每一其他训练样本,以当前时刻遍历到的当前核样本的预设邻域内存在的其他训练样本作为当前其他训练样本。确定与当前其他训练样本邻近且处于当前核样本的预设邻域内的若干临近样本,即对于当前其他训练样本xi,找到距离其最邻近的且处于同一类别下的k个临近样本,组成集合di={d1,d2,...,dk}。其中,dj(j=1,2,...,k)为当前其他训练样本xi到第j个临近样本的距离,k为近邻数,可以根据需要进行设定,此处不做具体限定。
[0126]
可以理解的是,近邻数k也是密度聚类算法中的预设参数之一,因此在每轮计算各核样本对应的初始簇之间的轮廓系数之后,不仅需要调整预设半径e、数量阈值minpts以及隶属度阈值等参数,还需要调整近邻数k。
[0127]
然后,通过当前其他训练样本与各临近样本之间的距离的均值、最大值以及最小值,确定当前其他训练样本与当前核样本之间的隶属度。即当前其他训练样本xi的隶属度可以通过如下公式计算得到:
[0128]
[0129][0130]
其中,d
ai
为当前其他训练样本xi到集合di的平均距离,d
max
、d
min
分别为d
ai
中的最大值、最小值;θ为用于控制隶属度下限的参数,θ《1且为足够小的正数;f为控制隶属度函数变化趋势的参数,为定值。
[0131]
此后,在遍历当前核样本的预设邻域内存在的每一其他训练样本之后,可以重新对噪声样本进行判断,判断噪声样本到已生成的初始簇中各训练样本的距离是否小于等于预设邻域的预设半径,若小于等于,则将该噪声样本归为该初始簇。
[0132]
本发明实施例中,采用k近邻隶属度来考虑模糊集中的知识又能充分考虑周围样本点对样本的影响,能够有效提高dbscan的精确度。
[0133]
在上述实施例的基础上,本发明实施例中采用的改进后的dbscan聚类算法,其流程如下:
[0134]
输入:训练样本集d,预设半径ε,数量阈值minpts,隶属度阈值f,近邻数k。
[0135]
输出:聚类分析结果及噪声样本
[0136]
1)从训练样本集d中随机抽取一个未被处理的训练样本;
[0137]
2)基于hausdorff距离计算抽取的训练样本与训练样本集d中其他训练样本之间的距离,且在抽取的训练样本的预设邻域内的其他训练样本的数量满足数量阈值要求,则为核样本,将核样本放入核样本集seed中并将该样本点归为初始簇c,否则返回步骤1);
[0138]
3)遍历seed中的每个核样本,通过计算得到的每个样本点之间的k近邻隶属度来判断噪声样本能否归并到现有的初始簇c中;
[0139]
4)遍历整个训练样本集d,进行dbscan聚类;
[0140]
5)计算聚类后的轮廓系数sc并调整预设半径ε、数量阈值minpts、隶属度阈值f以及近邻数k等预设参数;
[0141]
6)重复步骤4)、5),并比较计算得到的sc;
[0142]
7)选取步骤6)中满足最优sc时的各初始簇作为输出聚类分析结果,即得到各聚类簇。
[0143]
在上述实施例的基础上,本发明实施例中采用的改进后的dbscan聚类算法,所述调度评价模型基于如下方法训练得到:
[0144]
基于所述训练样本以及所述训练样本集中各训练样本对应的评价信息标签,采用包含有正则项的损失函数,对多个分类决策树模型进行迭代训练,得到所述调度评价模型。
[0145]
具体地,本发明实施例中,采用的调度评价模型可以通过训练样本集以及其中各训练样本对应的评价信息标签,采用包含有正则项的损失函数,对多个分类决策树模型进行迭代训练,得到调度评价模型。分类决策树模型可以采用cart分类决策树模型。
[0146]
此处,模型迭代训练时采用boosting思想,以一系列cart分类决策树模型作为弱学习器(拟合度较低),并以损失函数的负梯度为依据训练多个个体学习器,并按照梯度提升的方法进行集成,组合成一个准确可靠的强学习器(拟合度接近真值)。
[0147]
模型迭代训练始于一个常数预测,每次迭代生成一棵cart分类决策树拟合现有模型的残差,通过多轮迭代提升现有模型的准确率。此外,考虑到标注好的训练样本集类别不
平衡、高维度等问题,模型迭代训练时在损失函数中加入正则化项对模型的复杂程度施加惩罚,以提高模型的泛化能力,防止过拟合,且使用二阶导数使得损失函数更精确,利用集成学习的思想优化了类别不平衡的问题。
[0148]
在上述实施例的基础上,本发明实施例中提供的基于kubernetes的物理资源调度方法,所述迭代训练的过程中,当前轮次的迭代训练时采用的损失函数基于所述当前轮次的前一轮次的迭代训练时采用的损失函数的一阶梯度以及二阶梯度确定。
[0149]
具体地,本发明实施例中,在进行迭代训练的过程中,假设训练样本集包括有a个训练样本,b个特征,训练样本集可以表示为d={(xi,yi)},xi∈rb,yi∈r。xi表示训练样本集中的第i个训练样本的特征,yi表示第i个训练样本对应的评价信息标签。
[0150]
cart分类决策树模型采用加法模型与前向分步算法。前向分步算法是指在叠加新的模型的基础上同步进行优化,具体而言,就是每一次叠加的模型都去拟合上一次模型拟合后产生的残差。从算法模型解释上来说,boosting tree是决策树的加法模型,因此k棵树的最终预测值为:
[0151][0152]
f={f(x)=ω
q(x)
},q:rb→
t,ω∈r
t
[0153]
其中,每个函数fk对应一棵独立的树结构向量q和叶子权重ω,q由训练样本指向相应的叶子标签,每棵cart树的每个叶子节点对应一个连续分数值,即权重,第i个节点的分数为ω;t为叶子节点个数;f为cart分类决策树模型构成的集合;ω
q(x)
为每个cart分类决策树模型得到的预测值。对于每个训练样本,各cart分类决策树模型依据不同分类规则将其分类到叶子节点中,通过累加对应叶子的分数ω获得最终的预测值。
[0154]
模型的损失函数可表示为:
[0155][0156]
其中,n为训练样本的数量。
[0157]
模型的预测精度由模型的偏差和方差共同决定,损失函数代表了模型的偏差,想要方差小则需要在目标函数中添加正则项,用于防止过拟合。因此为了学习模型中的函数集合,模型的目标函数定义为:
[0158][0159][0160]
其中,为可微的凸损失函数,用于度量预测值与标签值的差距;ω(fk)是一个正则项,用于对模型的复杂程度进行惩罚,该附加的正则项能够平滑各叶节点的权重,避免
过拟合。γ、λ为控制模型复杂程度的正则化项参数,参数值越大,模型越不容易过拟合。t表示树里面叶子节点的个数。
[0161]
模型中需要得到每一棵树的fk。由于算法基于boosting tree模型,想要一次性得到所有树的模型是不可能的,只能通过迭代训练来得到第t棵树。首先定义初始的提升树为则第t次迭代得到的模型就是:
[0162][0163]
经过t次的迭代后再进行累加,目标函数就是:
[0164][0165]
再对每步训练目标函数进行二阶泰勒展开,使用泰勒展开的二阶信息能让梯度收敛更快更准确,因为一阶导数指引梯度方向,二阶导数指引梯度方向如何变化,二者结合可以更为精准的逼近真实的损失函数。二阶泰勒展开后的目标函数为:
[0166][0167][0168][0169]
其中,gi和hi分别为损失函数的一阶、二阶梯度。将常数项移除,则可以得到第t次训练的简化目标函数为:
[0170][0171]
模型最终输出是这一系列弱学习器输出结果的累计,这种训练模式不仅保留了cart分类决策树对于特征选择的最佳切分,更通过累积逼近的方法,摒弃了决策树容易过拟合的劣势,最终得到既充分拟合训练数据,又具有足够泛化能力的调度评价模型。
[0172]
通过对训练结果调优,最终调度评价模型能够成功预测出当前pod应被分配到的最合适的node的节点编号,利用此预测结果可继续对调度器进行迭代优化。
[0173]
在调度评价模型训练完成后,继续对所需的数据进行收集。并与原始数据一起作
为新的训练数据,持续对调度评价模型进行训练,增强调度评价模型的预测准确性。
[0174]
综上所述,本发明实施例中提供的基于kubernetes的物理资源调度方法,采用人工智能算法,kubernetes在调度应用的pod时,不再简单的根据静态资源分配情况来进行调度,而是结合历史的资源使用情况、pod所在应用的历史情况、当前系统的资源的使用情况、未来的资源使用情况预测来进行综合的评价判断,得到一个最优的结果。其优点在于:
[0175]
1)解决了原生调度器静态调度机制可能引起的集中调度问题。
[0176]
2)引入人工智能算法进行节点综合评价,综合考虑历史集群资源使用情况和未来可能的使用情况推测来进行综合判断,调度结果更加准确。
[0177]
3)支持使用kubernetes的service机制部署,防止出现调度器单点故障。
[0178]
4)使用原生的kubernetes机制引入新的调度器调度机制,对kubernetes本身没有侵入性的改造,代码完全解耦合。
[0179]
如图2所示,在上述实施例的基础上,本发明实施例中提供了一种调度器,包括:
[0180]
信息获取模块21,用于获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;
[0181]
评价模块22,用于遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;
[0182]
调度模块23,用于基于各所述节点对应的评价信息,对所述待调度pod进行调度;
[0183]
其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
[0184]
在上述实施例的基础上,本发明实施例中提供的调度器,包括聚类模块,用于:
[0185]
基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇;
[0186]
基于所述多个聚类簇中的样本特征,对所述多个聚类簇中包含的训练样本进行集中标注,得到各所述训练样本对应的评价信息标签。
[0187]
在上述实施例的基础上,本发明实施例中提供的调度器,所述聚类模块,用于:
[0188]
遍历各所述训练样本,基于当前训练样本的预设邻域内存在的其他训练样本的数量,判断所述当前训练样本是否为核样本;若所述当前训练样本为核样本,则将所述当前训练样本存入核样本集;
[0189]
遍历所述核样本集中的每一核样本,基于当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,确定所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本是否属于同一初始簇;
[0190]
确定所述核样本集中各核样本对应的初始簇后,计算各所述核样本对应的初始簇之间的轮廓系数;
[0191]
调整所述密度聚类算法中的预设参数,重复执行遍历动作,计算得到多个轮廓系数,并基于所述多个轮廓系数,确定所述多个聚类簇。
[0192]
在上述实施例的基础上,本发明实施例中提供的调度器,还包括距离计算模块,用于:
[0193]
计算所述当前训练样本与各所述训练样本之间的hausdorff距离;
[0194]
若所述hausdorff距离小于所述预设邻域的预设半径,则确定所述hausdorff距离对应的训练样本为所述当前训练样本的预设邻域内存在的其他训练样本。
[0195]
在上述实施例的基础上,本发明实施例中提供的调度器,还包括隶属度计算模块,用于:
[0196]
遍历所述当前核样本的预设邻域内存在的每一其他训练样本,确定与当前其他训练样本邻近且处于所述当前核样本的预设邻域内的若干临近样本;
[0197]
基于所述当前其他训练样本与所述若干临近样本之间的距离的均值、最大值以及最小值,确定所述当前其他训练样本与所述当前核样本之间的隶属度。
[0198]
在上述实施例的基础上,本发明实施例中提供的调度器,还包括训练模块,用于:
[0199]
基于所述训练样本以及所述训练样本集中各训练样本对应的评价信息标签,采用包含有正则项的损失函数,对多个分类决策树模型进行迭代训练,得到所述调度评价模型。
[0200]
在上述实施例的基础上,本发明实施例中提供的调度器,所述迭代训练的过程中,当前轮次的迭代训练时采用的损失函数基于所述当前轮次的前一轮次的迭代训练时采用的损失函数的一阶梯度以及二阶梯度确定。
[0201]
在上述实施例的基础上,本发明实施例中提供的调度器,对pod进行调度时,允许在优选过程中加入自定义的优选函数。进行优选时,通过http方式调用自定义调度器中的函数并获取相应的优选结果,结合优选结果预置的权重进行优选判断。
[0202]
以下为保证调度器实现调度,kubernetes中涉及到的工作:
[0203]
kubernetes的api server提供了watch机制供外围组件获取kubernetes集群中的各种信息。pod cache通过该机制获取kubernetes集群中pod的变化情况,并经过数据整理后记录到内存中,供优选函数使用。
[0204]
因此,在利用调度评价模型进行评价前,需要从数据库中获取进行对节点评价所需的实时监控数据。
[0205]
kubernetes中具有缓存模块,用于通过watch机制获取实时监控数据并存入内存。a)缓存模块通过watch集群中pod的变化信息并存储,并提供查询接口。b)启动对pod变化的监听。
[0206]
a)在程序启动时,设置了一个参数,配置了运行环境中kubernetes config文件的位置。
[0207]
b)基于配置文件的信息,创建了一个kubernetes客户端,并通过该客户端生成了一个sharedinformerfactory。
[0208]
c)在factory上调用core().v1().pods(),生成对应的informer并启动watch动作。
[0209]
d)提供三个函数podadd、podupdate、poddelete,分别用于接收到watch返回的信息时的信息处理。
[0210]
缓存模块的数据结构定义如下:a)由于watch到的变动信息返回时所使用的结构体corev1.pod已经包含了比较详细的pod相关信息,因此首先将该结构体进行简单的封装并命名为podinfo;b)定义hostpodcache,内部包含一个map,定义为map[types.uid]*podinfo,用于存放一个node上的所有有效pod信息。c)定义podinfocache,内部包含一个map,定义为map[string]*hostpodcache,用于存放集群中所有node的pod信息,map的key值
用于存放node的名称,该名称从kubernetes集群中获取。
[0211]
缓存模块中缓存信息的创建与维护方法如下:a)程序定义一个全局唯一的podinfocache实例,该实例在整个程序的运行工程中一直有效,并不断地维护其中的数据。b)在watch动作生效时,api service会集中返回当前集群内全部的pod信息,模块通过处理函数分别将这些pod信息整理后存入之前定义的podinfocache结构中。c)当集群中pod出现变动时,收到api service发送的信息后,通过判断pod的变化状态使用相应的处理函数,将pod信息向缓存的数据结构中更新。
[0212]
调度器在对pod进行调度时采用的优选函数的格式如下,该格式符合kubernetes提供的scheduler扩展机制中对优选函数的格式要求:func func(pod v1.pod,nodes[]v1.node)(*schedulerapi.hostprioritylist,error)。
[0213]
上述优选函数的实现过程如下:
[0214]
a)生成一个schedulerapi.hostprioritylist,用于保存返回结果。
[0215]
b)获取当前集群静态资源数据、动态监控数据、pod缓存数据以及所有节点的实时负载数据。
[0216]
c)遍历传入的集群node列表nodes:将当前节点信息、待调度的pod信息、相关的应用信息和收集到的其它信息,经过预处理后输入评价模型,得到该node对于当前pod的评价结果。并保存到结果集中。
[0217]
d)返回结果集,结果集中包含了对传入列表中每个node的评分结果。
[0218]
具体地,本发明实施例中提供的调度器中各模块的作用与上述方法类实施例中各步骤的操作流程是一一对应的,实现的效果也是一致的,具体参见上述实施例,本发明实施例中对此不再赘述。
[0219]
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(communications interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行上述各实施例中提供的基于kubernetes的物理资源调度方法,该方法包括:获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;基于各所述节点对应的评价信息,对所述待调度pod进行调度;其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
[0220]
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种
可以存储程序代码的介质。
[0221]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例中提供的基于kubernetes的物理资源调度方法,该方法包括:获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;基于各所述节点对应的评价信息,对所述待调度pod进行调度;其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
[0222]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例中提供的基于kubernetes的物理资源调度方法,该方法包括:获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;基于各所述节点对应的评价信息,对所述待调度pod进行调度;其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。
[0223]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0224]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0225]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种基于kubernetes的物理资源调度方法,其特征在于,包括:获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;基于各所述节点对应的评价信息,对所述待调度pod进行调度;其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。2.根据权利要求1所述的基于kubernetes的物理资源调度方法,其特征在于,各所述训练样本对应的评价信息标签基于如下方法确定:基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇;基于所述多个聚类簇中的样本特征,对所述多个聚类簇中包含的训练样本进行集中标注,得到各所述训练样本对应的评价信息标签。3.根据权利要求2所述的基于kubernetes的物理资源调度方法,其特征在于,所述基于密度聚类算法,对各所述训练样本进行聚类分析,得到多个聚类簇,包括:遍历各所述训练样本,基于当前训练样本的预设邻域内存在的其他训练样本的数量,判断所述当前训练样本是否为核样本;若所述当前训练样本为核样本,则将所述当前训练样本存入核样本集;遍历所述核样本集中的每一核样本,基于当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,确定所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本是否属于同一初始簇;确定所述核样本集中各核样本对应的初始簇后,计算各所述核样本对应的初始簇之间的轮廓系数;调整所述密度聚类算法中的预设参数,重复执行遍历动作,计算得到多个轮廓系数,并基于所述多个轮廓系数,确定所述多个聚类簇。4.根据权利要求3所述的基于kubernetes的物理资源调度方法,其特征在于,所述当前训练样本的预设邻域内存在的其他训练样本,基于如下方法确定:计算所述当前训练样本与各所述训练样本之间的hausdorff距离;若所述hausdorff距离小于所述预设邻域的预设半径,则确定所述hausdorff距离对应的训练样本为所述当前训练样本的预设邻域内存在的其他训练样本。5.根据权利要求3所述的基于kubernetes的物理资源调度方法,其特征在于,所述当前核样本的预设邻域内存在的其他训练样本与所述当前核样本之间的隶属度,基于如下方法确定:遍历所述当前核样本的预设邻域内存在的每一其他训练样本,确定与当前其他训练样本邻近且处于所述当前核样本的预设邻域内的若干临近样本;基于所述当前其他训练样本与所述若干临近样本之间的距离的均值、最大值以及最小值,确定所述当前其他训练样本与所述当前核样本之间的隶属度。
6.根据权利要求1-5中任一项所述的基于kubernetes的物理资源调度方法,其特征在于,所述调度评价模型基于如下方法训练得到:基于所述训练样本以及所述训练样本集中各训练样本对应的评价信息标签,采用包含有正则项的损失函数,对多个分类决策树模型进行迭代训练,得到所述调度评价模型。7.根据权利要求6所述的基于kubernetes的物理资源调度方法,其特征在于,所述迭代训练的过程中,当前轮次的迭代训练时采用的损失函数基于所述当前轮次的前一轮次的迭代训练时采用的损失函数的一阶梯度以及二阶梯度确定。8.一种调度器,其特征在于,包括:信息获取模块,用于获取kubernetes集群中的调度信息,所述调度信息包括待调度pod的pod信息以及各节点的负载信息;评价模块,用于遍历各所述节点,将所述待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到所述调度评价模型输出的所述待调度pod被调度至所述当前节点时的评价信息;调度模块,用于基于各所述节点对应的评价信息,对所述待调度pod进行调度;其中,所述调度评价模型基于训练样本集以及所述训练样本集中各训练样本对应的评价信息标签训练得到,所述训练样本包括pod样本的pod信息以及所述pod样本被调度到的节点样本的负载信息。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的基于kubernetes的物理资源调度方法。10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于kubernetes的物理资源调度方法。
技术总结
本发明提供一种基于Kubernetes的物理资源调度方法及调度器,通过获取Kubernetes集群中的调度信息,调度信息包括待调度Pod的Pod信息以及各节点的负载信息;然后遍历各节点,将待调度Pod的Pod信息以及当前节点的负载信息输入至调度评价模型,得到调度评价模型输出的待调度Pod被调度至当前节点时的评价信息;最好基于各节点对应的评价信息,对待调度Pod进行调度。该方法引入了当前节点的负载信息,避免了只考虑硬件资源而导致的节点上物理资源出现异常的情况,保证了Kubernetes集群的安全运行,提高了Kubernetes集群的稳定性。提高了Kubernetes集群的稳定性。提高了Kubernetes集群的稳定性。
技术研发人员:苏龙华
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.03.22
技术公布日:2023/10/8
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/