CN116560861B - 资源分配方法、装置、电子设备、存储介质及节点 - Google Patents
资源分配方法、装置、电子设备、存储介质及节点 Download PDFInfo
- Publication number
- CN116560861B CN116560861B CN202310847526.2A CN202310847526A CN116560861B CN 116560861 B CN116560861 B CN 116560861B CN 202310847526 A CN202310847526 A CN 202310847526A CN 116560861 B CN116560861 B CN 116560861B
- Authority
- CN
- China
- Prior art keywords
- resource
- mode
- allocated
- gpu
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013468 resource allocation Methods 0.000 title claims abstract description 165
- 238000000034 method Methods 0.000 title claims abstract description 110
- 230000008447 perception Effects 0.000 claims description 45
- 230000002159 abnormal effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 101000957299 Homo sapiens Coronin-7 Proteins 0.000 description 5
- 101000800546 Homo sapiens Transcription factor 21 Proteins 0.000 description 5
- 102100033121 Transcription factor 21 Human genes 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101100407705 Zinnia violacea POD2 gene Proteins 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种资源分配方法、装置、电子设备、存储介质及节点,涉及资源分配技术领域。该方法应用于Kubernetes集群中的单个节点,单个节点上部署有第一设备插件和第二设备插件,第一设备插件和第二设备插件分别用于分配不同使用模式的资源;该方法包括:在第一设备插件接收到第一待分配资源标识的情况下,通过第一设备插件,将第一待分配资源标识对应的资源以第一设备插件对应的使用模式进行分配;在第二设备插件接收到第二待分配资源标识的情况下,通过第二设备插件,将第二待分配资源标识对应的资源以第二设备插件对应的使用模式进行分配,从而实现了在Kubernetes集群的单个节点中进行多种使用模式的资源灵活分配。
Description
技术领域
本发明涉及资源分配技术领域,尤其涉及一种资源分配方法、装置、电子设备、存储介质及节点。
背景技术
Kubernetes是一种轻便的可扩展的开源平台,用于管理容器化应用和服务。在Kubernetes集群(简称:K8s集群)中,可以通过Kubernetes集群中的设备插件(即DevicePlugin)为Kubernetes集群中的节点添加设备资源。在容器化应用程序中,这些设备资源指的是CPU(Central Processing Unit,中央处理器)、内存、存储和网络,以及更特定的设备,如GPU(Graphics Processing Unit,图形处理器)、FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)、TPU(Tensor Processing Unit,张量处理器)等。设备插件Device Plugin可以使容器能够获得这些资源,并将它们用于运行应用程序。
其中,同一设备资源(如GPU、FPGA等设备资源)存在不同的使用模式,一般来说,不同使用模式的设备资源需要通过不同的设备插件进行分配。然而,在目前Kubernetes集群的单个节点中,仅支持同种使用模式的同一资源分配,无法支持同一资源多种使用模式的灵活分配。因此,如何在Kubernetes集群的单个节点中进行多种使用模式的资源灵活分配,是本发明亟待解决的技术问题。
发明内容
本发明实施例提供一种资源分配方法、装置、电子设备、存储介质及节点,以实现在Kubernetes集群的单个节点中进行多种使用模式的资源灵活分配。
本发明实施例第一方面提供了一种资源分配方法,应用于Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述方法包括:
在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配;
在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配。
本发明实施例第二方面提供了一种资源分配装置,应用于Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述装置包括:
第一分配模块,用于在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配;
第二分配模块,用于在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配。
本发明实施例第三方面提供一种节点,所述节点为Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述节点执行时实现如本发明实施例第一方面所述的资源分配方法中的步骤。
本发明实施例第四方面提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如本发明实施例第一方面所述的资源分配方法的步骤。
本发明实施例第五方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例第一方面所述的资源分配方法的步骤。
本发明实施例提供的一种资源分配方法,应用于Kubernetes集群中的单个节点,单个节点上部署有第一设备插件和第二设备插件,第一设备插件和第二设备插件分别用于分配不同使用模式的资源;该方法包括:在第一设备插件接收到第一待分配资源标识的情况下,通过第一设备插件,将第一待分配资源标识对应的资源以第一设备插件对应的使用模式进行分配;在第二设备插件接收到第二待分配资源标识的情况下,通过第二设备插件,将第二待分配资源标识对应的资源以第二设备插件对应的使用模式进行分配。通过本发明实施例的资源分配方法,在Kubernetes集群中的单个节点上融合部署第一设备插件和第二设备插件,分别通过两个设备插件以多种不同的使用模式进行同一资源的分配,从而在单个节点上灵活分配不同使用模式的资源,实现根据实际需要通过不同的使用模式精准调度资源算力的技术效果。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例示出的一种资源分配方法的步骤流程图;
图2是本发明一实施例示出的一种资源分配方法对比示意图;
图3是本发明一实施例示出的一种GPU资源分配方法的流程示意图;
图4是本发明另一实施例示出的一种GPU资源分配方法的流程示意图;
图5是本发明一实施例提供的资源分配装置的结构框图;
图6是本发明一实施例示出的一种电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1是本发明一实施例示出的一种资源分配方法的步骤流程图。本实施例提供的资源分配方法可应用于Kubernetes集群中的单个节点。其中,本实施例的单个节点上部署有第一设备插件和第二设备插件,第一设备插件和第二设备插件分别用于分配不同使用模式的资源。如图1所示,本实施例的资源分配方法可以包括以下步骤:
步骤S11:在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配。
本实施例的单个节点可以通过第一设备插件和第二设备插件进行同一资源的多种使用模式的分配。具体的,在单个节点通过第一设备插件接收到第一待分配资源标识的情况下,可以通过第一设备插件,将该第一待分配资源标识对应的资源以第一设备插件对应的使用模式进行资源分配。
其中,第一待分配资源标识为第一设备插件接收到的待分配资源标识,也即该第一待分配资源标识为初步选定由第一设备插件进行资源分配的资源标识,如待分配资源标识可以是待分配资源ID。
步骤S12:在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配。
本实施例中,在单个节点通过第二设备插件接收到第二待分配资源标识的情况下,可以通过第二设备插件,将该第二待分配资源标识对应的资源以第二设备插件对应的使用模式进行资源分配。
其中,第二待分配资源标识为第二设备插件接收到的待分配资源标识,也即该第二待分配资源标识为初步选定由第二设备插件进行资源分配的资源标识。
需要说明的是,在本实施例中,可以先执行步骤S11后执行步骤S12,也可以先执行步骤S12后执行步骤S11,还可以同时执行步骤S11和步骤S12,本实施例对此不作任何限制。也就是说,本实施例可以在单个节点中同时或先后进行多种不同使用模式的资源分配,从而实现在同节点上灵活使用多种不同使用模式的资源。
在本实施例中,可以通过第一设备插件和第二设备插件分别进行不同使用模式的同种资源分配,以通过在单个节点上联合部署不同的设备插件,分别通过不同设备插件实现多种不同使用模式的资源分配,解决了相关技术中Kubernetes集群中的单个节点仅支持同种使用模式的资源分配,若需进行不同使用模式的资源分配需要手动更换节点上部署的设备插件的技术问题,从而本实施例不仅降低了节点的维护成本,还能够在单个节点上灵活分配不同使用模式的资源,实现了根据实际需求通过不同的使用模式精准调度资源算力的技术效果。
考虑到在Kubernetes集群的单个节点上通过部署多个设备插件进行不同使用模式的资源分配,可能存在不同的设备插件将节点上的同一资源进行多次分配、导致资源分配冲突的问题。基于此,结合以上实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,第一设备插件可以支持两种使用模式的资源分配,第一设备插件用于分配第一使用模式或第二使用模式的资源,第二设备插件可以支持单种使用模式的资源分配,第二设备插件用于分配第三使用模式的资源;上述步骤S11中的“通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配”具体可以包括步骤S21至步骤S23:
步骤S21:通过所述第一设备插件调用第三感知组件,获取第三使用模式占用的资源信息。
设备插件记录有自身进行资源分配的情况,但无法获知其他设备插件进行资源分配的情况,因此本实施例在第一设备插件中嵌入有第三感知组件,第三感知组件运行在第一设备插件中,用于获取第二设备插件分配的第三使用模式占用的资源信息。因此,本实施例在单个节点通过第一设备插件接收到第一待分配资源标识的情况下,可以先将第一待分配资源标识与第一设备插件自身的资源分配情况进行匹配,确定该第一待分配资源标识对应的资源是否被以第一使用模式或第二使用模式的方式进行资源分配且被占用,在未被占用的情况下,可以通过调用第三感知组件,获取到第三使用模式占用的资源信息。
步骤S22:通过所述第一设备插件确定所述第一待分配资源标识与所述第三使用模式占用的资源信息的匹配关系。
本实施例中,在获取到第三使用模式占用的资源信息之后,可以通过第一设备插件,确定接收到的第一待分配资源标识与第三使用模式占用的资源信息之间的匹配关系,具体的,可以是确定第一待分配资源标识是否存在于第三使用模式占用的资源信息之中。
步骤S23:在所述第一待分配资源标识不在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
本实施例中,在第一设备插件确定出第一待分配资源标识不在第三使用模式占用的资源信息之中的情况下,可以通过第一设备插件,将第一待分配资源标识对应的资源以第一使用模式或第二使用模式进行资源分配。
需要说明的是,本实施例可以同时执行或先后执行将第一待分配资源标识与第一设备插件自身的资源分配情况进行匹配,以及,将第一待分配资源标识与第三使用模式占用的资源信息进行匹配;其中,先后执行时的执行顺序不做限定,本实施例对此不作任何限制。
在本实施例中,可以通过在第一设备插件中部署第三感知组件以获取被第二设备插件分配的、第三使用模式占用的资源信息,从而在第一设备插件进行资源分配时,根据第三使用模式占用的资源信息以及第一待分配资源标识确定第一待分配资源标识对应的资源是否已被占用,从而在未被占用的情况下再进行第一待分配资源标识对应资源的分配,如此不仅可以在单个节点上实现多种不同使用模式的资源分配,还可以在多种使用模式资源分配的基础上,避免不同设备插件将同一资源进行多次分配、导致的资源分配冲突问题。
结合以上实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,上述步骤S12中的“通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配”具体可以包括步骤S31至步骤S34:
步骤S31:通过所述第二设备插件调用第二感知组件,获取第二使用模式占用的资源信息。
本实施例在第二设备插件中嵌入有第一感知组件和第二感知组件。其中,第一感知组件和第二感知组件运行在第二设备插件中,第一感知组件用于获取第一设备插件分配的第一使用模式占用的资源信息,第二感知组件用于获取第一设备插件分配的第二使用模式占用的资源信息。因此,本实施例在单个节点通过第二设备插件接收到第二待分配资源标识的情况下,可以先将第二待分配资源标识与第二设备插件自身的资源分配情况进行匹配,确定该第二待分配资源标识对应的资源是否被以第三使用模式的方式进行资源分配且被占用,在未被占用的情况下,可以通过调用第二感知组件,获取到第二使用模式占用的资源信息。
步骤S32:通过所述第二设备插件调用第一感知组件,获取第一使用模式占用的资源信息。
本实施例中,在单个节点通过第二设备插件接收到第二待分配资源标识的情况下,还可以通过调用第一感知组件,获取到第一使用模式占用的资源信息。
需要说明的是,在本实施例中,可以先执行步骤S31后执行步骤S32,也可以先执行步骤S32后执行步骤S31,还可以同时执行步骤S31和步骤S32,本实施例对此不作任何限制。
步骤S33:通过所述第二设备插件确定所述第二待分配资源标识与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系。
本实施例中,在获取到第一使用模式占用的资源信息和第二使用模式占用的资源信息之后,可以通过第二设备插件,确定接收到的第二待分配资源标识与第一使用模式占用的资源信息和第二使用模式占用的资源信息之间的匹配关系。具体的,可以是确定第一待分配资源标识是否存在于第一使用模式占用的资源信息和/或第二使用模式占用的资源信息之中。
步骤S34:在所述第二待分配资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第三使用模式进行分配。
本实施例中,在第二设备插件确定出第二待分配资源标识不在第一使用模式占用的资源信息之中且不在第二使用模式占用的资源信息之中的情况下,可以通过第二设备插件,将第二待分配资源标识对应的资源以第三使用模式进行资源分配。
需要说明的是,本实施例可以同时执行或先后执行将第二待分配资源标识与第二设备插件自身的资源分配情况进行匹配,以及,将第二待分配资源标识与第一使用模式占用的资源信息和第二使用模式占用的资源信息进行匹配;其中,先后执行时的执行顺序不做限定,本实施例对此不作任何限制。
在本实施例中,还可以通过在第二设备插件中分别部署第一感知组件和第二感知组件以获取被第二设备插件分配的、第一使用模式占用的资源信息以及第二使用模式占用的资源信息,从而在第二设备插件进行资源分配时,根据第一使用模式占用的资源信息、第二使用模式占用的资源信息以及第二待分配资源标识确定第二待分配资源标识对应的资源是否已被占用,从而在未被占用的情况下再进行第二待分配资源标识对应资源的分配,如此不仅可以在单个节点上实现同一资源的多种不同使用模式的资源分配,还可以在实现多种使用模式资源分配的基础上,避免不同设备插件将同一资源进行多次分配导致的资源分配冲突问题。此外,本实施例通过对设备插件的改造(即通过在设备插件中部署感知组件以感知其他设备插件的资源分配占用情况)即可达成在实现多种使用模式资源分配的基础上,避免不同设备插件将同一资源进行多次分配导致的资源分配冲突的技术效果,不需要侵入业务流程,实现了用户使用时无感知,不同使用模式切换分配时无感知的技术效果。
在一种可选实施方式中,如图2所示,图2是本发明一实施例示出的一种资源分配方法对比示意图。其中,图2中的“tencent.com/vcuda-core: 50”和“tencent.com/vcuda-mem:32”为POD向vcadu设备插件申请GPU时携带的指令;“tencent.com/vcuda-core:50”表征要申请一个GPU卡算力的50%;“tencent.com/vcuda-mem:32”表征要申请一张显卡8GB(1vcuda-mem表示 1/4GB显存)的显存;图2中的“nvidia.com/gpu:1”为POD向nvidia设备插件申请GPU时携带的指令,其表征指定需要1个GPU。在本实施例中,在进行两个设备插件(vcadu设备插件和nvidia设备插件)融合部署在同一个节点上进行GPU资源分配时,可能出现同一资源设备被不同设备插件进行多次分配的情况。如图2中的左图所示,假设一台组件上存在两张GPU A100,其ID分别为A和B。POD1向vcadu设备插件申请GPU时,vcadu设备插件即vcadu-device-plugin将GPUA分配给POD1之后,以及,在POD2向nvidia设备插件即nvidia-device-plugin申请GPU时,nvidia设备插件由于不清楚GPUA是否已被其他设备插件进行分配占用,于是将GPUA再次分配给POD2,从而导致同一设备资源GPUA被多次分配造成资源分配冲突错误的情况。
基于此,图2中的右图对资源分配方法做了改进,在进行两个设备插件(vcadu设备插件和nvidia设备插件)融合部署在同一个节点上进行GPU资源分配时,通过在两个设备插件上部署能够感知其他设备插件分配占用的资源情况的感知组件,从而根据GPU资源的实际分配情况,在分配GPU时避开已被其他设备插件分配的GPU。具体的,如图2中的右图所示,假设一台组件上存在两张GPU A100,其ID分别为A和B。POD1向vcadu设备插件申请GPU时,vcadu设备插件即vcadu-device-plugin将GPUA分配给POD1之后,在POD2向nvidia设备插件即nvidia-device-plugin申请GPU时,nvidia设备可以通过其上运行的感知组件感知到GPUA已被vcadu设备插件进行分配占用,于是在GPU分配时避开GPUA,将GPUB分配给POD2,从而避免了同一设备资源GPUA被多次分配造成资源分配冲突错误的情况。
如此,本实施例可以通过设备插件上部署的感知组件,在分配设备时让设备插件之间相互感知到对方的设备分配情况,实现在分配GPU时避开已被其他设备插件分配的GPU,从而实现不同的设备插件之间可以感知互相设备的使用情况的技术效果。
结合以上实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。该方法中,进行分配的资源为GPU资源。在使用GPU来加速容器应用程序时,需要将GPU添加到Kubernetes集群中,并使Kubernetes能够使用它们。为此,需要使用设备插件,通过向Kubernetes API提供GPU硬件资源,将GPU添加到Kubernetes 集群中,并使运行在容器中的应用程序能够访问这些 GPU硬件资源。这样,可以在容器中运行需要大量计算资源的应用程序,如AI、机器学习和深度学习模型的训练等。
本实施例中,第一使用模式为GPU的独占模式,第二使用模式为GPU的MIG模式,第三使用模式为GPU的共享模式。第二使用模式占用的资源信息为MIG模式占用的资源信息,第三使用模式占用的资源信息为共享模式占用的资源信息,第一使用模式占用的资源信息为独占模式占用的资源信息。其中,独占模式指的是一个容器化应用程序单独占用一张GPU卡,该GPU卡的全部算力和显存都由该容器化应用程序所在的POD使用;MIG模式:MIG(Multi-Instance GPU)是一种在NVIDIA GPU(英伟达GPU)上实现的虚拟化技术,它允许单个GPU被划分为多个小型GPU实例,以提高资源利用率和灵活性。通过使用MIG技术,可以将单个GPU拆分为多个较小的、独立的GPU实例,每个实例都可与不同的任务关联,从而实现更高的并发性和资源利用率;共享模式指多个容器化应用程序同时使用一张GPU卡,可以在容器化应用程序通过POD申请GPU时指定要使用的GPU算力百分比和GPU显存,多个POD按照申请的算力和显存共同使用该GPU。
在本实施例中,由第一设备插件分配独占模式或MIG模式的GPU资源,由第二设备插件分配共享模式的GPU资源,由于第一设备插件可以用于进行MIG模式GPU资源的分配,但分配后GPU资源MIG模式的开启由其他插件执行,因此,第一设备插件并不能感知到当下MIG模式占用的GPU资源,因此,在通过第一设备插件进行第一待分配资源标识的资源分配时,除了通过第三感知组件获取共享模式占用的GPU信息外,还需要通过第二感知组件获取MIG模式占用的GPU信息。
因此,在本实施例方法中,除了上述步骤之外,还可以包括步骤S21.5,上述步骤S22具体可以包括步骤S41,上述步骤S23具体可以包括步骤S42:
步骤S21.5:通过所述第一设备插件调用所述第二感知组件,获取MIG模式占用的资源信息。
本实施例在第一设备插件中还嵌入有第二感知组件,第二感知组件用于获取正在被MIG模式占用的资源信息,即用于获取MIG模式占用的资源信息。因此,本实施例在单个节点通过第一设备插件接收到第一待分配资源标识的情况下,还可以通过调用第二感知组件,获取到MIG模式占用的资源信息。
需要说明的是,在本实施例中,可以先执行步骤S21后执行步骤S21.5,也可以先执行步骤S21.5后执行步骤S21,还可以同时执行步骤S21和步骤S21.5,本实施例对此不作任何限制。
步骤S41:通过所述第一设备插件确定所述第一待分配资源标识与共享模式占用的资源信息和所述MIG模式占用的资源信息的匹配关系。
本实施例中,在获取到MIG模式占用的资源信息和共享模式占用的资源信息之后,可以通过第一设备插件,确定接收到的第一待分配资源标识与MIG模式占用的资源信息和共享模式占用的资源信息之间的匹配关系,具体的,可以是确定第一待分配资源标识是否存在于MIG模式占用的资源信息和/或共享模式占用的资源信息之中。
步骤S42:在所述第一待分配资源标识不在所述共享模式占用的资源信息和所述MIG模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述独占模式或所述MIG模式进行分配。
本实施例中,在第一设备插件确定出第一待分配资源标识不在MIG模式占用的资源信息之中且不在共享模式占用的资源信息之中的情况下,可以通过第一设备插件,将第一待分配资源标识对应的资源以独占模式或MIG模式进行资源分配。
当Kubernetes集群中的单个节点上存在多张GPU卡时,用户可能需要对不同的GPU卡使用不同的使用模式:例如,可能需要同时运行AI模型训练,需要独占一张GPU卡;可能需要一张GPU卡供多个小组或个人开发测试AI模型,需要共享模式灵活的对GPU进行算力拆分;还可能需要对多个AI模型进行精准的性能测试,需要MIG模式提供多个算力与显存精准隔离的子GPU。因此,在本实施例中,针对 Kubernetes集群中单个节点上的GPU资源,可以通过不同设备插件的融合部署实现单个节点同时使用GPU独占模式、共享模式和MIG模式,做到了可以在同节点灵活使用独占模式,MIG模式和共享模式等多种模式GPU,解决了以往同节点的GPU仅支持同种使用模式,无法根据实际需要精准调度算力的问题。
其中,结合以上任一实施例,在一实施方式中,所述第一设备插件为nvidia设备插件,所述第二设备插件为vcuda设备插件。其中,nvidia设备插件即为Nvidia-device-plugin,其是一个由Nvidia提供的设备插件,用于将 Nvidia GPU硬件资源添加到Kubernetes集群的节点上。该设备插件的主要来源厂商是Nvidia,它旨在支持 Nvidia GPU硬件资源在Kubernetes上的高效使用。除了支持传统的GPU设备外,Nvidia-device-plugin还支持使用MIG模式来提供更细粒度的GPU分区,从而使Kubernetes上的容器能够更加高效地使用GPU资源。MIG 允许将一个 Nvidia GPU划分为多个相互独立的 GPU实例,每个实例可以被分配给一个或多个容器,并且可以调整每个实例的大小以满足应用程序的需求,这提供了更灵活的GPU资源管理和更高的资源利用率;nvidia-device-plugin支持独占模式和MIG模式。
vcuda设备插件即为vcuda device-plugin,其是一个腾讯开源的设备插件,其主要作用也是将GPU硬件资源添加到Kubernetes集群的节点上,相比于nvidia-device-plugin,vcuda device-plugin支持共享模式,即支持同时将一块GPU分配给多个容器化应用程序。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,上述步骤S21.5中的“调用所述第二感知组件,获取MIG模式占用的资源信息”具体可以包括步骤S51至步骤S54:
步骤S51:调用所述第二感知组件,获取所述单个节点上的所有GPU信息。
本实施例中,第二感知组件可以是MIG模式感知组件,可以通过MIG模式感知组件获得MIG模式已分配的资源设备。基于此,本实施例可以先通过第一设备插件或第二设备插件调用第二感知组件,获取到单个节点上的所有GPU信息。
步骤S52:通过所述第二感知组件,通过go-nvml库依次判断所述所有GPU信息中的各个GPU是否开启所述MIG模式。
本实施例中,在获取到单个节点上的所有GPU信息之后,可以通过第二感知组件,通过go-nvml库依次判断所有GPU信息中的各个GPU是否开启了MIG模式。其中,MIG模式是由英伟达推出的GPU虚拟化技术,由GPU硬件支持,可以通过go-nvml库对MIG进行感知,go-nvml库是英伟达nVidia开源的一个与nvidia GPU进行交互的库,第二感知组件通过使用此库即可感知到MIG模式的开启和关闭。
步骤S53:通过所述第二感知组件,将开启所述MIG模式的GPU对应的GPU信息存入MIG模式占用的GPU列表中。
本实施例中,通过第二感知组件,在所有GPU信息中确定出开启MIG模式的GPU对应的GPU信息后,可以将开启MIG模式的GPU对应的GPU信息存入MIG模式占用的GPU列表中,该MIG模式占用的GPU列表中的所有GPU均为当前正在开启MIG模式的GPU。
步骤S54:根据所述第二感知组件返回的所述MIG模式占用的GPU列表,获取所述MIG模式占用的资源信息。
本实施例中,第二感知组件在通过所有GPU信息判断得到MIG模式占用的GPU列表之后,向第一设备插件或第二设备插件返回MIG模式占用的GPU列表,使得第一设备插件或第二设备插件根据MIG模式占用的GPU列表,获取到MIG模式占用的资源信息,以用于后续的资源分配。
在本实施例中,基于第二感知组件通过go-nvml库即可精准获取到单个节点中当前被MIG模式占用的所有GPU信息,从而不仅使得第二设备插件可以精准感知到第一设备插件的MIG模式分配情况,还能使得第一设备插件精准自我感知其进行MIG模式分配后的MIG模式GPU的运行情况,从而在两个设备插件进行资源分配时能够避开已经被MIG模式占用的GPU资源,避免同一GPU资源的多次分配,造成资源分配冲突。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,上述步骤S21中的“调用第三感知组件,获取第三使用模式占用的资源信息”具体可以包括步骤S61至步骤S63:
步骤S61:调用所述第三感知组件,获取所述单个节点上的所有POD信息。
本实施例中,第三感知组件可以是vCuda共享模式感知组件,可以通过vCuda共享模式感知组件获得第二设备插件通过共享模式已分配的资源设备。由于第二设备插件通过共享模式进行资源分配时,在确定了待分配的POD和为POD分配的GPU卡之后,会将分配的GPU信息记录在待分配的POD的注释annotation中。如:第二设备插件为vCuda设备插件,POD的注释annotation为:
1.// vCuda为POD标记的annotation
2.tencent.com/predicate-gpu-idx-0: "2"
3.tencent.com/predicate-gpu-idx-1: "3"
其中,idx-0中的0指的是pod内容器container的顺序编号,value中的2指的是主机上GPU的索引编号。
基于此,本实施例可以先通过第一设备插件调用第三感知组件,先获取到单个节点上的所有POD信息,其中POD信息中包括POD的注释信息。
步骤S62:通过所述第三感知组件,根据所述所有POD信息中每个POD信息的注释信息,获取所述注释信息中的正在被共享使用的GPU信息,并将所述正在被共享使用的GPU信息存入共享模式占用的GPU列表中。
本实施例中,在获取到单个节点上的所有POD信息之后,可以通过第三感知组件,根据所有POD信息中每个POD信息的POD注释信息,来获取被第二设备插件进行共享模式GPU分配的分配情况。可以根据每个POD信息的POD注释信息,确定出POD正在共享使用的GPU信息,从而将正在被共享使用的GPU信息存入共享模式占用的GPU列表中,该共享模式占用的GPU列表中的所有GPU均为当前正被共享模式占用的GPU。
步骤S63:根据所述第三感知组件返回的所述共享模式占用的GPU列表,获取所述共享模式占用的资源信息。
本实施例中,第三感知组件在通过所有POD的注释信息判断得到共享模式占用的GPU列表之后,向第一设备插件返回共享模式占用的GPU列表,使得第一设备插件可以根据共享模式占用的GPU列表,感知到第二设备插件所分配的共享模式占用的资源信息,以在后续资源分配时排除已被第二设备插件分配的GPU。
在本实施例中,通过调用第三感知组件通过单个节点上所有POD的注释annotation获取被第二设备插件共享模式占用的GPU数据,以使得第一设备插件可以精准感知到第二设备插件的共享模式分配情况,从而在设备插件进行资源分配时能够避开已经被共享模式占用的GPU资源,避免同一GPU资源的多次分配,造成资源分配冲突。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,上述步骤S32中的“调用第一感知组件,获取第一使用模式占用的资源信息”具体可以包括步骤S71和步骤S72:
步骤S71:调用所述第一感知组件,通过kubelet组件中的内部检查点获取正在被独占使用的资源信息,所述kubelet组件部署在所述单个节点上。
本实施例中,第一感知组件可以是独占模式感知组件,其运行在第二设备插件中。当第二设备插件分配资源时,可以调用独占模式感知组件获得独占模式已分配的资源设备。
在本实施例中,单个节点上还部署有kubelet组件,kubelet组件中的内部检查点kubelet_internal_checkpoint是Kubernetes集群中kubelet组件的一个内部检查点,它用于存储kubelet组件在运行过程中所需的一些关键信息,如容器状态、资源使用情况等。当kubelet组件发生重启或崩溃时,可以借助内部检查点kubelet_internal_checkpoint中的信息来快速恢复原来的状态,以避免数据丢失或资源浪费等问题。其中kubelet组件中的内部检查点存储的关键信息包含了被独占分配资源的POD ID,容器标识ContainerName,以及kubelet组件向设备插件请求独占模式的资源标识DeviceIDs等。例如:
1. // kubelet_internal_checkpoint为容器分配的设备信息
2. {
3. "PodUID":"fc17fb5e-394e-11eb-8b01-6c92bf66acae",
4. "ContainerName":"xiaoxi-test-rew",
5. "ResourceName":"nvidia.com/gpu",
6. "DeviceIDs":[
7. "GPU-00f2b915-9faa-053e-fa1a-6ff9472e3f39s"
8. ],
9."AllocResp":"CkIKFk5WSURJQV9WSVNJQkxFX0RFVklDRVMSKEdQVS0zYzRlMTMy..."
10. }
因此,可以通过第二设备插件调用第一感知组件,通过kubelet组件中的内部检查点获取正在被独占使用的资源信息。
步骤S72:将所述正在被独占使用的资源信息作为独占模式占用的资源信息。
本实施例中,在获取到正在被独占使用的资源信息之后,即可将该正在被独占使用的资源信息作为独占模式占用的资源信息,以使得第二设备插件可以感知到第一设备插件所分配的独占模式占用的资源信息,以在后续资源分配时排除已被第一设备插件进行独占分配的GPU。
在本实施例中,通过调用第一感知组件通过kubelet组件中的内部检查点获取被第一设备插件独占模式占用的GPU数据,以使得第二设备插件可以精准感知到第一设备插件的独占模式分配情况,从而在设备插件进行资源分配时能够避开已经被独占模式占用的GPU资源,避免同一GPU资源的多次分配,造成资源分配冲突。
考虑到kubelet组件中的内部检查点kubelet_internal_checkpoint会存在延迟更新的问题,只有在为POD分配资源设备时才会将kubelet内存中的信息落盘,即当一个NVIDIA GPU Pod是非正常、停止或被删除时,这个关键文件里依然保存该POD的独占GPU占用信息。基于此,结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,所述正在被独占使用的资源信息至少包括:独占使用的GPU标识、独占使用的GPU对应的容器信息。本实施例,除上述步骤之外,还可以包括步骤S81和步骤S82,且上述步骤S72具体可以包括步骤S83:
步骤S81:通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定独占使用的GPU对应的容器状态。
本实施例中,POD中可以包括一个或多个容器,因此,可以通过确定容器状态来间接确定POD状态,一般来说,POD中容器状态不正常,那么容器所在的POD状态也会不正常。因此,本实施例可以通过调用第一感知组件,根据正在被独占使用的资源信息中的独占使用的GPU对应的容器信息,确定该独占使用的GPU对应的容器状态。
步骤S82:通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态为非正常、停止或不存在的资源信息,得到独占模式占用的资源子信息。
本实施例中,在通过第一感知组件,感知到独占使用的GPU对应的容器状态为非正常Failed、停止或不存在的情况下,可以在正在被独占使用的资源信息中,剔除掉容器状态为非正常、停止或不存在的资源所对应的资源信息,从而最终获取到从正在被独占使用的资源信息中剔除掉所有容器状态为非正常、停止或不存在的资源信息后,所得到的独占模式占用的资源子信息。
步骤S83:将所述独占模式占用的资源子信息作为所述独占模式占用的资源信息。
本实施例中,在获取到独占模式占用的资源子信息之后,即可将该独占模式占用的资源子信息作为独占模式占用的资源信息,以使得第二设备插件可以感知到第一设备插件所分配的独占模式占用的资源信息,以在后续资源分配时排除已被第一设备插件进行独占分配的GPU。
在本实施例中,基于第一感知组件通过kubelet组件中的内部检查点获取正在被独占模式使用的GPU信息,并通过排除容器状态为非正常,停止或已不存在的GPU进而获取到精确的独占模式占用GPU数据。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,所述正在被独占使用的资源信息还包括:独占使用的GPU对应的POD信息;上述步骤S81具体可以包括步骤S91,上述步骤S82具体可以包括步骤S92:
步骤S91:通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定所述独占使用的GPU对应的容器状态,以及,根据所述独占使用的GPU对应的POD信息确定独占使用的GPU对应的POD状态。
本实施例中,需要对独占使用的GPU对应的POD状态进行确认,如果POD状态为非正常,停止或已不存在,则需要剔除此POD占用的GPU信息。具体的,可以通过第一感知组件,根据正在被独占使用的资源信息中的独占使用的GPU对应的容器信息确定独占使用的GPU对应的容器状态,以及,根据正在被独占使用的资源信息中的独占使用的GPU对应的POD信息确定独占使用的GPU对应的POD状态。
步骤S92:通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态和/或所述POD状态为非正常、停止或不存在的资源信息,得到所述独占模式占用的资源子信息。
本实施例中,在通过第一感知组件,感知到独占使用的GPU对应的容器状态和/或POD状态为非正常Failed、停止或不存在的情况下,可以在正在被独占使用的资源信息中,剔除掉容器状态和/或POD状态为非正常、停止或不存在的资源所对应的资源信息,从而最终获取到从正在被独占使用的资源信息中剔除掉所有容器状态和/或POD状态为非正常、停止或不存在的资源信息后,所得到的独占模式占用的资源子信息。
在本实施例中,针对正在被独占使用的资源信息中的容器信息和POD信息进行容器状态和POD状态的双重判断,从而只要有容器和POD中的一者为不正常、停止或不存在的情况及进行对应GPU信息的剔除,从而获取到更加精确的独占模式占用GPU数据。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,除上述步骤之外,还可以包括步骤S101和步骤S102:
步骤S101:在所述第一待分配资源标识在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,从所述第一设备插件对应的未分配资源列表中选择一个资源标识进行与所述第三使用模式占用的资源信息的匹配关系的确定,直至存在一个第一目标资源标识不在所述第三使用模式占用的资源信息中。
本实施例中,在第一设备插件确定出第一待分配资源标识在第三使用模式占用的资源信息之中的情况下,可以通过第一设备插件,从第一设备插件对应的未分配资源列表中随机选择一个资源标识进行与第三使用模式占用的资源信息的匹配关系的确定,直至存在一个第一目标资源标识不在第三使用模式占用的资源信息中。
其中,第一设备插件对应的未分配资源列表为第一设备插件自身维护的一个自身并未分配过的所在单个节点上的GPU标识列表。第一目标资源标识为第一设备插件对应的未分配资源列表中的一个,不在第三使用模式占用的资源信息的资源标识,其可用于进行第一使用模式或第二使用模式的资源分配。
步骤S102:通过所述第一设备插件,将所述第一目标资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
本实施例中,在通过第一设备插件查找到第一目标资源标识之后,可以通过第一设备插件,将第一目标资源标识对应的资源以第一使用模式或第二使用模式进行分配。
在本实施例中,在确定第一待分配资源标识已经被第三使用模式占用的情况下,可以从第一设备插件自身未分配的资源标识列表中选择一个资源标识并再次进行判断,直到该资源标识未被占用,从而实现资源的精准分配,避免产生资源分配冲突的情况。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,除上述步骤之外,还可以包括步骤S111:
步骤S111:在不存在所述第一目标资源标识的情况下,通过所述第一设备插件返回报错信息。
本实施例中,在遍历第一设备插件对应的未分配资源列表后,未查找到不在第三使用模式占用的资源信息的资源标识,即在不存在第一目标资源标识的情况下,可以通过第一设备插件返回报错信息,以提示不能第一设备插件无法进行本次资源分配。
结合以上实施方式,在一种实施方式中,在所述资源为GPU资源,所述第一使用模式为独占模式,所述第二使用模式为MIG模式,所述第三使用模式为共享模式的情况下,可以是在第一待分配资源标识在MIG模式占用的资源信息和/或共享模式占用的资源信息中的情况下,通过第一设备插件,从第一设备插件对应的未分配资源列表中选择一个资源标识进行与MIG模式占用的资源信息和共享模式占用的资源信的匹配关系的确定,直至存在一个第一目标资源标识不在MIG模式占用的资源信息和共享模式占用的资源信中,从而通过第一设备插件,将第一目标资源标识对应的资源以独占模式或MIG模式进行分配。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,除上述步骤之外,还可以包括步骤S121和步骤S122:
步骤S121:在所述第二待分配资源标识在所述第一使用模式占用的资源信息和/或所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,从所述第二设备插件对应的未分配资源列表中选择一个资源标识进行与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系的确定,直至存在一个第二目标资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中。
本实施例中,在第二设备插件确定出第二待分配资源标识在第一使用模式占用的资源信息和/或第二使用模式占用的资源信息之中的情况下,可以通过第二设备插件,从第二设备插件对应的未分配资源列表中随机选择一个资源标识进行与第一使用模式占用的资源信息和第二使用模式占用的资源信息的匹配关系的确定,直至存在一个第二目标资源标识不在第一使用模式占用的资源信息和/或第二使用模式占用的资源信息中。
其中,第二设备插件对应的未分配资源列表为第二设备插件自身维护的一个自身并未分配过的所在单个节点上的GPU标识列表。第二目标资源标识为第二设备插件对应的未分配资源列表中的一个,不在第一使用模式占用的资源信息和第二使用模式占用的资源信息中的资源标识,其可用于进行第三使用模式的资源分配。
步骤S122:通过所述第二设备插件,将所述第二目标资源标识对应的资源以所述第三使用模式进行分配。
本实施例中,在通过第二设备插件查找到第二目标资源标识之后,可以通过第二设备插件,将第二目标资源标识对应的资源以第三使用模式进行分配。
在本实施例中,在确定第二待分配资源标识已经被第一使用模式占用和/或被第二使用模式占用的情况下,可以从第二设备插件自身未分配的资源标识列表中选择一个资源标识并再次进行判断,直到该资源标识未被占用,从而实现资源的精准分配,避免产生资源分配冲突的情况。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,除上述步骤之外,还可以包括步骤S131:
步骤S131:在不存在所述第二目标资源标识的情况下,通过所述第二设备插件返回报错信息。
本实施例中,在遍历第二设备插件对应的未分配资源列表后,未查找到不在第一使用模式占用的资源信息和/或第二使用模式占用的资源信息的资源标识,即在不存在第二目标资源标识的情况下,可以通过第二设备插件返回报错信息,以提示不能第二设备插件无法进行本次资源分配。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,所述单个节点上部署有kubelet组件,除上述步骤之外,还可以包括步骤S141和步骤S142,且上述步骤S42中的“将所述第一待分配资源标识对应的资源以所述独占模式或所述MIG模式进行分配”具体可以包括步骤S143:
步骤S141:通过所述kubelet组件接收所述单个节点中POD发送的资源分配请求。
本实施例中,单个节点上部署有kubelet组件,kubelet组件是Kubernetes集群中的主要组件之一,其负责管理集群中的节点并确保其正常运行。它是在每个节点上运行的代理程序,与Kubernetes API服务器通信并执行一系列任务,包括启动、停止和监视容器。
容器化应用程序,即为容器中运行的应用程序,一个POD可以有多个容器,当容器化应用程序需要申请GPU资源时,可以以POD为单位进行GPU资源的申请。具体可以是,POD发送资源分配请求,listAndWatch接口将主机(单个节点)上的所有GPU设备信息转化为device ID列表上报给kubelet组件。持续监测主机上的设备状态,在设备状态发生变化,如设备不可用时,将不可用的device ID上报给kubelet组件,kubelet组件据此将使用不健康设备的POD删除,触发POD重建并重新调度。当有容器化应用程序申请使用GPU时,由kubelet组件从剩余的设备(GPU)中挑选出一个设备,将device ID通过Allocate()函数发送给设备插件。设备插件被call后,根据请求的device id,检查设备是否可用。
基于此,本实施例在容器化应用程序需要申请GPU资源时,可以是通过单个节点上的POD向单个节点上部署的kubelet组件发送资源分配请求,从而通过kubelet组件接收单个节点中POD发送的资源分配请求。
步骤S142:在所述kubelet组件确定所述资源分配请求为独占模式资源分配请求或MIG模式资源分配请求的情况下,通过所述kubelet组件,将所述第一待分配资源标识发送给所述第一设备插件。
本实施例中,kubelet组件在接收到单个节点中POD发送的资源分配请求之后,可以通过解析该资源分配请求,确定该资源分配请求是独占模式资源分配请求、MIG模式资源分配请求、还是共享模式资源分配请求。在kubelet组件确定出接收到的资源分配请求为独占模式资源分配请求或MIG模式资源分配请求的情况下,可以通过kubelet组件,将第一待分配资源标识发送给第一设备插件。
步骤S143:根据所述第一待分配资源标识,以所述独占模式或所述MIG模式将所述第一待分配资源标识对应的资源分配给发送所述独占模式资源分配请求或所述MIG模式资源分配请求的POD。
本实施例中,可以通过第一设备插件,根据第一待分配资源标识,以独占模式或MIG模式将第一待分配资源标识对应的资源分配给发送独占模式资源分配请求或MIG模式资源分配请求的POD。其中,在资源分配请求是独占模式资源分配请求的情况下,可以通过第一设备插件,根据第一待分配资源标识,以独占模式将第一待分配资源标识对应的资源分配给发送独占模式资源分配请求的POD;在资源分配请求是MIG模式资源分配请求的情况下,可以通过第一设备插件,根据第一待分配资源标识,以MIG模式将第一待分配资源标识对应的资源分配给发送MIG模式资源分配请求的POD。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,除上述步骤之外,还可以包括步骤S151,且上述步骤S34中的“将所述第二待分配资源标识对应的资源以所述第三使用模式进行分配”具体可以包括步骤S152:
步骤S151:在所述kubelet组件确定所述资源分配请求为共享模式资源分配请求的情况下,通过所述kubelet组件,将所述第二待分配资源标识发送给所述第二设备插件。
本实施例中,在kubelet组件确定出接收到的资源分配请求为共享模式资源分配请求的情况下,可以通过kubelet组件,将第二待分配资源标识发送给第二设备插件。
步骤S152:根据所述第二待分配资源标识,以所述共享模式将所述第二待分配资源标识对应的资源分配给发送所述共享模式资源分配请求的POD。
本实施例中,可以通过第二设备插件,根据第二待分配资源标识,以共享模式将第二待分配资源标识对应的资源分配给发送共享模式资源分配请求的POD。
结合以上任一实施例,在一实施方式中,本发明实施例还提供了一种资源分配方法。在该方法中,所述资源可以为FPGA资源,FPGA资源也具有多种使用模式。在一种实施方式中,所述第一使用模式、所述第二使用模式和所述第三使用模式可以分别为所述FPGA资源对应的三种使用模式。
在一种可选实施方式中,如图3所示,图3是本发明一实施例示出的一种GPU资源分配方法的流程示意图。在图3中,“nvidia.com/gpu:1”为POD向nvidia设备插件申请GPU时携带的指令,其表征指定需要1个GPU。参见图3可知,在nvidia设备插件中嵌入有vcuda共享模式感知组件和MIG模式感知组件,当有POD或容器申请GPU资源时,可以通过创建deploy调度到节点,kubelet组件接收到资源分配请求时,可以根据解析出资源分配请求为独占模式资源分配请求或MIG模式资源分配请求的情况下,kubelet组件可以通过Allocate()函数向nvidia设备插件发送待分配的资源ID(deviceID),nvidia设备插件接收到资源ID之后,可以判断kubelet组件发送的资源ID是否被占用:具体通过其上嵌入的MIG模式感知组件返回的开启MIG模式的GPU信息,根据开启MIG模式的GPU信息与资源ID确定该资源ID对应的GPU是否被MIG模式占用;以及,通过其上嵌入的vCuda共享模式感知组件返回的vCuda共享模式占用的GPU信息,根据vCuda共享模式占用的GPU信息与资源ID确定该资源ID对应的GPU是否被共享模式占用。若已占用从自身未分配的资源ID列表中选择一个GPU并再次进行判断,直到该GPU未被占用;如果不存在未被占用的GPU,则返回错误。在确定有一资源ID未被占用的情况下,根据分配的资源ID向kubelet组件返回对设备的相关配置,包括:环境Env、配置Mounts、设备Devices、注释Annotations等,具体的,可以是获取挂载目录等信息,并将资源ID等信息放在POD的注释信息Annotations,然后nvidia设备插件向kubelet组件返回设备信息、挂载目录和注释信息Annotations等,从而根据返回的这些信息创建deploy2,从而根据deploy2自动创建POD。
在一种可选实施方式中,如图4所示,图4是本发明另一种实施例示出的一种GPU资源分配方法的流程示意图。在图4中,“tencent.com/vcuda-core: 50”和“tencent.com/vcuda-mem:32”为POD向vcadu设备插件申请GPU时携带的指令;“tencent.com/vcuda-core:50”表征要申请一个GPU卡算力的50%;“tencent.com/vcuda-mem:32”表征要申请一张显卡8GB(1 vcuda-mem表示 1/4GB显存)的显存。参见图4可知,在vcuda设备插件中嵌入有独占模式感知组件和MIG模式感知组件,当有POD或容器申请GPU资源时,可以通过创建deploy调度到节点,kubelet组件接收到资源分配请求时,可以根据解析出资源分配请求为共享模式资源分配请求的情况下,kubelet组件可以通过Allocate()函数向vcuda设备插件发送待分配的资源ID(deviceID),vcuda设备插件接收到资源ID之后,可以判断kubelet组件发送的资源ID是否被占用:具体通过其上嵌入的MIG模式感知组件返回的开启MIG模式的GPU信息,根据开启MIG模式的GPU信息与资源ID确定该资源ID对应的GPU是否被MIG模式占用;以及,通过其上嵌入的独占模式感知组件返回的独占模式占用的GPU信息,根据独占模式占用的GPU信息与资源ID确定该资源ID对应的GPU是否被独占模式占用。若已占用从自身未分配的资源ID列表中选择一个GPU并再次进行判断,直到该GPU未被占用;如果不存在未被占用的GPU,则返回错误。在确定有一资源ID未被占用的情况下,根据分配的资源ID向kubelet组件返回对设备的相关配置,包括:环境Env、配置Mounts、设备Devices、注释Annotations等,具体的,可以是获取挂载目录等信息,并将资源ID等信息放在POD的注释信息Annotations,然后vcuda设备插件向kubelet组件返回设备信息、挂载目录和注释信息Annotations等,从而根据返回的这些信息创建deploy1,以根据deploy2自动创建POD1。
通过本实施例提出的GPU资源分配方法,可以在k8s系统中对nvidia设备插件和vcuda设备插件进行融合部署,通过在设备插件中嵌入感知组件感知彼此的GPU分配情况,避免了不同的设备插件将同一GPU资源设备多次分配,做到了可以在同节点为GPU灵活选用独占模式,MIG模式和共享模式等多种使用模式,做到了GPU算力、显存等资源的精准调控,在云服务厂商AI服务器等需要算力拆分的场景下具有重要意义。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于同一发明构思,本发明一实施例提供了一种资源分配装置500,应用于Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源。参考图5,图5是本发明一实施例提供的资源分配装置的结构框图。该资源分配装置500包括:
第一分配模块501,用于在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配;
第二分配模块502,用于在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配。
可选的,所述第一设备插件用于分配第一使用模式或第二使用模式的资源,所述第二设备插件用于分配第三使用模式的资源;所述第一分配模块501,包括:
第一感知子模块,用于通过所述第一设备插件调用第三感知组件,获取第三使用模式占用的资源信息;
第一匹配子模块,用于通过所述第一设备插件确定所述第一待分配资源标识与所述第三使用模式占用的资源信息的匹配关系;
第一分配子模块,用于在所述第一待分配资源标识不在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
可选的,所述通过所述第二设备插件,将第二分配模块502,包括:
第二感知子模块,用于通过所述第二设备插件调用第二感知组件,获取第二使用模式占用的资源信息;
第三感知子模块,用于通过所述第二设备插件调用第一感知组件,获取第一使用模式占用的资源信息;
第二匹配子模块,用于通过所述第二设备插件确定所述第二待分配资源标识与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系;
第二分配子模块,用于在所述第二待分配资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第三使用模式进行分配。
可选的,所述资源为GPU资源,所述第一使用模式为独占模式,所述第二使用模式为MIG模式,所述第三使用模式为共享模式;所述装置500还包括:
第四感知子模块,用于通过所述第一设备插件调用所述第二感知组件,获取MIG模式占用的资源信息;
所述第一匹配子模块,包括:
第一确定子模块,用于通过所述第一设备插件确定所述第一待分配资源标识与共享模式占用的资源信息和所述MIG模式占用的资源信息的匹配关系;
所述第一分配子模块,包括:
第三分配子模块,用于在所述第一待分配资源标识不在所述共享模式占用的资源信息和所述MIG模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述独占模式或所述MIG模式进行分配。
可选的,所述第四感知子模块,包括:
第一调用子模块,用于调用所述第二感知组件,获取所述单个节点上的所有GPU信息;
第一判断子模块,用于通过所述第二感知组件,通过go-nvml库依次判断所述所有GPU信息中的各个GPU是否开启所述MIG模式;
第一存储子模块,用于通过所述第二感知组件,将开启所述MIG模式的GPU对应的GPU信息存入MIG模式占用的GPU列表中;
第二确定子模块,用于根据所述第二感知组件返回的所述MIG模式占用的GPU列表,获取所述MIG模式占用的资源信息。
可选的,所述第一感知子模块,包括:
第二调用子模块,用于调用所述第三感知组件,获取所述单个节点上的所有POD信息;
第二存储子模块,用于通过所述第三感知组件,根据所述所有POD信息中每个POD信息的注释信息,获取所述注释信息中的正在被共享使用的GPU信息,并将所述正在被共享使用的GPU信息存入共享模式占用的GPU列表中;
第三确定子模块,用于根据所述第三感知组件返回的所述共享模式占用的GPU列表,获取所述共享模式占用的资源信息。
可选的,所述第三感知子模块,包括:
第三调用子模块,用于调用所述第一感知组件,通过kubelet组件中的内部检查点获取正在被独占使用的资源信息,所述kubelet组件部署在所述单个节点上;
第四确定子模块,用于将所述正在被独占使用的资源信息作为独占模式占用的资源信息。
可选的,所述正在被独占使用的资源信息至少包括:独占使用的GPU标识、独占使用的GPU对应的容器信息;所述装置500还包括:
第五确定子模块,用于通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定独占使用的GPU对应的容器状态;
第一剔除子模块,用于通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态为非正常、停止或不存在的资源信息,得到独占模式占用的资源子信息;
所述第四确定子模块,包括:
第六确定子模块,用于将所述独占模式占用的资源子信息作为所述独占模式占用的资源信息。
可选的,所述正在被独占使用的资源信息还包括:独占使用的GPU对应的POD信息;
所述第五确定子模块,包括:
第七确定子模块,用于通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定所述独占使用的GPU对应的容器状态,以及,根据所述独占使用的GPU对应的POD信息确定独占使用的GPU对应的POD状态;
所述第一剔除子模块,包括:
第二剔除子模块,用于通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态和/或所述POD状态为非正常、停止或不存在的资源信息,得到所述独占模式占用的资源子信息。
可选的,所述装置500还包括:
第八确定子模块,用于在所述第一待分配资源标识在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,从所述第一设备插件对应的未分配资源列表中选择一个资源标识进行与所述第三使用模式占用的资源信息的匹配关系的确定,直至存在一个第一目标资源标识不在所述第三使用模式占用的资源信息中;
第四分配子模块,用于通过所述第一设备插件,将所述第一目标资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
可选的,所述装置500还包括:
第一返回子模块,用于在不存在所述第一目标资源标识的情况下,通过所述第一设备插件返回报错信息。
可选的,所述装置500还包括:
第九确定子模块,用于在所述第二待分配资源标识在所述第一使用模式占用的资源信息和/或所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,从所述第二设备插件对应的未分配资源列表中选择一个资源标识进行与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系的确定,直至存在一个第二目标资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中;
第五分配子模块,用于通过所述第二设备插件,将所述第二目标资源标识对应的资源以所述第三使用模式进行分配。
可选的,所述装置500还包括:
第二返回子模块,用于在不存在所述第二目标资源标识的情况下,通过所述第二设备插件返回报错信息。
可选的,所述单个节点上部署有kubelet组件,所述装置500还包括:
第一发送子模块,用于通过所述kubelet组件接收所述单个节点中POD发送的资源分配请求;
第一分析子模块,用于在所述kubelet组件确定所述资源分配请求为独占模式资源分配请求或MIG模式资源分配请求的情况下,通过所述kubelet组件,将所述第一待分配资源标识发送给所述第一设备插件;
所述第三分配子模块,包括:
第六分配子模块,用于根据所述第一待分配资源标识,以所述独占模式或所述MIG模式将所述第一待分配资源标识对应的资源分配给发送所述独占模式资源分配请求或所述MIG模式资源分配请求的POD。
可选的,所述装置500还包括:
第二分析子模块,用于在所述kubelet组件确定所述资源分配请求为共享模式资源分配请求的情况下,通过所述kubelet组件,将所述第二待分配资源标识发送给所述第二设备插件;
所述第二分配子模块,包括:
第七分配子模块,用于根据所述第二待分配资源标识,以所述共享模式将所述第二待分配资源标识对应的资源分配给发送所述共享模式资源分配请求的POD。
可选的,所述第一设备插件为nvidia设备插件,所述第二设备插件为vcuda设备插件。
可选的,所述资源为FPGA资源。
基于同一发明构思,本发明另一实施例提供一种节点,该节点为Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述节点执行时实现如本发明上述任一实施例所述的资源分配方法中的步骤。
基于同一发明构思,本发明另一实施例提供一种电子设备600,如图6所示。图6是本发明一实施例示出的一种电子设备的示意图。该电子设备包括处理器601、存储器602及存储在存储器602上并可在处理器601上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明上述任一实施例所述的资源分配方法中的步骤。
基于同一发明构思,本发明另一实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如本发明上述任一实施例所述的资源分配方法中的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (19)
1.一种资源分配方法,其特征在于,应用于Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述方法包括:
在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配;
在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配;
在所述第一设备插件用于分配第一使用模式或第二使用模式的资源,所述第二设备插件用于分配第三使用模式的资源的情况下,所述通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配,包括:
通过所述第一设备插件调用第三感知组件,获取第三使用模式占用的资源信息;
通过所述第一设备插件确定所述第一待分配资源标识与所述第三使用模式占用的资源信息的匹配关系;
在所述第一待分配资源标识不在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
2.根据权利要求1所述的资源分配方法,其特征在于,所述通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配,包括:
通过所述第二设备插件调用第二感知组件,获取第二使用模式占用的资源信息;
通过所述第二设备插件调用第一感知组件,获取第一使用模式占用的资源信息;
通过所述第二设备插件确定所述第二待分配资源标识与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系;
在所述第二待分配资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第三使用模式进行分配。
3.根据权利要求2所述的资源分配方法,其特征在于,所述资源为GPU资源,所述第一使用模式为独占模式,所述第二使用模式为MIG模式,所述MIG模式为Multi-Instance GPU,是一种在NVIDIA GPU上实现的虚拟化技术,所述第三使用模式为共享模式;所述方法还包括:
通过所述第一设备插件调用所述第二感知组件,获取MIG模式占用的资源信息;
所述通过所述第一设备插件确定所述第一待分配资源标识与所述第三使用模式占用的资源信息的匹配关系,包括:
通过所述第一设备插件确定所述第一待分配资源标识与共享模式占用的资源信息和所述MIG模式占用的资源信息的匹配关系;
所述在所述第一待分配资源标识不在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配,包括:
在所述第一待分配资源标识不在所述共享模式占用的资源信息和所述MIG模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述独占模式或所述MIG模式进行分配。
4.根据权利要求3所述的资源分配方法,其特征在于,所述调用所述第二感知组件,获取MIG模式占用的资源信息,包括:
调用所述第二感知组件,获取所述单个节点上的所有GPU信息;
通过所述第二感知组件,通过go-nvml库依次判断所述所有GPU信息中的各个GPU是否开启所述MIG模式;
通过所述第二感知组件,将开启所述MIG模式的GPU对应的GPU信息存入MIG模式占用的GPU列表中;
根据所述第二感知组件返回的所述MIG模式占用的GPU列表,获取所述MIG模式占用的资源信息。
5.根据权利要求3所述的资源分配方法,其特征在于,所述调用第三感知组件,获取第三使用模式占用的资源信息,包括:
调用所述第三感知组件,获取所述单个节点上的所有POD信息;
通过所述第三感知组件,根据所述所有POD信息中每个POD信息的注释信息,获取所述注释信息中的正在被共享使用的GPU信息,并将所述正在被共享使用的GPU信息存入共享模式占用的GPU列表中;
根据所述第三感知组件返回的所述共享模式占用的GPU列表,获取所述共享模式占用的资源信息。
6.根据权利要求3所述的资源分配方法,其特征在于,所述调用第一感知组件,获取第一使用模式占用的资源信息,包括:
调用所述第一感知组件,通过kubelet组件中的内部检查点获取正在被独占使用的资源信息,所述kubelet组件部署在所述单个节点上;
将所述正在被独占使用的资源信息作为独占模式占用的资源信息。
7.根据权利要求6所述的资源分配方法,其特征在于,所述正在被独占使用的资源信息至少包括:独占使用的GPU标识、独占使用的GPU对应的容器信息;所述方法还包括:
通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定独占使用的GPU对应的容器状态;
通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态为非正常、停止或不存在的资源信息,得到独占模式占用的资源子信息;
所述将所述正在被独占使用的资源信息作为独占模式占用的资源信息,包括:
将所述独占模式占用的资源子信息作为所述独占模式占用的资源信息。
8.根据权利要求7所述的资源分配方法,其特征在于,所述正在被独占使用的资源信息还包括:独占使用的GPU对应的POD信息;
所述通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定独占使用的GPU对应的容器状态,包括:
通过所述第一感知组件,根据所述独占使用的GPU对应的容器信息确定所述独占使用的GPU对应的容器状态,以及,根据所述独占使用的GPU对应的POD信息确定独占使用的GPU对应的POD状态;
所述通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态为非正常、停止或不存在的资源信息,得到独占模式占用的资源子信息,包括:
通过所述第一感知组件,在所述正在被独占使用的资源信息中剔除所述容器状态和/或所述POD状态为非正常、停止或不存在的资源信息,得到所述独占模式占用的资源子信息。
9.根据权利要求1所述的资源分配方法,其特征在于,所述方法还包括:
在所述第一待分配资源标识在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,从所述第一设备插件对应的未分配资源列表中选择一个资源标识进行与所述第三使用模式占用的资源信息的匹配关系的确定,直至存在一个第一目标资源标识不在所述第三使用模式占用的资源信息中;
通过所述第一设备插件,将所述第一目标资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
10.根据权利要求9所述的资源分配方法,其特征在于,所述方法还包括:
在不存在所述第一目标资源标识的情况下,通过所述第一设备插件返回报错信息。
11.根据权利要求2所述的资源分配方法,其特征在于,所述方法还包括:
在所述第二待分配资源标识在所述第一使用模式占用的资源信息和/或所述第二使用模式占用的资源信息中的情况下,通过所述第二设备插件,从所述第二设备插件对应的未分配资源列表中选择一个资源标识进行与所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息的匹配关系的确定,直至存在一个第二目标资源标识不在所述第一使用模式占用的资源信息和所述第二使用模式占用的资源信息中;
通过所述第二设备插件,将所述第二目标资源标识对应的资源以所述第三使用模式进行分配。
12.根据权利要求11所述的资源分配方法,其特征在于,所述方法还包括:
在不存在所述第二目标资源标识的情况下,通过所述第二设备插件返回报错信息。
13.根据权利要求3所述的资源分配方法,其特征在于,所述单个节点上部署有kubelet组件,所述方法还包括:
通过所述kubelet组件接收所述单个节点中POD发送的资源分配请求;
在所述kubelet组件确定所述资源分配请求为独占模式资源分配请求或MIG模式资源分配请求的情况下,通过所述kubelet组件,将所述第一待分配资源标识发送给所述第一设备插件;
所述将所述第一待分配资源标识对应的资源以所述独占模式或所述MIG模式进行分配,包括:
根据所述第一待分配资源标识,以所述独占模式或所述MIG模式将所述第一待分配资源标识对应的资源分配给发送所述独占模式资源分配请求或所述MIG模式资源分配请求的POD。
14.根据权利要求13所述的资源分配方法,其特征在于,所述方法还包括:
在所述kubelet组件确定所述资源分配请求为共享模式资源分配请求的情况下,通过所述kubelet组件,将所述第二待分配资源标识发送给所述第二设备插件;
所述将所述第二待分配资源标识对应的资源以所述第三使用模式进行分配,包括:
根据所述第二待分配资源标识,以所述共享模式将所述第二待分配资源标识对应的资源分配给发送所述共享模式资源分配请求的POD。
15.根据权利要求3至14任一项所述的资源分配方法,其特征在于,所述第一设备插件为nvidia设备插件,所述第二设备插件为vcuda设备插件。
16.根据权利要求1至2任一项所述的资源分配方法,其特征在于,所述资源为FPGA资源。
17.一种资源分配装置,其特征在于,应用于Kubernetes集群中的单个节点,所述单个节点上部署有第一设备插件和第二设备插件,所述第一设备插件和所述第二设备插件分别用于分配不同使用模式的资源;所述装置包括:
第一分配模块,用于在所述第一设备插件接收到第一待分配资源标识的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配;
第二分配模块,用于在所述第二设备插件接收到第二待分配资源标识的情况下,通过所述第二设备插件,将所述第二待分配资源标识对应的资源以所述第二设备插件对应的使用模式进行分配;
所述第一分配模块还用于,在所述第一设备插件用于分配第一使用模式或第二使用模式的资源,所述第二设备插件用于分配第三使用模式的资源的情况下,所述通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一设备插件对应的使用模式进行分配,包括:
第一感知子模块,用于通过所述第一设备插件调用第三感知组件,获取第三使用模式占用的资源信息;
第一匹配子模块,用于通过所述第一设备插件确定所述第一待分配资源标识与所述第三使用模式占用的资源信息的匹配关系;
第一分配子模块,用于在所述第一待分配资源标识不在所述第三使用模式占用的资源信息中的情况下,通过所述第一设备插件,将所述第一待分配资源标识对应的资源以所述第一使用模式或所述第二使用模式进行分配。
18.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至16中任一项所述的资源分配方法中的步骤。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至16中任一项所述的资源分配方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310847526.2A CN116560861B (zh) | 2023-07-11 | 2023-07-11 | 资源分配方法、装置、电子设备、存储介质及节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310847526.2A CN116560861B (zh) | 2023-07-11 | 2023-07-11 | 资源分配方法、装置、电子设备、存储介质及节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116560861A CN116560861A (zh) | 2023-08-08 |
CN116560861B true CN116560861B (zh) | 2023-09-29 |
Family
ID=87493296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310847526.2A Active CN116560861B (zh) | 2023-07-11 | 2023-07-11 | 资源分配方法、装置、电子设备、存储介质及节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116560861B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7908605B1 (en) * | 2005-01-28 | 2011-03-15 | Hewlett-Packard Development Company, L.P. | Hierarchal control system for controlling the allocation of computer resources |
US20200267210A1 (en) * | 2019-02-15 | 2020-08-20 | International Business Machines Corporation | Tool for managing and allocating resources in a clustered computing environment |
CN113110938A (zh) * | 2021-05-08 | 2021-07-13 | 网易(杭州)网络有限公司 | 一种资源分配方法、装置、计算机设备及存储介质 |
CN115202856A (zh) * | 2021-04-12 | 2022-10-18 | 腾讯科技(深圳)有限公司 | 资源分配系统、方法、装置、计算机设备和存储介质 |
CN115964152A (zh) * | 2023-01-13 | 2023-04-14 | 新译信息科技(深圳)有限公司 | Gpu资源调度方法、设备和存储介质 |
CN116089009A (zh) * | 2023-02-01 | 2023-05-09 | 华院计算技术(上海)股份有限公司 | 一种gpu资源管理方法、系统、设备和存储介质 |
-
2023
- 2023-07-11 CN CN202310847526.2A patent/CN116560861B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7908605B1 (en) * | 2005-01-28 | 2011-03-15 | Hewlett-Packard Development Company, L.P. | Hierarchal control system for controlling the allocation of computer resources |
US20200267210A1 (en) * | 2019-02-15 | 2020-08-20 | International Business Machines Corporation | Tool for managing and allocating resources in a clustered computing environment |
CN115202856A (zh) * | 2021-04-12 | 2022-10-18 | 腾讯科技(深圳)有限公司 | 资源分配系统、方法、装置、计算机设备和存储介质 |
CN113110938A (zh) * | 2021-05-08 | 2021-07-13 | 网易(杭州)网络有限公司 | 一种资源分配方法、装置、计算机设备及存储介质 |
CN115964152A (zh) * | 2023-01-13 | 2023-04-14 | 新译信息科技(深圳)有限公司 | Gpu资源调度方法、设备和存储介质 |
CN116089009A (zh) * | 2023-02-01 | 2023-05-09 | 华院计算技术(上海)股份有限公司 | 一种gpu资源管理方法、系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116560861A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307890B2 (en) | Methods and apparatus to manage virtual machines | |
US9529613B2 (en) | Methods and apparatus to reclaim resources in virtual computing environments | |
US12081637B2 (en) | Embedded database as a microservice for distributed container cloud platform | |
US20210111957A1 (en) | Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment | |
CN113169952B (zh) | 一种基于区块链技术的容器云管理系统 | |
CN108399101B (zh) | 资源调度的方法、装置和系统 | |
US8104038B1 (en) | Matching descriptions of resources with workload requirements | |
CN105933137B (zh) | 一种资源管理方法、装置及系统 | |
JP6658882B2 (ja) | 制御装置、vnf配置先選択方法及びプログラム | |
US20210334129A1 (en) | Systems and methods for task processing in a distributed environment | |
US9250988B2 (en) | Virtualization-based environments for problem resolution | |
US10833955B2 (en) | Dynamic delivery of software functions | |
CN110661647A (zh) | 一种生命周期管理方法及装置 | |
CN104360878A (zh) | 一种应用软件部署的方法及装置 | |
US11561824B2 (en) | Embedded persistent queue | |
CN115129423A (zh) | 资源管理方法、装置、设备及存储介质 | |
CN116560861B (zh) | 资源分配方法、装置、电子设备、存储介质及节点 | |
CN113783712A (zh) | 默认网关管理方法、网关管理器、服务器及存储介质 | |
CN107707398B (zh) | 云计算系统中管理物理主机的方法和装置 | |
CN113746676A (zh) | 基于容器集群的网卡管理方法、装置、设备、介质及产品 | |
CN109257201B (zh) | 一种License的发送方法和装置 | |
CN117472516B (zh) | 虚拟资源调度方法、装置、集群系统、电子设备和介质 | |
CN111338752B (zh) | 容器调整方法及装置 | |
CN117806547A (zh) | 一种数据中心管理方法、装置、电子设备及存储介质 | |
CN116931818A (zh) | 容器存储管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |