Pod的调度方法和装置、存储介质及电子设备
文献发布时间:2024-04-18 19:58:21
技术领域
本申请涉及大数据领域,具体而言,涉及一种Pod的调度方法和装置、存储介质及电子设备。
背景技术
Kubernetes(一个开源的容器编排平台,常简称为K8s)是用于自动化部署,扩展和管理“容器化应用程序”的开源系统。
Kube-scheduler组件(Kubernetes集群中的一个核心组件),也被称为调度器,它负责在Kubernetes集群中为一个Pod(容器)资源对象找到合适的节点并在该节点上运行。调度器每次只调度一个Pod资源对象,为每一个Pod资源对象寻找合适node(节点)的过程是一个调度周期。
图1是现有技术中Kubernetes的架构图,如图1所示,在Pod调度过程中会有预选阶段和优选阶段,现有技术中在这两个阶段对node筛选条件实现的有,基于亲和性和反亲和性,CPU(中央处理器),MEMORY(存储器)资源可使用率,污点和容忍度等。但是在图1中,如果node故障会对已经运行在该node上的Pod产生短暂的影响,同时,如果同一个服务的Pod都调度到同一个node上会造成该服务的短暂不可用。
针对相关技术中,在将Pod进行调度过程中,可能会将Pod调度到产生故障概率较大的工作节点上,进而降低Pod运行的稳定性的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种Pod的调度方法和装置、存储介质及电子设备,以至少解决相关技术中,在将Pod进行调度过程中,可能会将Pod调度到产生故障概率较大的工作节点上,进而降低Pod运行的稳定性的问题。
根据本申请实施例的一个实施例,提供了一种Pod的调度方法,包括:确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
在一个示例性实施例中,确定目标集群中每一工作节点的健康得分,包括:获取所述每一工作节点在预设时间段的故障信息,其中,所述故障信息用于指示每一故障事件的故障类型和所述每一故障事件的出现次数;根据所述每一故障事件的故障类型和所述每一故障事件的出现次数确定所述每一工作节点的当前健康得分;根据所述每一工作节点的当前健康得分和历史健康得分确定所述每一工作节点的健康得分。
在一个示例性实施例中,根据所述每一故障事件的故障类型和所述每一故障事件的出现次数确定所述每一工作节点的当前健康得分,包括:确定所述故障类型对应的故障权重;确定所述故障权重和所述出现次数的第一乘积,并将所述第一乘积作为所述每一故障事件的故障得分;根据所述每一故障事件的故障得分确定所述每一工作节点的当前健康得分。
在一个示例性实施例中,根据所述每一工作节点的当前健康得分和历史健康得分确定所述每一工作节点的健康得分,包括:确定所述当前健康得分和所述历史健康得分的第一差值;确定所述第一差值和预设值的和值;确定所述和值与所述当前健康得分的第一商值,并将所述第一商值作为所述每一工作节点的健康得分。
在一个示例性实施例中,在所述可用资源得分包括:计算资源得分的情况下,确定目标集群中每一工作节点的可用资源得分,包括:确定所述每一工作节点的计算资源总量和计算资源申请量;确定所述计算资源总量和所述计算资源申请量的第二差值;确定所述第二差值与所述计算资源总量的第二商值,并将所述第二商值作为所述每一工作节点的可用资源得分。
在一个示例性实施例中,在所述可用资源得分包括:内存资源得分的情况下,确定目标集群中每一工作节点的可用资源得分,包括:确定所述每一工作节点的内存资源总量和内存资源申请量;确定所述内存资源总量和所述内存资源申请量的第三差值;确定所述第三差值与所述内存资源总量的第三商值,并将所述第三商值作为所述每一工作节点的可用资源得分。
在一个示例性实施例中,根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级,包括:确定所述可用资源得分对应的资源权重和所述健康得分对应的健康权重;确定所述资源权重和所述可用资源得分的第二乘积,以及所述健康权重和所述健康得分的第三乘积;根据所述第二乘积和所述第三乘积确定所述每一工作节点的总分;对多个所述总分进行排序,并根据排序结构确定所述每一工作节点的优先级。
根据本申请实施例的另一个实施例,还提供了一种Pod的调度装置,包括:
第一确定模块,用于确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;
第二确定模块,用于根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;
第三确定模块,用于根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的Pod的调度方法。
在本申请实施例中,根据在目标集群中确定的每一个节点的健康得分和可用资源得分确定每一个节点的优先级,其中,所述可用资源得分包括计算资源得分和内存资源得分;再根据每一个节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。采用上述技术方案,解决了相关技术中,在将Pod进行调度过程中,可能会将Pod调度到产生故障概率较大的工作节点上,进而降低Pod运行的稳定性的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中Kubernetes的架构图
图2是本申请实施例的一种Pod的调度方法的硬件环境示意图;
图3是根据本申请实施例的Pod的调度方法的流程图;
图4是根据本申请示例性实施例的Node调度筛选流程图;
图5是根据本申请示例性实施例的健康采集系统示意图;
图6是根据本申请实施例的一种Pod的调度装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算系统中执行。以运行在计算机终端上为例,图2是本申请实施例的一种Pod的调度方法的计算机终端的硬件结构框图。如图2所示,计算机终端可以包括一个或多个(图2中仅示出一个)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理系统)和用于存储数据的存储器204,其中,上述计算机终端还可以包括用于通信功能的传输设备206以及输入输出设备208。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器204可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的处理策略的确定方法对应的计算机程序,处理器202通过运行存储在存储器204内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储系统、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备206包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备206可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种Pod的调度方法,应用于上述计算机终端,图3是根据本申请实施例的Pod的调度方法的流程图,如图3所示,该流程包括如下步骤:
步骤S302,确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;
步骤S304,根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;
步骤S306,根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
通过上述步骤,根据在目标集群中确定的每一个节点的健康得分和可用资源得分确定每一个节点的优先级,其中,所述可用资源得分包括计算资源得分和内存资源得分;再根据每一个节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。采用上述技术方案,解决了相关技术中,在将Pod进行调度过程中,可能会将Pod调度到产生故障概率较大的工作节点上,进而降低Pod运行的稳定性的问题。
上述步骤S302中,确定目标集群中每一工作节点的健康得分,包括:获取所述每一工作节点在预设时间段的故障信息,其中,所述故障信息用于指示每一故障事件的故障类型和所述每一故障事件的出现次数;根据所述每一故障事件的故障类型和所述每一故障事件的出现次数确定所述每一工作节点的当前健康得分;根据所述每一工作节点的当前健康得分和历史健康得分确定所述每一工作节点的健康得分。
可以理解的是,在目标集群中,要确定目标集群中的每一个节点的健康状态得分,上述目标节点的健康状态的得分可以通过每一个节点在预设时间内发生故障的次数和故障类型确定,其中,节点的故障类型包括但不限于内存故障、硬盘故障等。
进一步的,通过每一个节点在预设时间内的故障类型和故障次数计算节点当前健康得分,再根据当前健康得分和历史健康得分确定节点的健康得分。
可选的,根据所述每一故障事件的故障类型和所述每一故障事件的出现次数确定所述每一工作节点的当前健康得分,包括:确定所述故障类型对应的故障权重;确定所述故障权重和所述出现次数的第一乘积,并将所述第一乘积作为所述每一故障事件的故障得分;根据所述每一故障事件的故障得分确定所述每一工作节点的当前健康得分。
可以理解的是,可以通过评估不同故障类型对系统运行的影响程度进行确定故障类型对应的权重。例如:可以考虑故障对生产能力、成本等方面的影响,根据评估结果确定故障类型的权重。通过确定故障类型对应的故障权重,可以提高系统的可靠性和稳定性。
进一步的,计算故障类型的权重与故障出现次数的乘积,得到每一个节点的每一个故障得分,通过计算每一节点的每一个故障事件的故障得分,可以确定每一个节点的当前健康得分。
可选的,根据所述每一工作节点的当前健康得分和历史健康得分确定所述每一工作节点的健康得分,包括:确定所述当前健康得分和所述历史健康得分的第一差值;确定所述第一差值和预设值的和值;确定所述和值与所述当前健康得分的第一商值,并将所述第一商值作为所述每一工作节点的健康得分。
可以理解的是,可以通过收集每个节点的历史数据,包括节点健康指标的数值和时间戳,确定节点的历史健康得分。
进一步的,通过节点的历史健康得分和当前健康得分计算节点的健康得分。公式可以为:health Score=(health–history Health+10)*10/health,其中,上述healthScore相当于健康得分,上述health相当于当前健康得分,上述history Health相当于历史健康得分,上述预设值可以为10。
可选的,在所述可用资源得分包括:计算资源得分的情况下,确定目标集群中每一工作节点的可用资源得分,包括:确定所述每一工作节点的计算资源总量和计算资源申请量;确定所述计算资源总量和所述计算资源申请量的第二差值;确定所述第二差值与所述计算资源总量的第二商值,并将所述第二商值作为所述每一工作节点的可用资源得分。
可以理解的是,上述节点的可用资源可以包括:计算资源和内存资源,其中,上述节点的计算资源得分可以通过以下公式进行计算:memory Score=(memory Capacity-sum(memory Requested))*10/memory Capacity,其中,上述memory Score相当于节点的计算资源得分,上述memory Capacity相当于节点的计算资源总量,上述memory Requested相当于节点的计算资源总量。
可选的,在所述可用资源得分包括:内存资源得分的情况下,确定目标集群中每一工作节点的可用资源得分,包括:确定所述每一工作节点的内存资源总量和内存资源申请量;确定所述内存资源总量和所述内存资源申请量的第三差值;确定所述第三差值与所述内存资源总量的第三商值,并将所述第三商值作为所述每一工作节点的可用资源得分。
可以理解的是,上述内存资源得分可以通过以下公式进行计算:cpu Score=(cpuCapacity–sum(cpu Requested))*10/cpu Capacity,其中,上述cpu Score相当于内存资源得分,上述cpu Capacity相当于节点的内存资源总量,上述cpu Requested相当于节点的内存资源申请量。
可选的,根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级,包括:确定所述可用资源得分对应的资源权重和所述健康得分对应的健康权重;确定所述资源权重和所述可用资源得分的第二乘积,以及所述健康权重和所述健康得分的第三乘积;根据所述第二乘积和所述第三乘积确定所述每一工作节点的总分;对多个所述总分进行排序,并根据排序结构确定所述每一工作节点的优先级。
可以理解的是,根据上述可用资源得分以及健康得分确定权重,根据权重可以计算节点的总分,其中,节点的总分越大,优先级越高。
上述节点总分的计算公式可以是:Socre=(memory Weight*memory Score+cpuWeight*cpu Score+health Weight*health Score)/3,其中上述Socre相当于节点总分,上述memory Weight、cpu Score和health Weight相当于节点的计算资源权重、内存资源权重以及健康权重。
为了更好的理解上述Pod的调度方法的过程,以下再结合可选实施例对上述Pod的调度的实现方法流程进行说明,但不用于限定本申请实施例的技术方案。
本示例性实施例提供了一种基于Kubernetes集群的资源调度方法,具体包括以下步骤:
1)Node调度筛选,图4是根据本申请示例性实施例的Node调度筛选流程图,如图4所示:
步骤S401,遍历集群中所有的node,计算每个可用node资源得分;
步骤S402,从健康采集系统获取每个node的历史健康状态,计算在过去一段时间内可用node的健康得分;
步骤S403,根据上述步骤S401中每个node的资源得分与上述步骤S402的node健康得分,计算出最终node的优先级,并将Pod调度到优先级最高的node上。
2)健康采集,其中,图5是根据本申请示例性实施例的健康采集系统示意图,如图5所示,
健康采集系统会监控集群node的健康状态并对异常信息进行时间戳保存状态;
kube-scheduler调度器在调度Pod过程中选择node时,会从健康采集系统中获取每个node的历史健康状态,根据异常类型判断存在隐患大小加入分值评判。
3)优先级得分计算:
(1)Node memory得分计算,其中memory Capacity是node当前memory总量,memoryRequested是memory总申请量。
memory Score=(memory Capacity–sum(memory Requested))*10/memoryCapacity
(2)Node cpu得分计算,其中cpu Capacity是node当前cpu总量,cpu Requested是cpu总申请量。
cpu Score=(cpu Capacity–sum(cpu Requested))*10/cpu Capacity
(3)Node健康状态得分计算,其中health是当前node的健康得分,history Health是历史健康得分。
health Score=(health–history Health+10)*10/health
(4)Node cpu,Node memory,Node健康状态的得分计算(得分范围0-10)中,分值越大,优先级越高,其中memory Weight,cpu Weight,health Weight是各自的权重。
Socre=(memory Weight*memory Score+cpu Weight*cpu Score+healthWeight*health Score)/3
在本示例性实施例中,调度器增加了node的历史健康得分,并且在原有的node评选过程中融入node的历史健康得分共同计算得到新的node的优先级,将Pod调度到优先级最高的node上,提高了Pod中容器服务的稳定性,提升系统的稳定性。
在node评选过程中加入了对node过去一段时间的健康状态作为评选的一个因素,也就是说不仅仅是在对node某一时刻健康的状态做评估,而是加入了过去一段时间的健康作为评估,这样会提升对所评估node的稳定性,进一步提升调度到该node的Pod及相关容器服务的稳定性,从而提高系统稳定性和用户使用体验。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
图6是根据本申请实施例的一种Pod的调度装置的结构框图;如图5所示,该装置包括:
第一确定模块62,用于确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;
第二确定模块64,用于根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;
第三确定模块66,用于根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
通过上述装置,根据在目标集群中确定的每一个节点的健康得分和可用资源得分确定每一个节点的优先级,其中,所述可用资源得分包括计算资源得分和内存资源得分;再根据每一个节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。采用上述技术方案,解决了相关技术中,在将Pod进行调度过程中,可能会将Pod调度到产生故障概率较大的工作节点上,进而降低Pod运行的稳定性的问题。
在一个示例性实施例中,上述第一确定模块62,用于获取所述每一工作节点在预设时间段的故障信息,其中,所述故障信息用于指示每一故障事件的故障类型和所述每一故障事件的出现次数;根据所述每一故障事件的故障类型和所述每一故障事件的出现次数确定所述每一工作节点的当前健康得分;根据所述每一工作节点的当前健康得分和历史健康得分确定所述每一工作节点的健康得分。
在一个示例性实施例中,上述第一确定模块62,还用于确定所述故障类型对应的故障权重;确定所述故障权重和所述出现次数的第一乘积,并将所述第一乘积作为所述每一故障事件的故障得分;根据所述每一故障事件的故障得分确定所述每一工作节点的当前健康得分。
在一个示例性实施例中,上述第一确定模块62,还用于确定所述当前健康得分和所述历史健康得分的第一差值;确定所述第一差值和预设值的和值;确定所述和值与所述当前健康得分的第一商值,并将所述第一商值作为所述每一工作节点的健康得分。
在一个示例性实施例中,上述第一确定模块62,还用于计算资源得分的情况下,确定目标集群中每一工作节点的可用资源得分,包括:确定所述每一工作节点的计算资源总量和计算资源申请量;确定所述计算资源总量和所述计算资源申请量的第二差值;确定所述第二差值与所述计算资源总量的第二商值,并将所述第二商值作为所述每一工作节点的可用资源得分。
在一个示例性实施例中,上述第一确定模块62,还用于确定所述每一工作节点的内存资源总量和内存资源申请量;确定所述内存资源总量和所述内存资源申请量的第三差值;确定所述第三差值与所述内存资源总量的第三商值,并将所述第三商值作为所述每一工作节点的可用资源得分。
在一个示例性实施例中,上述第二确定模块64,还用于确定所述可用资源得分对应的资源权重和所述健康得分对应的健康权重;确定所述资源权重和所述可用资源得分的第二乘积,以及所述健康权重和所述健康得分的第三乘积;根据所述第二乘积和所述第三乘积确定所述每一工作节点的总分;对多个所述总分进行排序,并根据排序结构确定所述每一工作节点的优先级。
本申请的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;
S2,根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;
S3,根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,确定目标集群中每一工作节点的健康得分和可用资源得分,其中,所述可用资源得分至少包括以下之一:计算资源得分、内存资源得分;
S2,根据所述可用资源得分和所述健康得分确定所述每一工作节点的优先级;
S3,根据所述每一工作节点的优先级确定最高优先级对应的目标工作节点,并将Pod调度至所述目标工作节点。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
- 电影拍摄场景的调度方法、装置、电子设备和存储介质
- 一种任务调度方法、装置、电子设备及存储介质
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 电子设备控制方法及装置、电子设备及存储介质
- 数据分布存储方法、装置、存储介质及电子设备
- pod调度方法、装置、电子设备及存储介质
- 基于Kubernetes集群的pod调度方法、装置、设备及存储介质