CN117251297A - 一种设备分配方法及电子设备和存储介质 - Google Patents
一种设备分配方法及电子设备和存储介质 Download PDFInfo
- Publication number
- CN117251297A CN117251297A CN202311523348.4A CN202311523348A CN117251297A CN 117251297 A CN117251297 A CN 117251297A CN 202311523348 A CN202311523348 A CN 202311523348A CN 117251297 A CN117251297 A CN 117251297A
- Authority
- CN
- China
- Prior art keywords
- information
- equipment
- devices
- node
- single node
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000012216 screening Methods 0.000 claims abstract description 47
- 238000001514 detection method Methods 0.000 claims description 37
- 238000013507 mapping Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 17
- 230000002093 peripheral effect Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 12
- 235000019580 granularity Nutrition 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000013468 resource allocation Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005315 distribution function Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 102100033121 Transcription factor 21 Human genes 0.000 description 1
- 101710119687 Transcription factor 21 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种设备分配方法及电子设备和存储介质,涉及计算机技术领域,可以满足用户对设备的定向分配需求。该方法应用于kubernetes集群中单个节点所配置的目标模块,包括:接收第一指示信息,所述第一指示信息至少用于指示容器组所需设备的设备特性;从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备;将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,以使所述单个节点所配置的设备插件,从所述各个第一设备中筛选出所需分配至所述容器组的设备。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种设备分配方法及电子设备和存储介质。
背景技术
Kubernetes(简称k8s)集群通常借助于设备插件(Device Plugin)进行节点资源管理,使得应用程序可以使用硬件设备加速计算。
目前,k8s集群的节点内设备分配主要通过节点的代理组件(如kubelet)与设备插件之间的通信交互实现。但代理组件当前设计的接口只能处理容器组(pod)所关联的数量请求(如总共所需的设备数量或设备存储大小等),然后通过设备插件从本地设备列表中随机分配设备给pod使用,难以满足用户对设备的定向分配需求。
发明内容
本申请实施例的目的是提供一种设备分配方法及电子设备和存储介质,可以满足用户对设备的定向分配需求。
为解决上述技术问题,第一方面,本申请实施例提供一种设备分配方法,应用于kubernetes集群中单个节点所配置的目标模块,所述方法包括:
接收第一指示信息,所述第一指示信息至少用于指示容器组所需设备的设备特性;
从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备;
将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,以使所述单个节点所配置的设备插件,从所述各个第一设备中筛选出所需分配至所述容器组的设备。
第二方面,本申请实施例还提供了一种设备分配方法,应用于kubernetes集群中单个节点所配置的设备插件,所述方法包括:
接收第二指示信息,所述第二指示信息用于指示容器组所需设备的设备数量;
查询所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,所述各个设备的调度状态是所述单个节点所配置的目标模块根据所述容器组所需设备的设备特性进行设置得到的;
将所述各个第二设备中符合所述第二指示信息所指示的设备数量的各个第三设备分配至所述容器组。
第三方面,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现如第一方面或第二方面所述的设备分配方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面或第二方面所述的设备分配方法。
第五方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面或第二方面所述的设备分配方法。
由上述技术方案可以看出,本申请实施例考虑到节点内设备的设备特性通常存在差异,故通过为节点配置目标模块,以基于第一指示信息所指示的设备特性对设备的调度状态进行设置,由此可以根据节点内各设备的设备特性、以及容器组所需设备的设备特性,精准控制所需参与分配的设备,使得设备插件可以基于设置后的调度状态,将符合容器组所需设备的设备特性的各个第一设备分配至容器组,由此可以满足用户对设备的定向分配需求。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中设备插件机制的时序图;
图2为相关技术中设备分配的示意图;
图3为本申请实施例提供的一种设备分配方法的实施流程图;
图4为本申请实施例提供的一种设备分配方法的实现过程的示意图;
图5为本申请实施例提供的一种组件及模块的部署架构的示意图;
图6为本申请实施例提供的一种调度状态的设置方式的示意图;
图7为本申请实施例提供的另一种设备分配方法的实施流程图;
图8为本申请实施例提供的一种设备分配装置的结构示意图;
图9为本申请实施例提供的另一种设备分配装置的结构示意图;
图10为本申请实施例提供的一种电子设备的示意图;
图11为本申请实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
首先,为了便于理解本申请实施例的设备分配方案,现对如下内容进行介绍。
1、Kubernetes(简称k8s)
Kubernetes是一种开源的容器集群管理系统。Kubernetes在应用容器引擎(Docker)技术的基础上,为容器化的应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力、多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、以及多粒度的资源配额管理能力。同时,Kubernetes提供了完善的管理工具,其涵盖了包括开发、部署测试、运维监控等在内的各个环节。
随着深度学习研究在各个领域逐渐落地,工业界开始探索完善一套从数据获取到模型训练再到模型落地的完整体系,以降低模型训练的计算资源成本,缩短模型开发的周期。为达到这一目的,各大云服务提供商都推出了自己的深度学习云平台,这些深度学习云平台解决了传统方法直接在个人计算机(PC,Personal Computer)或服务器上训练带来的计算资源成本高、缺少统一的资源监控系统、算法人员需要参与运维(如搭建硬件软件环境)等问题;同时,借助于k8s统一的资源监控和调度,使得计算中心的资源利用率大大提升,有效地降低了成本。
2、图形处理器(GPU,Graphics Processing Unit)
GPU是一种专门用于加速图像和视频处理、三维(3D,3-Dimension)渲染和科学计算等计算密集型任务的处理器。相比于传统的中央处理器(CPU,Central ProcessingUnit),GPU的处理能力更加强大,能够同时处理大量的数据并快速进行并行计算。GPU最初被广泛应用于计算机游戏和图形设计领域,但随着人工智能和机器学习等计算密集型应用的兴起,GPU也成为了高性能计算和科学计算的重要组成部分。
GPU的架构和CPU不同,其核心设计思想是将众多的计算单元并行组织起来,以实现高效的并行计算。目前的GPU可以拥有数千个计算单元,每个计算单元都有自己的内存和控制单元,可以独立执行指令。这种高度并行的设计使得GPU在科学计算和机器学习等领域表现出了很高的性能。为了更好地支持科学计算和机器学习等应用,GPU厂商也开发了一系列的软件和工具,以便开发者能够更方便地利用GPU进行编程和计算。
在计算机中,GPU通常使用高速串行计算机扩展总线标准(PCIe,PeripheralComponent Interconnect express)接口连接到主板。PCIe接口提供了高带宽、低延迟的数据传输通道,使得GPU可以快速地读写主内存中的数据。在计算机操作系统层面,可以通过lspci等命令方便的查询当前主板上连接的外围设备互连(pci,peripheral componentinterconnect)设备信息,其中,pci是一种计算机硬件接口标准,用于连接显卡(即GPU卡)、网卡、声卡等各种外部设备。pci设备信息中的关键信息是pci设备的序列号(ID,Identitydocument),该序列号可称作pci id。pci设备的ID是由外围设备互连专业组(PCI-SIG,Peripheral Component Interconnect Special Interest)制定的一套命名规范,用于标识pci设备的厂商和设备型号。pci设备ID由两个16位的十六进制数组成,第一个数表示厂商ID,第二个数表示设备ID。例如,pci id为0x10DE:0x1B81,则表示厂商ID为0x10DE(对应厂商为NVIDIA),设备ID为0x1B81(对应设备型号为GeForce GTX 1080 Ti)。
示例性地,如下表1所示,使用lspci命令查询得到的各输出字段主要包含如下:
表1
因此,通过lspci命令查询设备信息,可以快速知晓设备的供应商、设备型号及版本等信息,且可以根据“bus:slot.func”唯一确定一个物理设备。
3、设备插件(Device Plugin)
Device Plugin是Kubernetes中的一种机制,允许用户在Kubernetes集群中注册自定义设备,并将这些设备暴露给pod进行使用。Device Plugin通过自定义kubelet插件的方式实现,并通过Kubelet应用程序编程接口(API,Application Programming Interface)向Kubernetes集群提供设备信息。该机制可以用于支持GPU、现场可编程逻辑门阵列(FPGA,Field Programmable Gate Array)、张量处理单元(TPU,Tensor Processing Unit)等各种硬件设备的分配与使用。
Device Plugin可以帮助Kubernetes更好地管理节点资源,使得应用程序可以使用硬件设备加速计算。如图1所示,通过将设备插件注册到Kubernetes集群中,并告知Kubernetes所注册设备的类型和数量,使得Kubernetes可以根据设备插件提供的信息,自动调度pod到拥有所需设备的节点上进行运行。在pod运行期间,Device Plugin会在容器内创建对应的设备文件或套接字(socket),以供应用程序使用;其中,应用程序编程接口服务器(api-server,application programming interface server)为k8s集群中用于提供对外api服务的模块;异步消息处理机制(如list-watch),可以将k8s中资源对象的变化实时地同步到客户端,并保证消息的可靠性、顺序性等。
本申请对传统的设备分配方法进行分析后发现,在对基于设备插件所扩展的设备进行分配时,目前的分配机制会忽视设备之间的特性差异(如设备型号的差异),仅根据容器组的设备数量需求从本地设备列表中随机分配设备给pod使用。
以GPU设备为例,Device Plugin可以通过Nvidia GPU设备插件或者其他第三方插件来管理GPU资源(即GPU设备)。这些插件可以检测和分配可用的GPU资源,以便应用程序使用这些GPU资源进行计算。同时,Device Plugin还支持资源配额和资源预留,以确保不同应用程序之间的GPU资源的隔离和公平分配。
伴随着云原生技术和人工智能(AI,Artificial Intelligence)计算技术的不断成熟,k8s上的pod使用GPU设备进行AI计算已经成为常态,pod使用GPU的方式也随着业务需求变得非常灵活,一个pod可以挂载多个GPU设备,一个GPU设备也可以挂给多个pod共享使用。随着k8s集群中所管理的GPU设备数量的增加,管理复杂度也会随之增加,作为集群的管理员,就会面临如下的痛点需求:
根据k8s目前的设备插件机制,pod申请使用GPU资源只需要填写申请的GPU资源数量,之后kubelet会自动分配GPU资源给pod使用。如图2所示,目前的机制会忽视节点内设备的特性差异(如设备型号、设备位置的不同)。对于节点内GPU设备的分配,实际都是在代理组件(如kubelet)和设备插件上完成的,但kubelet当前设计的接口只能处理数量请求(如GPU显存数、GPU显卡数等),然后通过设备插件从本地设备列表中随机分配GPU设备给pod使用,难以满足用户对设备的定向分配需求。
上述数量请求的示例如下:
apiVersion:v1
kind:Pod
metadata:
name:cuda-vector-add
spec:
restartPolicy:OnFailure
containers:
- name:cuda-vector-add
image:“nvidia/cuda-vector-add:v0.1”
resources:
limits:
nvidia.com/gpu:1//即需要一个GPU卡
memory:“512Mi”
cpu:“250m”
因此,当节点上的GPU设备存在特性差异,而不能简单地使用数目去描述需求的时候,比如用户的pod想运行在两个有特定总线及通信协议(如nvlink)的GPU上,当前的Device Plugin就完全不能处理(即无法实现区分设备地定向分配),用户也无法进一步明确设定pod要使用的具体GPU设备(即当前也没有指定节点上的具体某个GPU卡进行分配的社区方案)。
可以理解的是,设备的型号等设备特性不同,成本和功能等也有很大差别,且用户常常需要将一个pod和一个具体的设备(如GPU卡)进行绑定,以便后续根据pod对具体设备的使用情况来进行监控、计费、配额限制等操作,以及评估更换设备的操作会对哪些pod会造成影响,显然,目前对设备的随机分配方式难以满足如上示例的用户对设备的定向分配需求。
针对上述相关技术中存在的问题,本申请提出了一种设备分配方案,通过配置目标模块来根据容器组所需设备的型号、功能等设备特性,对节点内设备的调度状态进行设置,以使设备插件根据调度状态对设备进行定向分配,由此使得用户在创建pod时,能够精确指定pod使用某个型号或某个插槽位置等具有特定设备特性的设备,而不是由代理组件和设备插件随机分配,从而可以满足用户对设备的定向分配需求,且本方案无需修改代理组件的代码,以松耦合的方式弥补了社区方案的空白,具有较高的实用价值。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的一种设备分配方法及电子设备和存储介质进行详细地说明。
第一方面,参见图3所示,为本申请实施例所提供的一种设备分配方法的实施流程图,该设备分配方法应用于kubernetes集群中单个节点所配置的目标模块,该方法可以包括以下步骤:
步骤S101:接收第一指示信息,所述第一指示信息至少用于指示容器组所需设备的设备特性。
其中,本申请实施例中的设备包括基于设备插件扩展的设备,如基于设备插件扩展的pci设备。
在具体实施时,用户可以通过为容器组增加注解等方式,声明容器组需要调度到kubernetes集群中的哪个节点上进行运行,再根据实际需求,将容器组所需设备的设备类型(如网卡、GPU卡等)、设备型号、设备功能、设备位置、设备所支持协议等能够对设备在某种粒度上实现区分的信息(即用于指示设备特性的信息)作为第一指示信息,并向上述声明的节点所配置的目标模块发送该第一指示信息。
步骤S102:从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
在具体实施时,目标模块可以通过lspci命令等方式,查询本节点内的GPU卡、网卡或FPGA卡等设备(即本节点所配置设备)的设备信息,根据该设备信息和第一指示信息,筛选出符合容器组所需设备的设备特性的各个第一设备。
步骤S103:将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,以使所述单个节点所配置的设备插件,从所述各个第一设备中筛选出所需分配至所述容器组的设备。
其中,为保证其它pod的正常运行,某一设备的调度状态的改变不影响使用该设备的设备资源的其它已有pod。
在具体实施时,目标模块可以建立并维护本节点内设备的标识信息与调度状态之间的映射表,并将该映射表保存在可供设备插件进行访问的存储区域内。目标模块在每次根据第一指示信息筛选出第一设备之后,将该映射表中第一设备的标识信息所对应的调度状态设置为可调度状态,并将其它设备的标识信息所对应的调度状态设置为不可调度状态,随后设备插件即可根据该映射表当前所记录的调度状态,将可调度状态的所有设备或部分设备定向分配至容器组,以使容器组通过分配到的设备进行运行,由此满足用户对设备的定向分配需求。
由上述技术方案可以看出,本申请实施例考虑到节点内设备的设备特性通常存在差异,故通过为节点配置目标模块,以基于第一指示信息所指示的设备特性对设备的调度状态进行设置,由此可以根据节点内各设备的设备特性、以及容器组所需设备的设备特性,精准控制所需参与分配的设备,使得设备插件可以基于设置后的调度状态,将符合容器组所需设备的设备特性的各个第一设备分配至容器组,由此可以满足用户对设备的定向分配需求。
可选地,在一个实施例中,为提高设备筛选效率,上述步骤S102中,从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,可以包括:
获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
根据获取到的所述各个设备的设备信息,从所述单个节点通过外围设备互连接口所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
在具体实施时,考虑到GPU卡、网卡、FPGA卡、主机总线适配器(HBA,Host BusAdapter)卡等常见的计算机扩展设备都是通过外围设备互连(即pci)接口加载到节点所在主机上的,故本申请实施例对该节点通过pci接口所配置的各个设备的设备信息进行获取,在保证获取到的设备信息可以基本覆盖节点内所有设备的设备信息的前提下,可以缩小检测范围以提高设备信息获取及设备筛选的效率。
可选地,在一个实施例中,为提高筛选出的设备的可用性,上述步骤S102中,从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,可以包括:
获取所述单个节点所配置的各个设备的设备故障检测结果;
根据所述设备故障检测结果,获取所述单个节点所配置的各个设备中未故障设备的设备信息;
根据获取到的所述未故障设备的设备信息,从所述单个节点所配置的未故障设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
在具体实施时,该目标模块或对该节点设置的其它组件或模块,可以基于通用的故障检测方法,对该单个节点所配置的各个设备进行故障检测,以得到设备故障检测结果。随后,目标模块可以根据该设备故障检测结果,知晓节点内哪些设备仍可以正常使用,并获取该部分可以正常使用的设备(即未故障设备)的设备信息,再根据获取到的未故障设备的设备信息进行第一设备的筛选,以保证筛选出的第一设备均为未故障设备,由此提高筛选出的第一设备的可用性。
可以理解的是,目标模块在进行第一设备筛选时所使用的设备信息,可以通过上述基于pci接口的获取方式,或上述基于设备故障检测结果的获取方式,或该两种获取方式的组合得到。该目标模块或对该节点设置的其它组件或模块在得到该单个节点所配置的各个设备的设备信息之后,可以将该设备信息添加至特定的存储区域(如节点信息)中,以便目标模块后续在进行设备筛选时可以直接从该存储区域中获取到设备信息。
作为一种可能的实施方式,上述获取所述单个节点所配置的各个设备的设备故障检测结果,包括:
接收所述单个节点所配置的设备插件发送的设备故障检测结果。
在具体实施时,相比于使用目标模块或对该节点设置的其它组件或模块,以基于通用的故障检测方法来得到设备故障检测结果,本申请实施例选择使用设备插件以调用厂商提供的驱动或特定故障检测方法来得到设备故障检测结果,可以提升故障检测精度,由此进一步保证筛选出的第一设备的可用性。
可选地,在一个实施例中,上述步骤S103中,将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态,所述节点信息中各个设备的调度状态是所述目标模块根据上一次接收到的第一指示信息进行设置得到的;
将所述节点信息中所述各个第一设备的调度状态更新为可调度状态,并将所述节点信息中剩余设备的调度状态更新为不可调度状态。
在具体实施时,可以将设备的标识信息(如设备位置等)和调度状态在节点信息中进行关联存储,目标模块在每次筛选出第一设备之后,将节点信息中第一设备的标识信息所关联的调度状态修改为可调度状态,将其它设备所关联调度状态修改为不可调度状态;也可以将设备的标识信息预先添加至节点信息中,并对节点信息中第一设备的标识信息进行标记,以表示该标识信息所对应设备处于可调度状态,对节点信息中其它设备的标识信息的标记进行去除,以表示该标识信息所对应设备处于不可调度状态,本申请实施例对节点信息中各设备的调度状态的表示方式不作具体限制。
可以理解的是,相比于额外开辟存储区域,通过将节点内设备的调度状态在该节点的节点信息中进行存储和维护,使得目标模块和设备插件可以基于节点信息的访问方法对各设备的调度状态实现查询和修改,由此可以降低开发复杂度。
可选地,在一个实施例中,所述第一指示信息还用于指示所述容器组所需设备的设备数量;
所述从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,包括:
从所述各个设备中筛选出符合所述第一指示信息所指示的设备特性和设备数量的各个第一设备,以使所述单个节点所配置的设备插件,将所述各个第一设备确定为所需分配至所述容器组的设备。
在具体实施时,用户可以通过第一指示信息告知目标模块需要多少个符合某种设备特性的设备,如第一指示信息可以粗粒度地指示容器组需要一个具有nvlink的GPU设备,则目标模块会从节点内具有nvlink的GPU设备中任选一个作为第一设备,或第一指示信息也可以细粒度地指示容器组需要节点主板的某条总线的0号插槽和1号插槽处(即特定设备位置处)的设备,则目标模块会将该两个设备位置处的具体GPU设备中作为第一设备,由此可以省去设备插件的二次筛选步骤(如基于容器组的设备数量需求的筛选),使得设备插件可以将所有可调度状态的设备直接分配至容器组,由此可以提高分配效率。
可选地,在一个实施例中,在上述步骤S101中,接收第一指示信息之前,所述方法还包括:
显示所述单个节点所配置的各个设备的设备信息;
上述步骤S101中,接收第一指示信息,包括:
将用户所选择的各个所述设备信息,确定为所述第一指示信息。
在具体实施时,该目标模块或对该节点设置的其它组件或模块,可以定时获取该节点所配置的各个设备的设备信息,随后该目标模块可以通过网页、或该节点所配置的显示设备中的交互界面等方式对最近一次获取到的各个设备的设备信息进行显示,且为便于用户进行选择,可以将设备信息进行分粒度地显示,如可以先显示节点内各个设备的设备型号,在用户选择(如点击)一个或多个设备型号后,进一步显示符合用户所选择设备型号的各个设备的设备功能,在用户选择一个或多个设备功能之后,再进一步显示符合用户所选择设备功能的各个设备的设备位置,本申请实施例对设备信息的显示方式不作具体限制。
在目标模块对各个设备的设备信息进行显示之后,用户可以根据实际需求通过点击或输入等选择操作,告知目标模块自身所选择的各个设备信息,如用户可以告知目标模块自身所选择的各个设备的设备功能、pci id等设备信息,目标模块随即对用户所选择的设备信息进行汇总,得到第一指示信息。
作为一种可能的实施方式,在上述显示所述单个节点所配置的各个设备的设备信息之前,所述方法还包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的设备信息;
其中,所述单个节点所配置的各个设备的设备信息是预先添加至所述节点信息中的。
在具体实施时,相比于额外开辟存储区域,本申请实施例通过将各个设备的设备信息在该节点的节点信息中进行存储和维护,使得目标模块可以基于节点信息的访问方法对各个设备的设备信息实现查询和修改,由此可以降低开发复杂度。例如,该目标模块或对该节点设置的其它组件或模块,可以将每个设备的设备信息以节点标签的形式分别添加至节点信息中,使得目标模块可以基于节点标签的访问方法对节点标签所记载的设备信息实现查询和修改。
可选地,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
在具体实施时,可以使用键值对(key- value pair)来表征设备型号信息和设备位置信息之间的目标映射关系,如可以将设备的型号信息作为键(即key),将设备位置信息作为键所映射的值(即value),从而以key:value的格式,将各个设备各自对应的目标映射关系添加至节点信息中。
可以理解的是,考虑到设备的型号不同,其所具有的成本和功能等设备属性也有很大差别,本申请实施例选择将设备信息中的设备型号信息和设备位置信息添加至节点信息中进行关联存储、维护与显示,可以在满足容器组的不同粒度的设备特性需求(即不同粒度地定向分配功能)的前提下,减少节点信息中所需存储与维护的设备信息的数据量。
其中,通过将设备型号信息添加至节点信息中进行存储、维护与显示,使得用户可以根据容器组所需设备的成本和功能等设备属性选择特定设备型号的设备,由此实现基于设备型号的较为粗粒度地定向分配功能;再通过将设备型号信息与设备位置信息通过目标映射关系在节点信息中进行关联存储,使得用户可以从特定设备型号的设备中进一步选择特定设备位置处的设备,由此实现基于设备型号和设备位置的较为细粒度地定向分配功能,便于用户后续根据pod对具体设备的使用情况来进行监控、计费、配额限制等操作,以及便于用户评估更换设备的操作会对哪些pod会造成影响。
可选地,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点所配置的各个设备的设备信息;
将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中。
在具体实施时,目标模块可以直接获取节点内所有设备的设备信息,也可以通过上述基于pci接口、或基于设备故障检测结果、或基于前述两者的组合的获取方式,获取节点内部分设备的设备信息。在获取到设备信息之后,目标模块筛选出设定设备类型的设备(如网卡、GPU卡)的设备信息添加至节点信息进行显示,以供用户进行选择。
可以理解的是,考虑到在实际应用场景中,用户可能仅对部分设备类型的设备存在定向分配需求,对于其它设备类型的设备,用户仍希望按照传统机制进行不区分设备特性的随机分配。故本申请实施例基于设定设备类型对所需添加至节点信息中的设备信息进行了筛选,仅对存在定向分配需求的该部分设备类型的设备信息在节点信息中进行存储和维护,由此可以减少节点信息中所需存储与维护的设备信息的数据量,且能够根据用户需求有针对性地向用户显示设备信息,以供用户进行选择,可以提高用户体验。
参照图4所示,以GPU卡的分配为例,对本申请实施例所提供的设备分配方法的实现过程进行举例说明,该实现过程包括:
(1)用户开始创建pod,通过api-server与k8s集群进行通信交互,以指定该pod调度到k8s集群中的节点1(即node1)上,并通过节点标签设置node1的第二个GPU卡开启调度。
在该步骤中,如图5所示,目标模块包括GPU信息上报模块,该GPU信息上报模块负责获取本节点通过pci接口连接的GPU设备信息。由于GPU卡、网卡、FPGA卡、HBA卡等常见的计算机扩展设备都是通过pci接口加载到计算机上的,因此,GPU信息上报模块可以基于pci接口获取到绝大多数计算机扩展设备的信息(即pci设备信息);在获取到节点1上的pci设备信息之后,就可以根据类型字段筛选设备类型为GPU的设备信息,随后将获取到的GPU设备信息以节点标签的形式,添加到节点1的节点信息中。
其中,该GPU信息上报模块的核心功能包括定时自动探测节点上的全量pci设备信息并进行筛选,将筛选后的pci设备信息以节点标签的形式更新到节点信息上。GPU信息上报模块可以通过守护进程集(daemonset)的方式运行在k8s集群的节点上,由此保证每个节点上有且只有一个GPU信息上报模块实例,且使得GPU信息上报模块的部署不依赖设备插件,从而实现独立地部署及使用;且GPU信息上报模块可以挂载在/sys、/usr/lib目录,以方便该模块获取节点所在主机上的设备信息。
节点标签的格式可以设置为键值对(key:value)格式,且可以将key定义为厂商及设备型号信息,将value定义为pci设备位置信息,如节点标签“NVIDIA-A100-80G:3b.00”,表示有一个nvidia公司的型号为A100-80G的GPU设备,位于节点主板的3b总线的0号pci插槽中。可以理解的是,本申请实施例对定义key、value所使用的设备信息不作具体限制。
在将GPU设备信息以节点标签的形式添加至节点1的节点信息之后,如图6所示,用户和节点1中(即节点1所配置的目标模块等模块或组件)可以通过api-server进行通信交互,目标模块向用户展示GPU设备信息所关联的节点标签信息,用户根据实际需求,可以通过目标模块将节点1上的某个GPU卡设置为不可调度状态,如找到该GPU卡所对应的节点标签,在该节点标签中的value后面添加“disable”字段;也可以通过目标模块将节点1上的某个GPU卡由不可调度状态调整为可调度状态,如找到该GPU卡所对应的节点标签,在该节点标签中的value后面删除“disable”字段。
(2)k8s集群中的kube-scheduler将pod绑定至用户指定的pod1上。
其中,k8s集群包含部署了k8s管理组件的节点(即控制节点,可称作k8s master)、以及未部署管理组件、用于运行工作负载的节点(即工作节点,可称作k8s node)。k8smaster主要包括api-server、调度器(kube-scheduler)、控制器管理器(controller-manager)等。
(3)node1的kubelet检测到pod绑定事件,开始准确创建pod。
(4)kubelet向设备插件发送资源分配请求,设备插件收到资源分配请求后,额外对GPU-pci信息维护模块进行调用。
在该步骤中,GPU-pci信息维护模块集成在GPU的设备插件代码内部,负责提供内部接口获取GPU设备信息,以便在代码流程中进行调用和信息维护。该模块主要功能有两个:
①在设备插件初始化时,实时查询本节点连接的GPU类型设备的设备信息(如pciid列表),并生成每个设备id(或pci id等标识信息)对应的设备资源列表(用于记录未故障设备的设备信息),维护到内存中。
②通过节点标签,查询本节点上GPU卡所设置的调度状态,并过滤掉不可调度状态的GPU卡对应的设备信息。
(5)GPU-pci信息维护模块通过节点标签,查询本节点上GPU卡的调度状态,并过滤不可调度状态的GPU卡对应的设备信息(即图4中标记了“disable”的设备信息)。
(6)设备插件在过滤后的可调度状态的GPU卡(即图4中的第二个设备信息所对应的GPU卡)中进行分配。
(7)设备插件向kubelet发送请求回复信息。
需要说明的是,如图1所示,在k8s社区定义的kubelet和设备插件的交互流程中,在发现pod申请了设备插件上报的设备之后,kubelet会调用设备插件接口,通过资源分配(allocate)请求向设备插件申请指定数量的设备资源。
具体地,设备插件会根据kubelet发送过来的资源分配请求所携带的设备序号列表(即设备id列表),为pod中的每个容器(container)返回一个请求回复信息(即containerAllocateResponse,用于指示环境变量、挂载路径等容器启动参数),由于协议所规定的资源分配请求不会携带本次请求所对应的pod的信息,故无法通过在pod中增加注解等方式,为设备插件的分配逻辑提供更多的调度参数信息。
基于上述分析,本申请实施例对目前的分配逻辑进行了如下主要改进:
设备插件收到来自于kubelet的资源分配请求之后,会额外调用GPU-pci信息维护模块查询节点标签,以获取本节点当前可调度的GPU卡的设备信息,即过滤掉节点标签中包含“disable”字段的GPU卡对应的设备资源,再在可调度状态对应的设备资源列表中进行后续的分配逻辑(如请求回复信息的发送等)。
(8)kubelet根据请求回复信息所携带的容器启动参数,在该节点的第二个GPU卡上完成pod的创建与运行,即pod与node1的第二个GPU卡完成绑定。
可以理解的是,本示例通过设置节点上GPU单卡的调度状态,以精准控制pod可以往哪个GPU卡上进行调度;通过设备插件的改造,过滤掉不可调度状态的GPU卡的相应设备资源,只保留可调度状态的GPU卡的相应设备资源,使得用户能够对GPU资源进行精准的分配和调度;同时,本示例无需修改kubelet代码,以松耦合的方式弥补了社区方案的空白,具有较高的实用价值。
第二方面,参见图7所示,为本申请实施例所提供的另一种设备分配方法的实施流程图,该设备分配方法应用于kubernetes集群中单个节点所配置的设备插件,该方法可以包括以下步骤:
步骤S201:接收第二指示信息,所述第二指示信息用于指示容器组所需设备的设备数量;
步骤S202:获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,所述各个设备的调度状态是所述单个节点所配置的目标模块根据所述容器组所需设备的设备特性进行设置得到的;
步骤S203:将所述各个第二设备中符合所述第二指示信息所指示的设备数量的各个第三设备分配至所述容器组。
其中,上述第二指示信息可以包括容器组所需设备的设备数量或标识信息等指示信息,以实现对设备数量的直接指示或间接指示。
在具体实施时,设备插件通过第二指示信息知晓容器组所需设备的设备数量之后,即可从该节点内可调度状态的所有第二设备中筛选出相应数量的各个第三设备(即筛选出所需分配至容器组的设备),再将筛选出的各个第三设备的挂载路径、环境变量等信息发送至该节点所配置的代理组件,代理组件随后将接收到的信息作为容器启动的参数,将容器组调度至该筛选出的各个第三设备上进行运行。
由上述技术方案可以看出,本申请实施例考虑到节点内设备的设备特性通常存在差异,故通过为节点配置目标模块,以基于第一指示信息所指示的设备特性对设备的调度状态进行设置,由此可以根据节点内各设备的设备特性、以及容器组所需设备的设备特性,精准控制所需参与分配的设备,使得设备插件可以基于设置后的调度状态,将符合容器组所需设备的设备特性的各个第一设备分配至容器组,由此可以满足用户对设备的定向分配需求。
作为一种可能的实施方式,在所述获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备之前,所述方法还包括:
检测所述单个节点所配置的各个设备是否存在故障,得到设备故障检测结果;
将所述设备故障检测结果发送至所述目标模块,以使所述目标模块根据所述设备故障检测结果,将未故障且符合所述容器组所需设备的设备特性的各个设备的调度状态设置为可调度状态。
在该实施例中,由于设备插件可以调用厂商提供的驱动或特定故障检测方法来进行故障检测,由此可以提高设备故障检测结果的准确性,进而可以保证目标模块所设置的可调度状态的各个设备的可用性。
作为一种可能的实施方式,所述接收第二指示信息,包括:
接收所述单个节点所配置的代理组件发送的设备序号列表,将所述设备序号列表确定为所述第二指示信息;
其中,所述设备序号列表包括所述代理组件根据所述容器组所需设备的设备数量,从所述单个节点所配置的各个设备中随机选择的各个设备的设备序号的集合,所述设备序号用于标识设备型号。
在该实施例中,设备插件可以基于传统机制,通过代理组件发送的设备序号列表知晓容器组所需设备的设备数量,由此无需修改代理组件的代码,即可实现本申请实施例所提供的设备分配方法,从而以松耦合的方式弥补了社区方案的空白,具有较高的实用价值。
作为一种可能的实施方式,所述获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态和设备信息;
从所述节点信息中筛选出可调度状态所对应的各个设备信息;
将筛选出的所述各个设备信息各自所对应的各个设备,确定为所述各个第二设备;
其中,所述单个节点所配置的各个设备的调度状态和设备信息是预先添加至所述节点信息中的。
在该实施例中,通过将设备的调度状态和设备信息预先关联存储至节点信息中,使得设备插件可以根据节点信息中可调度状态所关联的设备信息,快速找到第二设备,可以免去设备插件将调度状态与设备信息进行匹配的步骤,且相比于额外开辟存储区域,通过将各个设备的调度状态和设备信息在该节点的节点信息中进行存储和维护,使得设备插件可以基于节点信息的访问方法对该各个设备的调度状态和设备信息实现查询,可以降低开发复杂度。
作为一种可能的实施方式,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
将获取到的所述各个设备的设备信息,添加至所述节点信息中。
在该实施例中,该设备插件、或目标模块、或对该节点设置的其它组件或模块,通过对该节点通过pci接口所配置的各个设备的设备信息进行获取并添加至节点信息中,在保证节点信息可以基本覆盖节点内所有设备的设备信息的前提下,可以缩小检测范围以提高设备信息获取及设备筛选效率,且可以减少节点信息所需维护的数据量。
作为一种可能的实施方式,所述将获取到的所述各个设备的设备信息,添加至所述节点信息中,包括:
将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中,以使所述目标模块根据所述节点信息,对符合所述设定设备类型的设备信息进行显示,并根据用户所选择的设备信息确定所述容器组所需设备的设备特性。
在该实施例中,基于设定设备类型对所需添加至节点信息中的设备信息进行筛选,仅对存在定向分配需求的该部分设备类型的设备信息在节点信息中进行存储和维护,由此可以减少节点信息所需维护的数据量,且能够根据用户需求有针对性地向用户显示设备信息,以供用户进行选择,可以提高用户体验。
作为一种可能的实施方式,所述单个节点所配置的每个设备的调度状态和设备信息是以节点标签的形式分别添加至所述节点信息中的;
所述查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态和设备信息,包括:
查询所述单个节点的节点信息中的节点标签,得到所述单个节点所配置的各个设备的调度状态和设备信息。
在该实施例中,利用节点标签可以很方便地对各个设备的调度状态和设备信息实现关联存储,即一个节点标签用于记录一个设备的调度状态和设备信息,设备插件随后可以基于节点标签的访问方法对各个设备的设备信息和调度状态实现快速查询,由此可以降低开发复杂度。
作为一种可能的实施方式,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
检测所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
在该实施例中,考虑到设备的型号不同,其所具有的成本和功能等设备属性也有很大差别,本申请实施例选择将设备信息中的设备型号信息和设备位置信息添加至节点信息中进行关联存储、维护与显示,可以在满足容器组的不同粒度的设备特性需求(即不同粒度地定向分配功能)的前提下,减少节点信息中所需存储与维护的设备信息的数据量。
第三方面,本申请实施例提供了一种设备分配装置,应用于kubernetes集群中单个节点所配置的目标模块,如图8所示,该装置包括:
第一接收模块,用于接收第一指示信息,所述第一指示信息至少用于指示容器组所需设备的设备特性;
第一筛选模块,用于从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备;
第一设置模块,用于将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,以使所述单个节点所配置的设备插件,从所述各个第一设备中筛选出所需分配至所述容器组的设备。
可选地,所述第一筛选模块包括:
第一筛选子模块,用于获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
第二筛选子模块,用于根据获取到的所述各个设备的设备信息,从所述单个节点通过外围设备互连接口所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
可选地,所述第一筛选模块包括:
第三筛选子模块,用于获取所述单个节点所配置的各个设备的设备故障检测结果;
第四筛选子模块,用于根据所述设备故障检测结果,获取所述单个节点所配置的各个设备中未故障设备的设备信息;
第五筛选子模块,用于根据获取到的所述未故障设备的设备信息,从所述单个节点所配置的未故障设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
可选地,所述第三筛选子模块包括:
第六筛选子模块,用于接收所述单个节点所配置的设备插件发送的设备故障检测结果。
可选地,所述第一设置模块包括:
第一设置子模块,用于查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态,所述节点信息中各个设备的调度状态是所述目标模块根据上一次接收到的第一指示信息进行设置得到的;
第二设置子模块,用于将所述节点信息中所述各个第一设备的调度状态更新为可调度状态,并将所述节点信息中剩余设备的调度状态更新为不可调度状态。
可选地,所述第一指示信息还用于指示所述容器组所需设备的设备数量;
所述第一筛选模块包括:
第七筛选子模块,用于从所述各个设备中筛选出符合所述第一指示信息所指示的设备特性和设备数量的各个第一设备,以使所述单个节点所配置的设备插件,将所述各个第一设备确定为所需分配至所述容器组的设备。
可选地,所述装置还包括:
第一显示模块,用于显示所述单个节点所配置的各个设备的设备信息;
所述第一接收模块包括:
第一接收子模块,用于将用户所选择的各个所述设备信息,确定为所述第一指示信息。
可选地,所述装置还包括:
第一查询模块,用于查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的设备信息;
其中,所述单个节点所配置的各个设备的设备信息是预先添加至所述节点信息中的。
可选地,所述装置还包括:
第一处理模块,用于获取所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
第二处理模块,用于在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
第三处理模块,用于将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
可选地,所述装置还包括:
第四处理模块,用于获取所述单个节点所配置的各个设备的设备信息;
第五处理模块,用于将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中。
由上述技术方案可以看出,本申请实施例考虑到节点内设备的设备特性通常存在差异,故通过为节点配置目标模块,以基于第一指示信息所指示的设备特性对设备的调度状态进行设置,由此可以根据节点内各设备的设备特性、以及容器组所需设备的设备特性,精准控制所需参与分配的设备,使得设备插件可以基于设置后的调度状态,将符合容器组所需设备的设备特性的各个第一设备分配至容器组,由此可以满足用户对设备的定向分配需求。
第四方面,本申请实施例提供了另一种设备分配装置,应用于kubernetes集群中单个节点所配置的设备插件,如图9所示,该装置包括:
第二接收模块,用于接收第二指示信息,所述第二指示信息用于指示容器组所需设备的设备数量;
第一获取模块,用于获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,所述各个设备的调度状态是所述单个节点所配置的目标模块根据所述容器组所需设备的设备特性进行设置得到的;
第一分配模块,用于将所述各个第二设备中符合所述第二指示信息所指示的设备数量的各个第三设备分配至所述容器组。
可选地,所述装置还包括:
第一检测模块,用于检测所述单个节点所配置的各个设备是否存在故障,得到设备故障检测结果;
第一发送模块,用于将所述设备故障检测结果发送至所述目标模块,以使所述目标模块根据所述设备故障检测结果,将未故障且符合所述容器组所需设备的设备特性的各个设备的调度状态设置为可调度状态。
可选地,所述第二接收模块包括:
第二接收子模块,用于接收所述单个节点所配置的代理组件发送的设备序号列表,将所述设备序号列表确定为所述第二指示信息;
其中,所述设备序号列表包括所述代理组件根据所述容器组所需设备的设备数量,从所述单个节点所配置的各个设备中随机选择的各个设备的设备序号的集合,所述设备序号用于标识设备型号。
可选地,所述第一获取模块包括:
第一获取子模块,用于查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态和设备信息;
第二获取子模块,用于从所述节点信息中筛选出可调度状态所对应的各个设备信息;
第三获取子模块,用于将筛选出的所述各个设备信息各自所对应的各个设备,确定为所述各个第二设备;
其中,所述单个节点所配置的各个设备的调度状态和设备信息是预先添加至所述节点信息中的。
可选地,所述装置还包括:
第六处理模块,用于获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
第七处理模块,用于将获取到的所述各个设备的设备信息,添加至所述节点信息中。
可选地,所述第七处理模块包括:
第一处理子模块,用于将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中,以使所述目标模块根据所述节点信息,对符合所述设定设备类型的设备信息进行显示,并根据用户所选择的设备信息确定所述容器组所需设备的设备特性。
可选地,单个节点所配置的每个设备的调度状态和设备信息是以节点标签的形式分别添加至所述节点信息中的;
所述第一获取子模块包括:
第四获取子模块,用于查询所述单个节点的节点信息中的节点标签,得到所述单个节点所配置的各个设备的调度状态和设备信息。
可选地,所述装置还包括:
第八处理模块,用于检测所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
第九处理模块,用于在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
第十处理模块,用于将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
由上述技术方案可以看出,本申请实施例考虑到节点内设备的设备特性通常存在差异,故通过为节点配置目标模块,以基于第一指示信息所指示的设备特性对设备的调度状态进行设置,由此可以根据节点内各设备的设备特性、以及容器组所需设备的设备特性,精准控制所需参与分配的设备,使得设备插件可以基于设置后的调度状态,将符合容器组所需设备的设备特性的各个第一设备分配至容器组,由此可以满足用户对设备的定向分配需求。
需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
本申请实施例还提供了一种电子设备,参照图10,图10是本申请实施例提出的电子设备的示意图。如图10所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的所述设备分配方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,参见图11,图11是本申请实施例提出的计算机可读存储介质的示意图。如图11所示,计算机可读存储介质200上存储有计算机程序/指令210,该计算机程序/指令210被处理器执行时实现如本申请实施例公开的所述设备分配方法中的步骤。
本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的所述设备分配方法中的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、系统、设备、存储介质及程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上对本申请所提供的一种设备分配方法及电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (20)
1.一种设备分配方法,其特征在于,应用于kubernetes集群中单个节点所配置的目标模块,所述方法包括:
接收第一指示信息,所述第一指示信息至少用于指示容器组所需设备的设备特性;
从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备;
将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,以使所述单个节点所配置的设备插件,从所述各个第一设备中筛选出所需分配至所述容器组的设备。
2.根据权利要求1所述的方法,其特征在于,所述从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,包括:
获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
根据获取到的所述各个设备的设备信息,从所述单个节点通过外围设备互连接口所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
3.根据权利要求1所述的方法,其特征在于,所述从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,包括:
获取所述单个节点所配置的各个设备的设备故障检测结果;
根据所述设备故障检测结果,获取所述单个节点所配置的各个设备中未故障设备的设备信息;
根据获取到的所述未故障设备的设备信息,从所述单个节点所配置的未故障设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备。
4.根据权利要求3所述的方法,其特征在于,所述获取所述单个节点所配置的各个设备的设备故障检测结果,包括:
接收所述单个节点所配置的设备插件发送的设备故障检测结果。
5.根据权利要求1所述的方法,其特征在于,所述将所述各个第一设备的调度状态设置为可调度状态,并将所述单个节点所配置的各个设备中剩余设备的调度状态设置为不可调度状态,包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态,所述节点信息中各个设备的调度状态是所述目标模块根据上一次接收到的第一指示信息进行设置得到的;
将所述节点信息中所述各个第一设备的调度状态更新为可调度状态,并将所述节点信息中剩余设备的调度状态更新为不可调度状态。
6.根据权利要求1所述的方法,其特征在于,所述第一指示信息还用于指示所述容器组所需设备的设备数量;
所述从所述单个节点所配置的各个设备中,筛选出符合所述第一指示信息所指示的设备特性的各个第一设备,包括:
从所述各个设备中筛选出符合所述第一指示信息所指示的设备特性和设备数量的各个第一设备,以使所述单个节点所配置的设备插件,将所述各个第一设备确定为所需分配至所述容器组的设备。
7.根据权利要求1-6任一所述的方法,其特征在于,在所述接收第一指示信息之前,所述方法还包括:
显示所述单个节点所配置的各个设备的设备信息;
所述接收第一指示信息,包括:
将用户所选择的各个所述设备信息,确定为所述第一指示信息。
8.根据权利要求7所述的方法,其特征在于,在所述显示所述单个节点所配置的各个设备的设备信息之前,所述方法还包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的设备信息;
其中,所述单个节点所配置的各个设备的设备信息是预先添加至所述节点信息中的。
9.根据权利要求8所述的方法,其特征在于,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
10.根据权利要求8所述的方法,其特征在于,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点所配置的各个设备的设备信息;
将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中。
11.一种设备分配方法,其特征在于,应用于kubernetes集群中单个节点所配置的设备插件,所述方法包括:
接收第二指示信息,所述第二指示信息用于指示容器组所需设备的设备数量;
获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,所述各个设备的调度状态是所述单个节点所配置的目标模块根据所述容器组所需设备的设备特性进行设置得到的;
将所述各个第二设备中符合所述第二指示信息所指示的设备数量的各个第三设备分配至所述容器组。
12.根据权利要求11所述的方法,其特征在于,在所述获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备之前,所述方法还包括:
检测所述单个节点所配置的各个设备是否存在故障,得到设备故障检测结果;
将所述设备故障检测结果发送至所述目标模块,以使所述目标模块根据所述设备故障检测结果,将未故障且符合所述容器组所需设备的设备特性的各个设备的调度状态设置为可调度状态。
13.根据权利要求11所述的方法,其特征在于,所述接收第二指示信息,包括:
接收所述单个节点所配置的代理组件发送的设备序号列表,将所述设备序号列表确定为所述第二指示信息;
其中,所述设备序号列表包括所述代理组件根据所述容器组所需设备的设备数量,从所述单个节点所配置的各个设备中随机选择的各个设备的设备序号的集合,所述设备序号用于标识设备型号。
14.根据权利要求11-13任一所述的方法,其特征在于,所述获取所述单个节点所配置的各个设备的调度状态,筛选出可调度状态的各个第二设备,包括:
查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态和设备信息;
从所述节点信息中筛选出可调度状态所对应的各个设备信息;
将筛选出的所述各个设备信息各自所对应的各个设备,确定为所述各个第二设备;
其中,所述单个节点所配置的各个设备的调度状态和设备信息是预先添加至所述节点信息中的。
15.根据权利要求14所述的方法,其特征在于,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
获取所述单个节点通过外围设备互连接口所配置的各个设备的设备信息;
将获取到的所述各个设备的设备信息,添加至所述节点信息中。
16.根据权利要求15所述的方法,其特征在于,所述将获取到的所述各个设备的设备信息,添加至所述节点信息中,包括:
将获取到的所述各个设备的设备信息中,符合设定设备类型的设备信息添加至所述节点信息中,以使所述目标模块根据所述节点信息,对符合所述设定设备类型的设备信息进行显示,并根据用户所选择的设备信息确定所述容器组所需设备的设备特性。
17.根据权利要求14所述的方法,其特征在于,单个节点所配置的每个设备的调度状态和设备信息是以节点标签的形式分别添加至所述节点信息中的;
所述查询所述单个节点的节点信息,得到所述单个节点所配置的各个设备的调度状态和设备信息,包括:
查询所述单个节点的节点信息中的节点标签,得到所述单个节点所配置的各个设备的调度状态和设备信息。
18.根据权利要求14所述的方法,其特征在于,通过以下步骤将所述单个节点所配置的各个设备的设备信息添加至所述节点信息中:
检测所述单个节点所配置的各个设备的设备信息,所述设备信息包括设备型号信息和设备位置信息;
在所述各个设备的设备型号信息和设备位置信息之间建立所述各个设备各自对应的目标映射关系;
将所述各个设备各自对应的目标映射关系添加至所述节点信息中。
19.一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至10中任一项所述的设备分配方法或实现如权利要求11至18中任一项所述的设备分配方法。
20.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现如权利要求1至10中任一项所述的设备分配方法或实现如权利要求11至18中任一项所述的设备分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311523348.4A CN117251297B (zh) | 2023-11-15 | 2023-11-15 | 一种设备分配方法及电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311523348.4A CN117251297B (zh) | 2023-11-15 | 2023-11-15 | 一种设备分配方法及电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117251297A true CN117251297A (zh) | 2023-12-19 |
CN117251297B CN117251297B (zh) | 2024-03-01 |
Family
ID=89126692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311523348.4A Active CN117251297B (zh) | 2023-11-15 | 2023-11-15 | 一种设备分配方法及电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117251297B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204428A (zh) * | 2021-05-28 | 2021-08-03 | 北京市商汤科技开发有限公司 | 资源调度方法、装置、电子设备以及计算机可读存储介质 |
CN113641457A (zh) * | 2021-08-20 | 2021-11-12 | 北京百度网讯科技有限公司 | 容器创建方法、装置、设备、介质及程序产品 |
CN116339927A (zh) * | 2023-05-29 | 2023-06-27 | 苏州浪潮智能科技有限公司 | 设备确定方法、装置、存储介质及电子装置 |
-
2023
- 2023-11-15 CN CN202311523348.4A patent/CN117251297B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204428A (zh) * | 2021-05-28 | 2021-08-03 | 北京市商汤科技开发有限公司 | 资源调度方法、装置、电子设备以及计算机可读存储介质 |
CN113641457A (zh) * | 2021-08-20 | 2021-11-12 | 北京百度网讯科技有限公司 | 容器创建方法、装置、设备、介质及程序产品 |
CN116339927A (zh) * | 2023-05-29 | 2023-06-27 | 苏州浪潮智能科技有限公司 | 设备确定方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117251297B (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3149591B1 (en) | Tracking application deployment errors via cloud logs | |
WO2017147800A1 (zh) | 资源配置方法、虚拟网络功能管理器和网元管理系统 | |
WO2017117122A1 (en) | Fpga-enabled compute instances | |
CN105653398B (zh) | 一种智能分配操作系统镜像方法 | |
CN115567251A (zh) | 用于微服务集群的多业务隔离方法及系统 | |
CN117032812B (zh) | 服务器的管理方法、设备、装置、存储介质和电子设备 | |
CN114706690B (zh) | 一种Kubernetes容器共享GPU方法及系统 | |
CN111078516A (zh) | 分布式性能测试方法、装置、电子设备 | |
CN115080479B (zh) | 传输方法、服务器、设备、裸金属实例及基板管理控制器 | |
CN115134281A (zh) | 一种网络耗源型组件性能测试优化方法、系统及装置 | |
US11048557B2 (en) | Methods and modules relating to allocation of host machines | |
CN116339927B (zh) | 设备确定方法、装置、存储介质及电子装置 | |
US6598105B1 (en) | Interrupt arbiter for a computing system | |
CN117251297B (zh) | 一种设备分配方法及电子设备和存储介质 | |
CN114564856B (zh) | 一种基于fmea的数据共享方法及电子设备 | |
CN116260725A (zh) | 一种服务器的带宽分配方法、装置、电子设备及存储介质 | |
CN110247802B (zh) | 针对云服务单机环境的资源配置方法及装置 | |
CN113760446A (zh) | 资源调度方法、装置、设备及介质 | |
CN113708994A (zh) | 一种基于Go语言的云物理主机和云服务器监控方法及系统 | |
CN111125232A (zh) | 一种公有云资产信息接入的方法及装置 | |
WO2023274014A1 (zh) | 容器集群的存储资源管理方法、装置及系统 | |
CN116436913A (zh) | 云服务器的创建方法、系统、存储介质以及电子设备 | |
CN118193479A (zh) | 一种存储空间的分配方法及服务器 | |
CN116521307A (zh) | 集群管理方法、电子设备以及存储介质 | |
CN117591233A (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 |