一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

CPU资源的绑定方法、装置、存储介质及电子装置与流程

2022-05-18 07:29:53 来源:中国专利 TAG:
cpu资源的绑定方法、装置、存储介质及电子装置
技术领域
:1.本发明实施例涉及云计算
技术领域
:,具体而言,涉及一种cpu资源的绑定方法、装置、存储介质及电子装置。
背景技术
::2.近年来,容器技术在云计算、互联网等领域得到了广泛的应用,容器技术为应用程序提供了隔离的运行空间,每个容器内都包含一个独享的完整用户环境空间,一个容器内的变动不会影响其他容器的运行环境。对于计算密集型容器应用,容器需要独占cpu以获取最优的计算能力,在容器管理及节点资源管理方面,相关技术中主要采用将节点所有可独占的cpu上报扩展资源,以对所有可独占的cpu进行随机调度,而无法动态地将容器cpu分配到不同节点上,即相关技术中的容器cpu分配方法比较单一,从而导致资源利用率较低。3.针对相关技术中存在的容器cpu的分配方法单一从而导致资源利用率较低的问题,目前尚未提出有效的解决方案。技术实现要素:4.本发明实施例提供了一种cpu资源的绑定方法、装置、存储介质及电子装置,以至少解决相关技术中存在的容器cpu的分配方法单一从而导致资源利用率较低的问题。5.根据本发明的一个实施例,提供了一种cpu资源的绑定方法,包括:获取目标pod的目标信息,其中,所述目标pod中包括至少一个容器,所述目标信息中包括所述目标pod的cpu资源绑定策略;基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布,其中,所述目标拓扑分布中包括一个或多个目标拓扑节点,且每个所述目标拓扑节点中包括一个或多个cpu资源;基于所述目标拓扑分布对所述目标pod中的目标参数进行更新,并将所述目标pod绑定至所述目标拓扑节点上。6.在一个示例性实施例中,基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布包括:基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布,其中,所述numa节点信息包括用于指示服务器上的各个numa节点中包括的允许被独占的cpu资源的数量的指示信息。7.在一个示例性实施例中,在基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布之前,所述方法还包括:kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息;所述kubelet将所述numa节点信息上报至所述目标数据库中。8.在一个示例性实施例中,kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息包括:在确定已更新各个所述numa节点的节点状态的情况下,所述kubelet获取各个所述numa节点的cpu总资源信息及允许被分配的cpu资源信息,其中,所述numa节点信息还包括所述cpu总资源信息。9.在一个示例性实施例中,所述kubelet获取各个所述numa节点的cpu总资源信息包括:所述kubelet初始化所述服务器的capacity参数;所述kubelet将所述服务器的cpu内存资源更新至所述capacity参数中;在确定开启cpu管理器的情况下,所述kubelet获取所述服务器的第一numa拓扑,其中,所述第一numa拓扑用于指示所述服务器中所包括的各个所述numa节点的分布;所述kubelet基于所述第一numa拓扑将各个所述numa节点中所包括的cpu拓扑更新至所述capacity参数中,以得到各个所述numa节点的所述cpu总资源信息。10.在一个示例性实施例中,所述kubelet获取各个所述numa节点的允许被分配的cpu资源信息包括:所述kubelet初始化所述服务器的allocatable参数;所述kubelet将所述服务器的允许被使用的cpu内存资源更新至所述allocatable参数中;在确定开启所述cpu管理器的情况下,所述kubelet基于所述第一numa拓扑确定各个所述numa节点的预留cpu信息,其中,所述预留cpu信息用于指示各个所述numa节点所预留的cpu个数;所述kubelet基于所述capacity参数及所述预留cpu信息,更新所述allocatable参数,以得到各个所述numa节点的所述允许被分配的cpu资源信息。11.在一个示例性实施例中,基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布包括:获取预选节点信息,其中,所述预选节点信息用于指示所述capacity参数及所述allocatable参数中所包括的满足预设条件的节点信息;基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果,其中,所述调度结果包括所述目标拓扑分布信息。12.在一个示例性实施例中,在基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果之后,所述方法还包括:将所述目标拓扑分布信息更新至所述目标pod的所述目标参数中;将所述目标pod的所述目标参数持久化至所述目标数据库中。13.在一个示例性实施例中,在将所述目标pod绑定至所述目标拓扑节点上之后,所述方法还包括:所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源。14.在一个示例性实施例中,所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源包括:所述kubelet基于所述调度结果以及所述cpu资源绑定策略为所述目标pod中包括的每个容器分配所述cpu资源。15.在一个示例性实施例中,在基于所述目标拓扑分布对所述目标pod中的目标参数进行更新之后,所述方法还包括:更新内部的节点缓存信息,以得到更新后的目标节点缓存信息,其中,所述目标节点缓存信息用于指示各个所述numa节点下一次允许被调度的资源信息。16.在一个示例性实施例中,更新内部的节点缓存信息,以得到更新后的目标节点缓存信息包括:在所述节点缓存信息的基础上扣除所述目标参数中所指示的所述目标拓扑节点的cpu资源,以得到所述更新后的目标节点缓存信息。17.在一个示例性实施例中,所述cpu资源绑定策略包括以下之一:cpu均匀分配在每个numa节点上的策略;cpu全部分配在单个所述numa节点上的策略;自动随机分配策略。18.根据本发明的另一个实施例,还提供了一种cpu资源的绑定装置,包括:获取模块,用于获取目标pod的目标信息,其中,所述目标pod中包括至少一个容器,所述目标信息中包括所述目标pod的cpu资源绑定策略;确定模块,用于基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布,其中,所述目标拓扑分布中包括一个或多个目标拓扑节点,且每个所述目标拓扑节点中包括一个或多个cpu资源;处理模块,用于基于所述目标拓扑分布对所述目标pod中的目标参数进行更新,并将所述目标pod绑定至所述目标拓扑节点上。19.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。20.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。21.通过本发明,通过获取目标pod的目标信息,其中,目标信息中包括目标pod的cpu资源绑定策略,再基于cpu资源绑定策略确定出目标pod所需要的cpu资源的目标拓扑分布,目标拓扑分布中包括目标拓扑节点及每个目标拓扑节点中包括的cpu资源,然后再基于cpu资源的目标拓扑分布对目标pod中的目标参数进行更新,并将目标pod绑定至目标拓扑节点上。实现了基于cpu资源绑定策略确定目标pod所需的cpu资源的目标拓扑分布以及将目标pod绑定至目标拓扑节点的目的,避免了相关技术中存在的仅单一地对所有节点的cpu资源进行随机调度而导致资源利用率低的问题,因此,解决了相关技术中存在的容器cpu的分配方法单一从而导致资源利用率较低的问题,达到了提高资源利用率的效果。附图说明22.图1是本发明实施例的cpu资源的绑定方法的移动终端硬件结构框图;23.图2是根据本发明实施例的cpu资源的绑定方法的流程图;24.图3是根据本发明具体实施例的cpu资源的分配方法的流程图;25.图4是根据本发明具体实施例的上报节点可独占cpu的整体流程图;26.图5是根据本发明具体实施例的获取capacity流程图;27.图6是根据本发明具体实施例的获取allocatable流程图;28.图7是根据本发明具体实施例的调度过程示意图;29.图8是根据本发明具体实施例的分配资源流程图;30.图9是根据本发明实施例的cpu资源的绑定装置的结构框图。具体实施方式31.下文中将参考附图并结合实施例来详细说明本发明的实施例。32.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。33.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的cpu资源的绑定方法的移动终端硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。34.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的cpu资源的绑定方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。35.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。36.在本实施例中提供了一种cpu资源的绑定方法,图2是根据本发明实施例的cpu资源的绑定方法的流程图,如图2所示,该流程包括如下步骤:37.步骤s202,获取目标pod的目标信息,其中,所述目标pod中包括至少一个容器,所述目标信息中包括所述目标pod的cpu资源绑定策略;38.步骤s204,基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布,其中,所述目标拓扑分布中包括一个或多个目标拓扑节点,且每个所述目标拓扑节点中包括一个或多个cpu资源;39.步骤s206,基于所述目标拓扑分布对所述目标pod中的目标参数进行更新,并将所述目标pod绑定至所述目标拓扑节点上。40.通过上述步骤,通过获取目标pod的目标信息,其中,目标信息中包括目标pod的cpu资源绑定策略,再基于cpu资源绑定策略确定出目标pod所需要的cpu资源的目标拓扑分布,目标拓扑分布中包括目标拓扑节点及每个目标拓扑节点中包括的cpu资源,然后再基于cpu资源的目标拓扑分布对目标pod中的目标参数进行更新,并将目标pod绑定至目标拓扑节点上。实现了基于cpu资源绑定策略确定目标pod所需的cpu资源的目标拓扑分布以及将目标pod绑定至目标拓扑节点的目的,避免了相关技术中存在的仅单一地对所有节点的cpu资源进行随机调度而导致资源利用率低的问题,因此,解决了相关技术中存在的容器cpu的分配方法单一从而导致资源利用率较低的问题,达到了提高资源利用率的效果。41.其中,上述步骤的执行主体可以为容器管理工具,或容器管理软件,例如,kubernetes管理工具,或者kubernetes管理工具中的调度器,扩展调度器等,或者为配置在存储设备上的具备人机交互能力的处理器,或者为具备类似处理能力的处理设备或处理单元等,但不限于此。下面以kubernetes执行上述操作为例(仅是一种示例性说明,在实际操作中还可以是其他的设备或模块来执行上述操作)进行说明:42.在上述实施例中,通过kubernetes中的调度器获取目标pod的目标信息,目标pod中包括至少一个容器,目标信息中包括目标pod的cpu资源绑定策略,例如,目标信息中包括每个容器的名称,容器需要占用的cpu数量,容器所需内存及目标pod的cpu资源绑定策略等信息,在实际应用中,可由用户通过helm调用apiserver以创建目标pod,并设置cpu资源绑定策略,然后由apiserver将包含目标pod的cpu资源绑定策略的目标信息写入数据库,如etcd,即apiserver作为kubernetes与用户交互的组件;kubernetes中的扩展调度器基于cpu资源绑定策略确定目标pod所需要的cpu资源的目标拓扑分布,扩展调度器是在原调度器基础上开发的扩展接口程序,目标拓扑分布中包括一个或多个目标拓扑节点,且每个目标拓扑节点中包括一个或多个cpu资源,在实际应用中,扩展调度器可根据cpu资源绑定策略选择最优的节点以及最优的cpu分布;然后调度器基于上述目标拓扑分布对目标pod中的目标参数进行更新,例如,将调度出来的cpu拓扑分布更新到目标pod的request和limit中,并将目标pod绑定至目标拓扑节点上,节点可以是某个物理服务器的具体某个numa节点,可选地,调度器还可基于cpu拓扑分布扣除调度器内部的节点缓存资源,即对调度器内的节点缓存资源进行更新,以更新各个numa节点中可被独占的cpu资源信息,以用于下一次的调度。通过本实施例,实现了基于cpu资源绑定策略确定目标pod所需的cpu资源的目标拓扑分布以及将目标pod绑定至目标拓扑节点的目的,避免了相关技术中存在的仅单一地对所有节点的cpu资源进行随机调度而导致资源利用率低的问题,因此,解决了相关技术中存在的容器cpu的分配方法单一从而导致资源利用率较低的问题,达到了提高资源利用率的效果。43.在一个可选的实施例中,基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布包括:基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布,其中,所述numa节点信息包括用于指示服务器上的各个numa节点中包括的允许被独占的cpu资源的数量的指示信息。在实际应用中,可由kubelet先获取numa节点信息,由kubelet获取物理服务器上各个numa节点中允许被独占的cpu资源的数量,即各numa节点可独占的最大cpu个数,并将该信息上报到目标数据库中,调度器基于cpu资源绑定策略从目标数据库中所存储的numa节点信息中确定目标pod所需要的cpu资源的目标拓扑分布,即选择出满足上述cpu资源绑定策略的numa节点及numa节点的cpu分布,即通过感知numa拓扑以绑定cpu资源。通过本实施例,实现了基于cpu资源绑定策略确定cpu资源的目标拓扑分布的目的。44.在一个可选的实施例中,在基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布之前,所述方法还包括:kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息;所述kubelet将所述numa节点信息上报至所述目标数据库中。在本实施例中,kubelet获取服务器上的各个numa节点的numa节点信息,如numa节点可独占的最大cpu个数,并将numa节点信息上报到目标数据库中,在实际应用中,服务器可以是一个或多个,每个服务器上包括一个或多个numa节点,每个numa节点中包括一个或多个cpu资源。通过本实施例,实现了获取numa节点信息并将numa节点信息存储至数据库中的目的。45.在一个可选的实施例中,kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息包括:在确定已更新各个所述numa节点的节点状态的情况下,所述kubelet获取各个所述numa节点的cpu总资源信息及允许被分配的cpu资源信息,其中,所述numa节点信息还包括所述cpu总资源信息。在本实施例中,先更新各个numa节点的节点状态,kubelet再获取各个numa节点的cpu总资源信息及允许被分配的cpu资源信息(或称为cpu可分配资源信息),即每个numa节点上的cpu总数信息以及每个numa节点上的允许被独占或被分配的cpu数量信息。通过本实施例,实现了获取numa节点的总cpu资源信息和允许被分配的cpu资源信息的目的。46.在一个可选的实施例中,所述kubelet获取各个所述numa节点的cpu总资源信息包括:所述kubelet初始化所述服务器的capacity参数;所述kubelet将所述服务器的cpu内存资源更新至所述capacity参数中;在确定开启cpu管理器的情况下,所述kubelet获取所述服务器的第一numa拓扑,其中,所述第一numa拓扑用于指示所述服务器中所包括的各个所述numa节点的分布;所述kubelet基于所述第一numa拓扑将各个所述numa节点中所包括的cpu拓扑更新至所述capacity参数中,以得到各个所述numa节点的所述cpu总资源信息。在本实施例中,先初始化capacity参数,再将服务器的cpu内存资源更新到capacity参数中,然后kubelet判断是否开启cpu管理(或cpu-manager),在确定开启cpu管理器的情况下,获取服务器的第一numa拓扑,即服务器中所包括的各个numa节点分布,然后再基于第一numa拓扑将各个numa节点中所包括的cpu拓扑更新至capacity参数中,即将各个numa节点中所包括的cpu总资源信息更新到capacity参数中,而相关技术中仅将服务器的cpu内存资源更新到capacity参数中,而无法实现将各个numa节点中所包括的cpu拓扑更新至capacity参数中。通过本实施例,实现了将各个numa节点的cpu总资源信息更新至capacity参数中的目的。47.在一个可选的实施例中,所述kubelet获取各个所述numa节点的允许被分配的cpu资源信息包括:所述kubelet初始化所述服务器的allocatable参数;所述kubelet将所述服务器的允许被使用的cpu内存资源更新至所述allocatable参数中;在确定开启所述cpu管理器的情况下,所述kubelet基于所述第一numa拓扑确定各个所述numa节点的预留cpu信息,其中,所述预留cpu信息用于指示各个所述numa节点所预留的cpu个数;所述kubelet基于所述capacity参数及所述预留cpu信息,更新所述allocatable参数,以得到各个所述numa节点的所述允许被分配的cpu资源信息。在本实施例中,kubelet将服务器的cpu内存资源更新到allocatable参数中,然后kubelet判断是否开启cpu管理(或cpu-manager),在确定开启cpu管理器的情况下,获取服务器的第一numa拓扑,即服务器中所包括的各个numa节点分布,然后再基于第一numa拓扑确定各个numa节点的预留cpu信息,即各个numa节点为系统预留的cpu个数,预留cpu信息用于指示numa节点中不被分配的cpu资源信息,然后,kubelet基于capacity参数及预留cpu信息,更新allocatable参数,即可得到各个numa节点的允许被分配的cpu资源信息。而相关技术中仅将服务器的可被分配的cpu资源更新到allocatable参数中,而无法实现将各个numa节点中允许被分配的cpu资源信息更新至allocatable参数中。通过本实施例,实现了将各个numa节点的可被分配的cpu资源信息更新至allocatable参数中的目的。48.在一个可选的实施例中,基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布包括:获取预选节点信息,其中,所述预选节点信息用于指示所述capacity参数及所述allocatable参数中所包括的满足预设条件的节点信息;基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果,其中,所述调度结果包括所述目标拓扑分布信息。在本实施例中,先获取预选节点信息,例如,用户设置目标pod时开启了独占cpu的选项,此时,可根据目标pod开启独占cpu,过滤选择出capacity参数及allocatable参数中带有numacpu信息的所有节点,即选择出预选节点,然后,再基于预先设置的cpu资源绑定策略从上述预选节点中确定出调度结果,即根据cpu资源绑定策略,对上述预选节点进一步过滤,以过滤出符合绑定策略的节点,或称为优选出的节点,该调度结果中包括目标拓扑分布信息,即pod的目标拓扑节点及cpu拓扑分布信息,例如,cpu资源绑定策略为均匀分配,容器cpu总数为4个,节点总共2个numa节点,则调度结果为2个容器cpu在numa0上,2个容器cpu在numa1上。通过本实施例,实现了调度出最优的numa节点及节点中cpu分布的目的,即实现了基于cpu资源绑定策略确定调度结果的目的。49.在一个可选的实施例中,在基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果之后,所述方法还包括:将所述目标拓扑分布信息更新至所述目标pod的所述目标参数中;将所述目标pod的所述目标参数持久化至所述目标数据库中。在本实施例中,在确定出调度结果之后,将pod的目标拓扑分布信息更新到pod的resource中,例如,将pod的cpu拓扑更新到pod的request和limit中,这样,便于调度器中缓存资源的预分配,在并发调度时可达到资源一致性的效果,也可实现提高并发场景下的调度效率的效果,再将pod的cpu拓扑持久化到目标数据库中,即扩展调度器将节点numa的调度结果更新到目标数据库中,这样可以让用户后续kubelet创建容器时使用;在实际应用中,如果基于调度结果pod绑定主机失败时,则扩展调度器将清除掉目标数据库中numa节点调度结果。通过本实施例,实现了对调度结果进行持久化的目的,同时可实现为后续创建容器提供便利的效果。50.在一个可选的实施例中,在将所述目标pod绑定至所述目标拓扑节点上之后,所述方法还包括:所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源。在本实施例中,在将pod绑定到目标拓扑节点上之后,即绑定到扩展调度器选择出来的节点上之后,kubelet基于调度结果为pod中所包括的容器分配cpu资源,在实际应用中,kubelet在为容器分配cpu资源时,先检查一下容器是否开启了独占cpu的功能,在确定开了独占cpu功能后,基于调度结果为pod中的容器分配cpu资源,这样即可启动容器。通过本实施例,实现了为容器分配cpu资源的目的。51.在一个可选的实施例中,所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源包括:所述kubelet基于所述调度结果以及所述cpu资源绑定策略为所述目标pod中包括的每个容器分配所述cpu资源。在本实施例中,kubelet基于调度结果以及cpu资源绑定策略为目标pod中包括的每个容器分配cpu资源,例如,cpu资源绑定策略为均匀分配,容器cpu总数为4个,总共2个numa节点,分别为numa0节点和numa1节点,则调度结果为2个容器cpu在numa0上,2个容器cpu在numa1上。通过本实施例,实现了基于调度结果及cpu资源绑定策略为容器分配cpu资源的目的。52.在一个可选的实施例中,在基于所述目标拓扑分布对所述目标pod中的目标参数进行更新之后,所述方法还包括:更新内部的节点缓存信息,以得到更新后的目标节点缓存信息,其中,所述目标节点缓存信息用于指示各个所述numa节点下一次允许被调度的资源信息。在本实施例中,在对目标pod中的目标参数进行更新之后,调度器更新内部的节点缓存信息,节点缓存信息用于指示各numa节点允许被分配的资源信息,即调度器在每次调度之后都对内部的节点缓存信息进行更新,以得到更新后的目标节点缓存信息,为下一次调度提供参考信息,这样便于调度器中缓存资源的预分配,在并发调度时可达到资源一致性的效果。通过本实施例,实现了对节点缓存信息进行及时更新的目的,达到对调度器中缓存资源的预分配的效果。53.在一个可选的实施例中,更新内部的节点缓存信息,以得到更新后的目标节点缓存信息包括:在所述节点缓存信息的基础上扣除所述目标参数中所指示的所述目标拓扑节点的cpu资源,以得到所述更新后的目标节点缓存信息。在本实施例中,在当前次调度之后,可在调度器内所保存的当前目标节点缓存信息的基础上扣除当前次调度中需占用的各个numa节点的cpu资源信息,以得到更新后的目标节点缓存信息,即得到各个numa节点的缓存信息,即各个numa节点下一次允许被调度的资源信息,这样便于调度器中缓存资源的预分配,可为下一次的调度提供便利。通过本实施例,实现了对调度器内的节点缓存信息进行及时更新的目的。54.在一个可选的实施例中,所述cpu资源绑定策略包括以下之一:cpu均匀分配在每个numa节点上的策略;cpu全部分配在单个所述numa节点上的策略;自动随机分配策略。在本实施例中,用户在创建pod时可设置的cpu资源绑定策略可以是cpu均匀分配在每个numa节点上的策略,或cpu全部分配在单个numa节点上的策略,或自动随机分配策略。通过本实施例,实现了基于不同的绑定策略动态地将容器cpu分配到不同的numa节点上的目的。55.显然,上述所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。下面结合实施例对本发明进行具体说明。56.图3是根据本发明具体实施例的cpu资源的分配方法的流程图,如图3所示,该流程包括以下步骤:57.s302,kubelet获取物理服务器上各numa节点可独占的最大cpu个数,并将该信息上报到etcd(对应于前述目标数据库);58.s304,pod(对应于前述pod)设置cpu绑定策略(对应于前述cpu资源绑定策略),通过helm调用apiserver(如图3中的kube-apiserver),下发创建pod;59.s306,apiserver将pod设置的cpu绑定策略写入etcd;60.s308,scheduler(如图3中的kube-scheduler,或称为调度器)获取pod信息(对应于前述目标pod的目标信息),包含pod设置的cpu绑定策略;61.s310,根据cpu绑定策略,通过cpu拓扑扩展调度器(如图3中的extendscheduler)选择最优的节点,以及最优的cpu分布,该步骤s310为通过扩展调度器进行调度;62.s312,将调度出来的cpu拓扑分布更新到pod的request和limit,扣除调度器内的节点缓存资源,将pod绑定到扩展调度器选择出来的节点上;63.s314,在扩展调度器选择的节点上,kubelet获取到pod的信息,包含pod调度的cpu拓扑分布(对应于前述目标拓扑分布);64.s316,kubelet根据pod调度的cpu拓扑分布计算出需要绑定的物理cpu,调用docker拉起容器。65.在上述步骤s302中,kubelet上报节点可独占cpu的过程可如图4所示,图4是根据本发明具体实施例的上报节点可独占cpu的整体流程图,该流程包括如下步骤:66.s402,更新节点状态;67.s404,获取节点的capacity参数;68.s406,获取节点的allocatable参数;69.s408,上报节点状态。70.需要说明的是,上述步骤s402-s408作为定期任务执行。对于计算密集型容器的管理,通常包括一个或多个服务器,每个服务器包括一个或多个节点,每个节点包括一个或多个cpu,因此,需要更新节点的状态。71.上述步骤s404中获取节点的capacity参数的过程可如图5所示,图5是根据本发明具体实施例的获取capacity流程图,该流程包括以下步骤:72.s502,初始化capacity参数;73.s504,将cpu内存资源更新到capacity,需要说明的是,此时更新到capacity中的cpu内存资源为物理服务器的总资源,并不包括各个numa节点中的cpu资源信息;74.s506,判断是否开启cpu管理(或称为cpu-manager);75.s508,在判断结果为已开启cpu管理的情况下,获取服务器numa拓扑(对应于前述第一numa拓扑),即获取服务器中所包括的各个numa节点的拓扑分布;76.在判断结果为未开启cpu管理的情况下,直接进入步骤s512,即结束流程;77.s510,cpu拓扑更新到capacity中,即将各个numa节点中的cpu信息更新到capacity参数中,即可得到各个numa节点的cpu总资源信息;78.s512,结束。79.上述步骤s406中获取节点的allocatable参数的过程可如图6所示,图6是根据本发明具体实施例的获取allocatable流程图,该流程包括以下步骤:80.s602,初始化allocatable参数;81.s604,将cpu内存资源更新到allocatable,需要说明的是,此时更新到allocatable中的cpu内存资源为物理服务器的可分配资源,并不包括各个numa节点中的cpu可分配资源信息;82.s606,判断是否开启cpu管理;83.s608,在判断结果为已开启cpu管理的情况下,获取预留cpu的numa拓扑,即获取节点中有预留cpu的numa节点的拓扑分布;84.在判断结果为未开启cpu管理的情况下,直接进入步骤s612,即结束流程;85.s610,在上述步骤s510所得到的更新后的capacity参数基础上,扣除预留的cpu信息,对allocatable参数进行更新,以得到可分配的cpu资源信息;86.s612,结束。87.结合图4-图6中的步骤可知,kubelet上报可独占cpu的前提条件是开启cpu-manager,设置相关策略cpu-manager-policy为static,节点总资源capacity中保存每个numa的cpu总数,节点可用资源allocatable中保存每个numa的cpu可分配总数,allocatable中numa的可分配cpu总数=capacity中numa的cpu总数–numa预留的cpu个数;88.在kubelet不开启cpu-manager或者cpu-manager-policy为none时,节点的capacity和allocatable中不上报每个numa的cpu总数和cpu可分配总数,也就意味着该节点不支持容器独占cpu。89.在上述实施例中,扩展调度器的调度过程如图7所示,图7是根据本发明具体实施例的调度过程示意图,该过程包括以下步骤:90.s702,开始调度一个pod,根据pod是否开启独占cpu的功能以及cpu分配策略(对应于前述cpu资源绑定策略),选择出符合要求的节点,节点选择过程如下;91.s704,调用cpu拓扑扩展插件获取预选节点,根据容器开启独占cpu,过滤选择出capacity和allocatable中带有numacpu信息的所有节点;92.s706,预选出节点上cpu分布,并存入缓存中;93.s708,节点优选后将预选出cpu拓扑更新到pod的resource中,根据容器cpu分配策略,对在步骤s704中过滤出来的节点进一步过滤,过滤出符合分配策略的节点,计算并缓存节点为容器分配的各numacpu占用信息,例如容器cpu总数为4,cpu分配策略为均匀分配,节点总共两个numa节点,那么调度结果:2个容器cpu在numa0上,2个容器cpu在numa1上;94.节点及相应numa调度完成后,需要将numa的调度结果更新到pod的resource中,便于调度器中缓存资源的预分配,达到并发调度时资源的一致性;95.s710,调用扩展插件把pod的cpu拓扑持久化到etcd中,扩展调度器将节点numa的调度结果更新到etcd中,用户后续kubelet创建容器时使用;96.s712,判断pod是否绑定成功;97.s714,在判断结果为未绑定成功的情况下,调用扩展插件从etcd中删除pod的cpu拓扑持久化,即在pod绑定主机失败时,扩展调度器清除etcd中节点numa的调度结果;98.s716,在步骤s712的判断结果为绑定成功的情况下,可结束调度过程。99.图8是根据本发明具体实施例的分配资源流程图,如图8所示,该流程包括以下步骤:100.s802,开始分配资源;101.s804,判断是否开启独占cpu功能,kubelet在为容器分配cpu资源时,先检查一下容器(或pod)是否开启了独占cpu的功能;102.s806,在步骤s804的判断结果为否的情况下,即容器(或pod)未开启独占cpu功能的情况下,直接启动容器,将所有非独占cpu集合作为容器的cpu资源;103.在步骤s804的判断结果为已开启独占cpu功能的情况下,根据扩展调度器的调度结果选择独占的cpu集合,选择独占cpu集合的过程如下:104.s808,根据调度器为容器分配的numacpu得到1个hint,即选择唯一一个与调度结果匹配的topologyhint;105.s810,根据容器分配的numacpu选取物理cpu集合,根据调度的各numacpu的分配情况,在所有非独占cpu中选择符合要求的cpu。例如2个容器cpu分配到numa0上,在numa0上所有非独占cpu中选择2个cpu进行独占,可选地,选择numacpu的优先级可按照:cpu位于同一个socket》cpu位于同一个core》cpu位于不同core;106.s812,从非独占cpu集合中扣除上述步骤s810选择出来的独占cpu,让独占的cpu不再被非独占cpu的容器使用;107.s814,启动容器,cpu资源设置为步骤s810选择出来的独占cpu。108.在上述实施例中,容器(或pod)开启独占cpu的功能,是在pod中配置的,即创建pod时配置开启独占cpu的选项,则容器在调度时会选择在支持容器独占cpu的那些节点上运行容器。容器开启独占cpu选项后,支持设置不同的cpu分配策略,策略分为:①自动随机分配;②cpu均匀分配在每个numa上;③cpu全部分配在单个numa上。109.与相关技术相比,本发明实施例可达到的效果有:(1)节点上不事先划分独占cpu和非独占cpu,初始所有cpu都是非独占的。只有在需要独占cpu的容器被创建时,将独占cpu从非独占cpu集合中剥离出来,当独占cpu的容器被删除时,将独占的cpu归还到非独占cpu的集合中去,可实现最大化节点cpu资源的利用率;(2)根据cpu分布策略,感知节点各numa剩余可独占的cpu,计算出每个numa分配的cpu数量,从而将容器的独占cpu动态分布到节点的不同numa上,即达到允许将容器独占的cpu动态分布到节点的不同numa上的效果;(3)通过扩展调度器将numa的调度结果作为pod的资源计入到调度器的资源缓存中,起到资源预分配和预分配回收的功能,从而提供并发场景下的调度效率,即对于并发场景下,可达到增加调度效率的效果。110.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。111.在本实施例中还提供了一种cpu资源的绑定装置,图9是根据本发明实施例的cpu资源的绑定装置的结构框图,如图9所示,该装置包括:112.获取模块902,用于获取目标pod的目标信息,其中,所述目标pod中包括至少一个容器,所述目标信息中包括所述目标pod的cpu资源绑定策略;113.确定模块904,用于基于所述cpu资源绑定策略确定所述目标pod所需要的cpu资源的目标拓扑分布,其中,所述目标拓扑分布中包括一个或多个目标拓扑节点,且每个所述目标拓扑节点中包括一个或多个cpu资源;114.处理模块906,用于基于所述目标拓扑分布对所述目标pod中的目标参数进行更新,并将所述目标pod绑定至所述目标拓扑节点上。115.在一个可选的实施例中,上述确定模块904包括:第一确定单元,用于基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布,其中,所述numa节点信息包括用于指示服务器上的各个numa节点中包括的允许被独占的cpu资源的数量的指示信息。116.在一个可选的实施例中,在基于所述cpu资源绑定策略从目标数据库中存储的numa节点信息中确定出所述目标拓扑分布之前,kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息;所述kubelet将所述numa节点信息上报至所述目标数据库中。117.在一个可选的实施例中,上述kubelet获取所述服务器上的各个所述numa节点的所述numa节点信息包括:在确定已更新各个所述numa节点的节点状态的情况下,所述kubelet获取各个所述numa节点的cpu总资源信息及允许被分配的cpu资源信息,其中,所述numa节点信息还包括所述cpu总资源信息。118.在一个可选的实施例中,所述kubelet获取各个所述numa节点的cpu总资源信息包括:所述kubelet初始化所述服务器的capacity参数;所述kubelet将所述服务器的cpu内存资源更新至所述capacity参数中;在确定开启cpu管理器的情况下,所述kubelet获取所述服务器的第一numa拓扑,其中,所述第一numa拓扑用于指示所述服务器中所包括的各个所述numa节点的分布;所述kubelet基于所述第一numa拓扑将各个所述numa节点中所包括的cpu拓扑更新至所述capacity参数中,以得到各个所述numa节点的所述cpu总资源信息。119.在一个可选的实施例中,所述kubelet获取各个所述numa节点的允许被分配的cpu资源信息包括:所述kubelet初始化所述服务器的allocatable参数;所述kubelet将所述服务器的允许被使用的cpu内存资源更新至所述allocatable参数中;在确定开启所述cpu管理器的情况下,所述kubelet基于所述第一numa拓扑确定各个所述numa节点的预留cpu信息,其中,所述预留cpu信息用于指示各个所述numa节点所预留的cpu个数;所述kubelet基于所述capacity参数及所述预留cpu信息,更新所述allocatable参数,以得到各个所述numa节点的所述允许被分配的cpu资源信息。120.在一个可选的实施例中,上述确定模块904包括:第一获取单元,用于获取预选节点信息,其中,所述预选节点信息用于指示所述capacity参数及所述allocatable参数中所包括的满足预设条件的节点信息;第二确定单元,用于基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果,其中,所述调度结果包括所述目标拓扑分布信息。121.在一个可选的实施例中,上述装置还包括:第一更新模块,用于在基于所述cpu资源绑定策略从所述预选节点信息中确定出调度结果之后,将所述目标拓扑分布信息更新至所述目标pod的所述目标参数中;持久化模块,用于将所述目标pod的所述目标参数持久化至所述目标数据库中。122.在一个可选的实施例中,在将所述目标pod绑定至所述目标拓扑节点上之后,所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源。123.在一个可选的实施例中,所述kubelet基于所述调度结果为所述目标pod中包括的每个容器分配所述cpu资源包括:所述kubelet基于所述调度结果以及所述cpu资源绑定策略为所述目标pod中包括的每个容器分配所述cpu资源。124.在一个可选的实施例中,上述装置还包括:第二更新模块,用于在基于所述目标拓扑分布对所述目标pod中的目标参数进行更新之后,更新内部的节点缓存信息,以得到更新后的目标节点缓存信息,其中,所述目标节点缓存信息用于指示各个所述numa节点下一次允许被调度的资源信息。125.在一个可选的实施例中,上述第二更新模块包括:扣除单元,用于在所述节点缓存信息的基础上扣除所述目标参数中所指示的所述目标拓扑节点的cpu资源,以得到所述更新后的目标节点缓存信息。126.在一个可选的实施例中,上述cpu资源绑定策略包括以下之一:cpu均匀分配在每个numa节点上的策略;cpu全部分配在单个所述numa节点上的策略;自动随机分配策略。127.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。128.本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。129.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。130.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。131.在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。132.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。133.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。134.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献