CN116339927B - 设备确定方法、装置、存储介质及电子装置 - Google Patents

设备确定方法、装置、存储介质及电子装置 Download PDF

Info

Publication number
CN116339927B
CN116339927B CN202310617101.2A CN202310617101A CN116339927B CN 116339927 B CN116339927 B CN 116339927B CN 202310617101 A CN202310617101 A CN 202310617101A CN 116339927 B CN116339927 B CN 116339927B
Authority
CN
China
Prior art keywords
target
list
information
equipment
tag
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
Application number
CN202310617101.2A
Other languages
English (en)
Other versions
CN116339927A (zh
Inventor
杨勇
刘立近
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310617101.2A priority Critical patent/CN116339927B/zh
Publication of CN116339927A publication Critical patent/CN116339927A/zh
Application granted granted Critical
Publication of CN116339927B publication Critical patent/CN116339927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例提供了一种设备确定方法、装置、存储介质及电子装置,其中,该方法包括:在目标节点的目标容器组合上获取目标标签信息,其中,目标标签信息是在目标节点上创建目标容器组合时创建的信息;获取目标标签列表,其中,目标标签列表中记录了目标节点当前连接的所有目标类型的设备,以及与每个目标类型的设备对应的标签信息,目标标签列表是在对目标节点进行初始化的过程中生成的;通过目标标签信息和目标标签列表确定目标容器组合当前正在使用的目标设备。通过本发明实施例,解决了相关技术中存在的无法感知节点上的容器组合与设备的物理挂载关系的问题。

Description

设备确定方法、装置、存储介质及电子装置
技术领域
本发明实施例涉及计算机领域,具体而言,涉及一种设备确定方法、装置、存储介质及电子装置。
背景技术
容器技术是一种比虚拟机技术更加节省计算资源也更加灵活的虚拟化技术。随着容器技术的发展,出现了很多容器编排引擎,其中,Google开源的容器编排引擎Kubernetes技术脱颖而出成为了容器编排领域的事实标准。Kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新和维护的一种机制。
Deviceplugin机制(设备插件机制)是Kubernetes中的一种机制,允许用户在集群中注册自定义设备,并将这些设备暴露给Pod以使用,Pod是K8S管理的最小单位级,它是一个或多个容器的组合,自定义设备可以是GPU、FPGA、TPU等各种硬件设备。K8s上的pod是可以使用这些设备进行ai计算,例如,K8s上的pod使用gpu设备进行ai计算,在相关的deviceplugin机制中,pod申请使用gpu资源只需要填写申请的gpu资源数量,之后kubelet会自动分配gpu资源给pod使用。但是在相关机制中用户只能查询到有哪些pod使用了节点上的gpu设备的资源,不能查询pod具体使用的是哪个gpu设备。因此,相关技术中存在无法感知节点上的容器组合与设备的物理挂载关系的问题。
针对相关技术中存在的无法感知节点上的容器组合与设备的物理挂载关系的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种设备确定方法、装置、存储介质及电子装置,以至少解决相关技术中存在的无法感知节点上的容器组合与设备的物理挂载关系的问题。
根据本发明的一个实施例,提供了一种设备确定方法,包括:
在目标节点的目标容器组合上获取目标标签信息,其中,上述目标标签信息是在上述目标节点上创建上述目标容器组合时创建的信息;
获取目标标签列表,其中,上述目标标签列表中记录了上述目标节点当前连接的所有目标类型的设备,以及与每个上述目标类型的设备对应的标签信息,所述目标标签列表是在对所述目标节点进行初始化的过程中生成的;
通过上述目标标签信息和上述目标标签列表确定上述目标容器组合当前正在使用的目标设备。
在一个示例性实施例中,通过上述目标标签信息和上述目标标签列表确定上述目标容器组合当前正在使用的目标设备,包括:将上述目标标签信息与上述目标标签列表中记录的每个标签信息进行匹配,得到匹配结果;在上述匹配结果表示上述目标标签信息与第一标签信息匹配成功的情况下,将上述第一标签信息对应的目标设备确定为上述目标容器组合当前正在使用的目标设备,其中,上述目标标签列表中包括上述第一标签信息,以及上述第一标签信息对应的目标设备。
在一个示例性实施例中,将上述目标标签信息与上述目标标签列表中记录的每个标签信息进行匹配,包括:对上述目标标签列表中记录的每个标签信息执行以下操作,在执行以下操作时的标签信息为当前标签信息:判断上述目标标签信息与上述当前标签信息是否相同;在上述目标标签信息与上述当前标签信息相同的情况下,确定上述目标标签信息与上述当前标签信息匹配成功。
在一个示例性实施例中,在获取目标标签列表之前,上述方法还包括:获取第一列表,其中,上述第一列表记录了上述目标节点当前连接的所有设备,以及与每个设备对应的总线信息,其中,上述目标节点当前连接的所有设备中包括上述目标类型的设备;根据上述第一列表中的各个设备的设备类型,得到上述目标标签列表。
在一个示例性实施例中,根据上述第一列表中的各个设备的设备类型,得到上述目标标签列表,包括:获取上述第一列表中记录的上述目标节点当前连接的所有设备中的每个设备的设备类型;在上述第一列表中筛选出上述设备类型为目标类型的设备,以及上述目标类型的设备对应的总线信息,得到第二列表;根据上述第二列表确定出上述目标标签列表。
在一个示例性实施例中,在上述第一列表中筛选出上述设备类型为目标类型的设备,以及上述目标类型的设备对应的总线信息,得到第二列表,包括:创建空白表;将在上述第一列表中筛选出的上述目标类型的设备,以及上述目标类型的设备对应的总线信息记录在上述空白表,得到第二列表。
在一个示例性实施例中,将在上述第一列表中筛选出的上述目标类型的设备,以及上述目标类型的设备对应的总线信息记录在上述空白表,得到第二列表,包括:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述当前设备的设备类型;在上述当前设备的设备类型为上述目标类型的情况下,将上述当前设备以及上述当前设备对应的总线信息添加至上述空白表。
在一个示例性实施例中,在上述第一列表中筛选出上述设备类型为目标类型的设备,以及上述目标类型的设备对应的总线信息,得到第二列表,还包括:将上述第一列表中除上述目标类型以外的其他类型的设备,以及上述其他类型的设备对应的总线信息删除,得到上述第二列表。
在一个示例性实施例中,将上述第一列表中除上述目标类型以外的其他类型的设备,以及上述其他类型的设备对应的总线信息删除,得到上述第二列表,包括:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述当前设备的设备类型;在上述当前设备的设备类型不为上述目标类型的情况下,将上述第一列表中上述当前设备以及上述当前设备对应的总线信息删除。
在一个示例性实施例中,获取上述第一列表中记录的上述目标节点当前连接的所有设备中的每个设备的设备类型,包括:根据上述第一列表中记录的每个设备的总线信息的目标字段,确定上述每个设备的设备类型。
在一个示例性实施例中,根据上述第一列表中记录的每个设备的总线的目标字段,确定上述每个设备的设备类型,包括:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述第一列表中记录的上述当前设备的当前总线信息;获取上述当前总线信息中的目标字段,其中,上述目标字段用于标识上述当前设备的设备类型;根据上述目标字段确定上述当前设备的设备类型。
在一个示例性实施例中,根据上述第二列表确定出上述目标标签列表,包括:对上述第二列表中记录的每个设备的总线信息进行格式转换,得到上述每个设备对应的标签信息;根据上述第二列表中记录的每个设备,以及与每个设备对应的标签信息确定出上述目标标签列表。
在一个示例性实施例中,上述每个设备对应的标签信息的格式为键值对的格式。
在一个示例性实施例中,上述每个设备对应的总线信息中的设备型号信息和设备位置信息组成上述键值对,上述设备型号信息为键,上述设备位置信息为值。
在一个示例性实施例中,在上述在目标节点的目标容器组合上获取目标标签信息之前,上述方法还包括:创建上述目标容器组合,其中,上述目标容器组合中包括一个或多个容器;为上述目标容器组合分配目标设备;确定上述目标设备的上述目标标签信息。
在一个示例性实施例中,确定上述目标设备的上述目标标签信息,包括:获取上述目标设备的设备标识;将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息。
在一个示例性实施例中,在将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息之后,上述方法还包括:将上述目标标签信息添加到上述目标容器组合中的注解中。
在一个示例性实施例中,在上述将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息之前,上述方法还包括:获取上述目标节点当前连接的上述目标类型的设备的设备标识;获取上述目标节点当前连接的目标类型的设备的标签信息;建立上述标签信息和上述设备标识之间的关联关系。
在一个示例性实施例中,在上述建立上述标签信息和上述设备标识之间的关联关系之后,上述方法还包括:将上述关联关系存储在上述目标插件。
根据本发明的又一个实施例,还提供了一种设备确定装置,包括:
第一获取模块,用于在目标节点的目标容器组合上获取目标标签信息,其中,上述目标标签信息是在上述目标节点上创建上述目标容器组合时创建的信息;
第二获取模块,用于获取目标标签列表,其中,上述目标标签列表中记录了上述目标节点当前连接的所有目标类型的设备,以及与每个上述目标类型的设备对应的标签信息,所述目标标签列表是在对所述目标节点进行初始化的过程中生成的;
确定模块,用于通过上述目标标签信息和上述目标标签列表确定上述目标容器组合当前正在使用的目标设备。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,其中,上述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,在创建目标容器组合时,在目标容器组合上创建了目标标签信息,通过将目标容器组合上的目标标签信息与目标标签列表中记录的所有与目标节点连接的目标种类的设备对应的标签信息,确定出目标容器组合正在使用的目标设备,目标容器组合正在使用的目标设备即容器组合与设备的物理挂载关系,因此,通过上述实施例,解决了无法感知节点上的容器组合与设备的物理挂载关系的问题,达到了能够监控节点上的容器组合使用目标类型设备情况的技术效果。
附图说明
图1是本发明实施例的设备确定方法的移动终端硬件结构框图;
图2是根据本发明实施例的设备确定方法的流程图;
图3是根据本发明实施例的设备确定方法的整体部署架构图;
图4是根据本发明实施例的目标容器组合与设备的关联关系图;
图5是根据本发明实施例的多个容器组合与设备的关联关系图;
图6是根据本发明具体实施例的设备确定方法的整体部署架构图;
图7是根据本发明实施例的设备确定装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的设备确定方法的移动终端硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的设备确定方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种设备确定方法,图2是根据本发明实施例的设备确定方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,在目标节点的目标容器组合上获取目标标签信息,其中,上述目标标签信息是在上述目标节点上创建上述目标容器组合时创建的信息;
在本实施例中,上述目标节点为k8s集群中不部署管理组件,用于运行工作负载的节点,即工作节点(k8s node)。目标容器组合Pod为K8S管理的最小单位级,它是一个或多个容器的组合,目标容器组合中包括一个或多个容器的组合。目标节点是k8s集群中的一个节点,目标容器组合Pod是目标节点中的一个容器组合。
目标容器组合上的目标标签信息是在创建目标容器组合时创建的信息,图3是根据本发明实施例的设备确定方法的整体部署架构图,如图3所示,由图3中的目标组件(kubelet)创建目标容器组合,其中,目标容器组合中包括一个或多个容器;kubelet为目标容器组合分配目标设备;并确定目标设备的目标标签信息。
用户在有创建Pod需求时,k8s集群中的管理节点(k8s master)接收用户创建目标容器组合的请求,管理节点中部署了k8s管理组件,例如apiserver、kube-scheduler、controller-manager等,其中apiserver用于接收用户发送的请求,kube-scheduler用于收到请求以后确定调用哪一个工作节点创建Pod,controller-manager用于分发请求到kube-scheduler确定的工作节点上以创建Pod以及Pod中的容器。
k8s集群中的工作节点中由目标组件接收管理节点发送的创建目标容器组合的事件(请求),开始准备创建目标容器组合。目标组件创建目标容器组合为目标容器组合分配目标设备,并确定目标设备的目标标签信息。确定的目标标签信息被添加到目标容器组合中的注解中,用户可以通过解析目标容器组合中的注解,得到为目标容器组合分配的目标设备的目标标签信息,即目标容器组合正在使用的目标设备的目标标签信息。
k8s集群中的工作节点中包括deviceplugin(对应于目标插件),deviceplugin可以检测和分配可用的资源。以GPU设备为例,GPU 全称 Graphics Processing Unit,即图形处理器,是一种专门用于加速图像和视频处理、3D 渲染和科学计算等计算密集型任务的处理器。相比于传统的中央处理器(CPU),GPU 的处理能力更加强大,能够同时处理大量的数据并快速进行并行计算。对于GPU设备而言,deviceplugin可以通过Nvidia GPU设备插件或者其他第三方插件来管理GPU资源,通过上述插件检测当前工作节点上的GPU资源,将当前工作节点上的GPU资源上报给kubelet,通过kubelet进行资源分配。
上述确定目标设备的目标标签信息的方式可以为:kubelet为目标容器组合分配了目标设备的情况下,kubelet将目标设备的设备标识发送给目标插件,目标插件中的信息查询模块根据设备标识查询该目标设备对应的标签信息,得到目标标签信息,信息查询模块将目标标签信息返回,将目标信息添加至注解中,将注解信息返回至kubelet中。
在本实施例中的kubelet(对应于目标组件)和deviceplugin(对应于目标插件)的交互流程中,kubelet向deviceplugin发送目标容器组合的Pod信息和设备id(目标设备的设备标识),deviceplugin中的分配模块(deviceplugin allocate)根据pod信息和设备id为目标容器组合中的每个容器返回一个响应信息(containerAllocateResponse),响应信息用于目标插件在响应时为目标容器组合附加环境变量、挂载目录和注解。
在生成响应信息之前,分配模块根据kubelet发送目标设备的设备标识向信息查询模块查询目标设备对应的目标标签信息,将目标标签信息添加到响应信息中的注解中,并返回至kubelet,目标组件接受到响应信息后可以在生成目标容器组合时,在目标容器组合的注解中添加目标标签信息。
在上述实施例中,信息查询模块中集成在目标插件的代码内部,提供内部接口以获取当前与目标节点连接的设备的总线信息,筛选出当前与目标节点连接的目标类型的设备的总线信息,通过目标类型的设备的总线信息进行按照规定的格式进行格式化,得到当前与目标节点连接的目标类型的设备的标签信息,建立当前与目标节点连接的目标类型的设备的标签信息和设备标识之间的关联关系。并将关联关系存储在目标插件中,以在接受到目标设备的设备标识后,通过关联关系确定出目标设备的目标标签信息,以将目标标签信息添加到注解中。
可选的,还可以直接建立当前与目标节点连接的目标类型的设备的总线信息与设备标识之间的关联关系,并存储在目标插件中,信息查询模块根据目标设备的设备标识确定出目标设备的总线信息,信息查询模块将查询的目标设备的总线信息返回给分配模块,分配模块按照规定的标签信息的格式进行格式化,得到当前与目标节点连接的目标类型的设备的标签信息(目标标签信息),分配模块将目标标签信息添加到响应信息中的注解,以将目标标签信息添加到目标容器组合中的注解中。
在本实施例中,上述标签信息规定的格式是键值对格式,key:value格式,其中,在总线信息中提取中设备型号信息和设备位置信息,将设备型号信息作为键,设备位置信息作为值,则生成标签信息。举例来说,目标标签信息为10de-20b5:3b-00-0,目标标签信息代表目标容器组合当前使用的目标是有一个X公司的型号为Y的目标类型的设备,插到了节点主板的3b总线0号pci插槽中。
需要说明的是,目标类型的设备可以是以下之一:gpu设备、FPGA设备、TPU设备等。
需要说明的是,对于与目标节点连接每一种类型的设备,都需要对应的使用目标插件(deviceplugin ) 进行管理,目标插件与目标组件(kubelet)连接起来。
以 GPU 设备为例,它对应的插件叫作会通过一个叫作 ListAndWatch (异步消息处理机制)的 API(一种应用程序接口),定期向 kubelet 汇报该节点上 GPU 设备的列表。举例来说,一共有三个GPU(GPU0、GPU1 和 GPU2)。这样,kubelet 在接收到这个 GPU 设备的列表之后,就可以直接在kubelet 向 APIServer 发送的心跳里,以 Extended Resource (扩展资源)的方式上报这些 GPU 的数量,比如nvidia.com/gpu=3。
需要说明的是,ListAndWatch 向上汇报的信息,只有 GPU设备的设备标识列表(ID列表),而不会有任何关于 GPU 设备本身的信息。而且 kubelet 在向 API Server 汇报的时候,只会汇报 GPU设备 对应的 Extended Resource 的数量。kubelet 本身会将这个 GPU 的设备标识列表保存在自己的内存里,并通过 ListAndWatch API 定时更新。
而当目标容器组合(目标Pod)想要使用 GPU 设备的时候,目标Pod申请使用gpu资源只需要填写申请的gpu设备数量,向kubelet发送目标请求,之后kubelet会自动分配gpu设备给目标Pod使用。而 kubelet 接收到目标请求后发现目标 Pod 中的容器请求 GPU设备的时候,kubelet 就会从内存中保存的 GPU 列表(GPU设备的设备标识列表)里,为这个容器分配一个 GPU设备。此时,kubelet 就会向本节点上的 deviceplugin 发起一个Allocate() 请求,即调用分配模块的请求。这个请求携带的参数,包括了分配给Pod的GPU设备的设备标识。
当 deviceplugin 收到 Allocate ()请求之后,就会根据 kubelet 传递过来的设备标识,从 deviceplugin 里找到分配给Pod的GPU设备标识对应的设备路径和驱动目录。而分配给Pod的GPU设备对应的设备路径和驱动目录信息被返回给 kubelet 之后,kubelet 就完成了为目标Pod分配 GPU 的操作。接下来,kubelet 会把这些信息追加在创建该容器所对应的 CRI 请求当中。这样,当这个 CRI 请求发给 Docker 之后,在Docker创建出来的容器里,就会出现这个 GPU 设备,并把它所需要的驱动目录挂载进去。
GPU 设备等硬件设备的调度工作,实际上是由 kubelet 完成的。即,kubelet 会负责从它所持有的硬件设备列表中,为目标容器组合分配一个硬件设备,然后调用deviceplugin 的 Allocate API 来完成这个分配操作,相关技术中, deviceplugin无法支持Pod 感知硬件设备的属性。
在本实施例中通过对 deviceplugin内部流程进行改造, deviceplugin将kubelet发送的分配给Pod的GPU设备标识发送给信息查询模块,通过信息查询模块获取硬件设备的属性信息(PCI信息,即对应于上述总线信息),并将属性信息以规定的格式添加到响应信息的注解中,发送至kubelet ,kubelet 会在创建Pod的时候将注解中规定格式的属性信息(即对应于上述目标标签信息)添加到Pod的注解中,用户能够获取Pod的注解,即能够通过注解获取到目标标签信息,从而能够根据目标标签信息确定出Pod当前正在使用的设备信息。
步骤S204,获取目标标签列表,其中,上述目标标签列表中记录了上述目标节点当前连接的所有目标类型的设备,以及与每个上述目标类型的设备对应的标签信息,上述目标标签列表是在对上述目标节点进行初始化的过程中生成的;
在本实施例中,获取的目标标签列表是在对目标节点进行初始化的过程生成的列表,对目标节点进行初始化是指查询目标节点上当前连接的所有设备以及所有设备的总线信息,再根据目标节点上当前连接的所有设备以及所有设备的总线信息得到目标标签列表。
可选的,对目标节点进行初始化在获取目标标签列表之前,具体的,可以是在每次确定容器组合和设备的挂载关系时,均进行初始化,也可以在启动目标节点时,进行初始化操作。
与上述目标节点当前连接的设备指的是通过PCIe接口连接到目标节点的主板上的设备,PCIe接口提供了高带宽、低延迟的数据传输通道,使得连接设备可以快速地读写目标节点中的主内存中的数据。
上述对目标节点进行初始化的执行主体为目标节点中的信息上报模块,信息上报模块可以通过lspci命令查询当前目标节点上连接的pci设备信息(即当前目标节点上连接的设备的总线信息)。pci设备信息中关键的信息是pci id,pci id是由PCI-SIG(PCISpecial Interest Group,PCI特殊兴趣组织)制定的一套命名规范,用于标识PCI设备的厂商和设备型号。pci id由两个4位的十六进制数组成,第一个数表示厂商ID,第二个数表示设备ID(设备标识)。例如,pci ID为0x10DE:0x1B81表示厂商ID为X(0x10DE),设备ID为Y(0x1B81)。“0X”表示十六进制。
信息上报模块主要负责获取目标节点上通过pcie或pci接口连接的设备的总线信息,目标节点上连接的设备包括网卡、显卡、fpga卡、hba卡等等常见的计算机扩展设备,均通过pcie或pci接口加载到计算机上,因此信息上报模块可以获取到绝大多数计算机扩展设备的信息。
在一个可选的实施例中,在获取目标标签列表之前,上述方法还包括:获取第一列表,其中,上述第一列表记录了上述目标节点当前连接的所有设备,以及与每个设备对应的总线信息,其中,上述目标节点当前连接的所有设备中包括上述目标类型的设备;根据上述第一列表中的各个设备的设备类型,得到上述目标标签列表。
其中,第一列表是通过目标插件中的信息上报模块首先获取了与目标节点连接的设备的总线信息,得到第一列表,第一列表中记录与目标节点连接的所有设备,以及,每个设备对应的总线信息。根据第一列表中记录的各个设备的设备类型,得到目标标签列表。
可选的,上述信息上报模块以守护进程(daemonset)的方式运行在k8S中的目标节点上,且在k8S中的每个节点中有且只有一个信息上报模块,信息上报模块独立部署,不依赖于目标插件(deviceplugin)进行部署,信息上报模块每隔预定时间探测目标节点上的连接的设备的总线信息,更新第一列表,并根据更新后的第一列表更新上述目标标签列表。
在一个可选的实施例中,根据第一列表中的各个设备的设备类型,得到目标标签列表,包括:获取第一列表中记录的目标节点当前连接的所有设备中的每个设备的设备类型;在第一列表中筛选出设备类型为目标类型的设备,以及目标类型的设备对应的总线信息,得到第二列表;根据第二列表确定出目标标签列表。在本实施例中,第一列表中记录的设备包括了多种类型的设备,目标节点当前连接的所有设备中包括目标类型的设备,需要在第一列表中筛选出目标类型的设备,确定第一列表中记录的目标节点当前连接的所有设备的设备类型,根据每个设备的设备类型在筛选出第一列表中记录的目标类型的设备,将第一列表中筛选出的第一列表中的目标类型的设备与目标类型的设备对应的总线信息记录在第二列表;并根据第二列表确定出目标标签列表。
举例来说,可以通过以下两种方法在第一列表中筛选出设备类型为目标类型的设备,以及目标类型的设备对应的总线信息,得到第二列表:
方法一:创建空白表;将在第一列表中筛选出的目标类型的设备,以及目标类型的设备对应的总线信息记录在空白表,得到第二列表。其中,将在第一列表中筛选出的目标类型的设备,以及目标类型的设备对应的总线信息记录在空白表,得到第二列表,包括:对第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取当前设备的设备类型;在当前设备的设备类型为目标类型的情况下,将当前设备以及当前设备对应的总线信息添加至空白表。
方法二:将第一列表中除目标类型以外的其他类型的设备,以及其他类型的设备对应的总线信息删除,得到第二列表。其中,将第一列表中除目标类型以外的其他类型的设备,以及其他类型的设备对应的总线信息删除,得到第二列表,包括:对第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取当前设备的设备类型;在当前设备的设备类型不为目标类型的情况下,将第一列表中当前设备以及当前设备对应的总线信息删除。
可选的,在第一列表中筛选出设备类型为目标类型的设备时需要先获取第一列表中记录的每个设备的设备类型,则在此之前,需要先确定出目标节点当前连接的所有设备中的每个设备的设备类型,其中,第一列表中记录的目标节点当前连接的所有设备中的每个设备的设备类型通过第一列表中记录的每个设备的总线信息的目标字段确定。
可选的,当前目标节点上连接的设备的总线信息是通过lspci命令查询得到的,对于lspci命令中的包括的各个字段以及对应的含义和详细解释如下:
“85:00.0和86:00.0"对应的含义是:以“bus:slot.fune”格式来唯标识一个PCI功能设备,对应的详细解释为:唯一定位一个PCl设备的虚拟功能,也可以是一个多功能设备的功能设备,一个多功能设备最多有8个功能。总线号(bus):从系统中的256条总线中选择一条,0-255;设备号(slot):在一条给定的总线上选择32个设备中的一个,0--31;功能号(func):选择多功能设备中的某一个功能,有八种功能,0--7,PC规范规定,功能0是必须实现的。
“0300”对应的含义是PCI设备类型;对应的详细解释为指 PCI设备的类型,来自不同厂商的同一类设备的类型码可以是相同的。
即通过上述lspci命令中的输出的PCI设备信息中字段包括表示指 PCI设备的类型的字段。
在上述实施例中,根据第一列表中记录的每个设备的总线信息的目标字段,确定每个设备的设备类型,包括:对第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取第一列表中记录的当前设备的当前总线信息;获取当前总线信息中的目标字段,其中,目标字段用于标识当前设备的设备类型;根据目标字段确定当前设备的设备类型。在本实施例中,设备的总线信息中包含了表示设备的设备类型的字段,通过获取每个设备对应的总线信息中的目标字段,根据总线信息中的目标字段确定出对应设备的设备类型。
在得到第二列表之后,根据第二列表确定出目标标签列表包括:对上述第二列表中记录的每个设备的总线信息进行格式转换,得到上述每个设备对应的标签信息;根据上述第二列表中记录的每个设备,以及与每个设备对应的标签信息确定出目标标签列表。
其中,目标标签列表中的每个设备对应的标签信息的格式为键值对格式,key:value格式,其中,在设备对应的总线信息中提取中设备型号信息和设备位置信息,将设备型号信息作为键,设备位置信息作为值,则形成标签信息。
目标标签列表中记录的每个标签信息可以作为k8s的节点标签,附加到k8s中对应的目标节点上。
步骤S206,通过上述目标标签信息和上述目标标签列表确定上述目标容器组合当前正在使用的目标设备;
在一个可选的实施例中,通过目标标签信息和目标标签列表确定目标容器组合当前正在使用的目标设备,包括:将目标标签信息与目标标签列表中记录的每个标签信息进行匹配,得到匹配结果;在匹配结果表示目标标签信息与第一标签信息匹配成功的情况下,将第一标签信息对应的目标设备确定为目标容器组合当前正在使用的目标设备,其中,目标标签列表中包括第一标签信息,以及第一标签信息对应的目标设备。在本实施例中,将目标标签信息与目标标签列表中的记录的各个标签信息匹配,上述第一标签信息可以有一个或者多个,第一标签信息即代表与目标标签匹配成功的标签信息,第一标签信息只包括一个标签信息的情况下,说明目标容器组合只使用了当前节点连接的一个设备;在第一标签信息包括多个标签信息的情况下,说明在目标标签列表中与目标标签信息匹配的标签信息有多个,即说明目标容器组合使用了当前节点连接的多个设备。
需要说明的是,在一个节点上的一个容器组合可以使用与该节点连接的一个或多个设备,同时对应任意一个与该节点连接的设备而言,可以供该节点上的一个或多个容器组合使用。
在一个可选的实施例中,将目标标签信息与目标标签列表中记录的每个标签信息进行匹配,包括:对目标标签列表中记录的每个标签信息执行以下操作,在执行以下操作时的标签信息为当前标签信息:判断目标标签信息与当前标签信息是否相同;在目标标签信息与当前标签信息相同的情况下,确定目标标签信息与当前标签信息匹配成功。
图4是根据本发明实施例的目标容器组合与设备的关联关系图,如图4所示,目标容器组合上的目标标签信息为:10de-20b5:3b-00-0,目标标签列表中记录了四个目标类型的设备:设备A-D,四个目标类型的设备对应的标签信息如下:设备A对应的标签信息为10de-20b5:3b-00-0,设备B对应的标签信息为10de-20b5:3b-01-0,设备C对应的标签信息为10de-20b5:3b-02-0,设备D对应的标签信息为10de-20b5:3b-03-0。将目标标签信息分别与目标标签列表中的设备A-D对应的标签信息进行匹配,目标标签信息与设备A的标签信息相同,与设备B-D的标签信息均不相同,因此,目标标签信息与设备A的标签信息匹配成功,因此,将设备A确定为目标容器组合当前正在使用的目标设备。
图5是根据本发明实施例的多个容器组合与设备的关联关系图,如图5所示,在目标节点上有多个容器组合时,确定每个容器组合与目标节点连接的设备之间的关联关系,将目标节点上的多个容器组合记做PodA、PodB、PodC,PodA上的目标标签信息为:10de-20b5:3b-01-0,PodB上的目标标签信息为:10de-20b5:3b-01-0,PodC上的目标标签信息为:10de-20b5:3b-03-0;
目标标签列表中记录了四个目标类型的设备:设备A-D,设备A对应的标签信息为10de-20b5:3b-00-0,设备B对应的标签信息为10de-20b5:3b-01-0,设备C对应的标签信息为10de-20b5:3b-02-0,设备D对应的标签信息为10de-20b5:3b-03-0。将每个容器组合对应目标标签信息分别与目标标签列表中的设备A-D对应的标签信息进行一一匹配,PodA的标签信息与设备B的标签信息相同,与设备A、C、D的标签信息均不相同,PodB的标签信息与设备B的标签信息相同,与设备A、C、D的标签信息均不相同,PodC的标签信息与设备D的标签信息相同,与设备A、C、C的标签信息均不相同。因此,PodA的标签信息与设备B的标签信息匹配成功,PodB的标签信息与设备B的标签信息匹配成功,PodC的标签信息与设备D的标签信息匹配成功,因此,将设备B确定为PodA和PodB当前正在使用的目标设备,将设备D确定为PodC当前正在使用的目标设备。
通过上述步骤,在创建目标容器组合时,在目标容器组合上创建了目标标签信息,通过将目标容器组合上的目标标签信息与目标标签列表中记录的所有与目标节点连接的目标种类的设备对应的标签信息,确定出目标容器组合正在使用的目标设备,目标容器组合正在使用的目标设备即容器组合与设备的物理挂载关系,因此,通过上述实施例,解决了无法感知节点上的容器组合与设备的物理挂载关系的问题,达到了能够监控节点上的容器组合使用目标类型设备情况的技术效果。
显然,上述所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
下面结合实施例对本发明进行具体说明:
图6是根据本发明具体实施例的设备确定方法的整体部署架构图,如图6所示,以目标类型的设备为GPU设备为例,整体部署架构分为三个部分:用户、管理节点(对应于图6中的k8s master)和工作节点(对应于图6中的k8s node)。
如图6所示,k8s node中包括了kubelet、gpu deviceplugin、信息上报模块,其中gpu deviceplugin包括分配模块和信息查询模块,分配模块在接收到Allocate() 请求之后进行GPU设备的调度工作。
如图6所示,用户在创建Pod以及为Pod申请GPU设备资源时的交互流程包括:
步骤1 :用户向管理节点发送创建目标Pod和/或申请GPU设备资源的请求,其中管理节点通过apiserver接收该请求。
步骤2:管理节点将用户的请求分发到工作节点上,工作节点上的kubelet在接收到管理节点分发的请求事件之后,开始准备创建目标Pod,此时,kubelet会为目标Pod分配一个或多个GPU设备,通过一个或多个GPU设备的设备id(设备标识)表示。
步骤3:在工作节点中kubelet调用Allocate,即向gpu deviceplugin中的分配模块发送一个 Allocate() 请求,由分配模块在接收到 Allocate() 请求处理分配逻辑,即将为目标Pod分配一个或多个GPU设备对应的设备路径和驱动目录。
步骤4:分配模块将为目标Pod分配一个或多个GPU设备的设备id发送给信息查询模块,通过信息查询模块查询为目标Pod分配一个或多个GPU设备的pci信息,对查询到的pci信息进行去重,将去重后的pci信息返回到分配模块。
步骤5:分配模块将接收到的pci信息以规定的格式添加到响应信息中的注解中,分配模块将pci信息携带在响应信息中返回给kubelet。
步骤6:在kubelet在创建目标pod时,将分配模块发送的响应信息的注解中的pci信息添加到目标pod的注解中,因此,在目标pod的注解中携带了本次为pod分配的GPU设备的pci信息(即对应于上述目标标签信息)。
K8s中pod均使用上述创建流程进行创建,因此,在使用了GPU设备的pod中的注解上均携带了对应pod正在使用的GPU设备的pci信息。
在工作节点中还设置有信息上报模块,以生成GPU设备与GPU设备的pci信息的关联关系。
上述信息上报模块的主要功能包括:a、检查自身所在节点的全量pci设备的pci信息,即获取与所在节点通过pci接口连接的所有设备的pci信息,获取到节点上所有设备的pci信息之后,就可以根据pci信息中的类型字段筛选到设备类型为GPU类型的设备的pci信息;b、将pci信息转换为规定格式的PCI信息,得到作为k8s节点标签(对应于上述目标标签列表),附加到k8s对应的节点上;
上述信息上报模块以daemonset的方式运行在k8s的节点上,由k8s保证每个节点上有且只有一个上报模块实例;该模块的部署不依赖gpu deviceplugin,可独立部署,独立使用,并挂载/sys、/usr/lib目录,方便上述信息上报模块获取节点上的设备的pci信息。而信息查询模块是集成在gpu deviceplugin内部的。信息查询模块和信息上报模块的共同点在于:信息查询模块和信息上报模块两个模块均可以通过pci接口获取与对应节点连接的设备的pci信息(对应于总线信息)。
信息查询模块和信息上报模块的不共同点在于:集成位置不同,信息查询模块需要集成在gpu deviceplugin内部,而信息上报模块不用集成在gpu deviceplugin内部,不依赖于gpu deviceplugin部署;信息查询模块和信息上报模块的内部在获取与对应节点连接的设备的pci信息后的处理逻辑不同,信息查询模块根据设备标识查询对应的pci信息并最终能够将pci信息添加到pod的注解中,而信息上报模块是获取与对应节点连接的设备的pci信息后,根据设备的pci信息生成标签,以标签的方式附加在对应节点上,相对于gpudeviceplugin内部的pci信息,用户比较容易获取以标签的方式附加在对应节点上的pci信息,以感知节点上容器组合设备的物理挂载关系。
生成目标节点上的GPU设备与pod之间的挂载关系的处理逻辑为:
A、根据节点标签获取该节点上连接了哪些GPU设备;B、查询该节点上的pod列表,根据每个pod的annotation(注解)过滤出使用了gpu设备的pod,即pod的annotation(注解)中携带了gpu设备的pci。C、将pod annotation中的pci信息与节点标签中的pci信息进行匹配,如果某个pod注解中的pci信息与对应节点的某个设备的pci信息相等,则认为该pod使用了节点上的对应gpu设备。
不同型号的GPU设备功能有很大差异,根据pod使用不同的GPU设备时,会因为使用的GPU设备型号不同,应该产生不同的计费,在相关技术中无法确定pod使用的是哪一个GPU设备,而无法根据pod对具体GPU设备的使用情况。
可选的,在上述具体实施例中确定了每个GPU设备与pod之间的挂载关系后,根据监控目标pod具体使用的GPU设备的设备型号进行计费。还可以根据pod具体使用的GPU设备的使用情况进行配额限制的操作。
可选的,上述方法还包括:获取目标标签列表中记录的第一设备对应的标签信息;获取目标节点上运行的所有容器组合对应的标签信息;
根据第一设备对应的标签信息和目标节点上运行的所有容器组合对应的标签信息,得到容器组合列表,其中,容器组合列表记录了当前正在使用第一设备的容器组合,容器组合列表中包括一个或多个容器组合,目标节点上运行的所有容器组合包括容器组合列表中的记录的容器组合。
在第一设备对应的标签信息与目标节点上运行的所有容器组合上的第一容器组合对应的标签信息相同的情况下,确定第一容器组合当前正在使用第一设备。
通过上述实施例,可以通过确定当前正在某一个具体的GPU设备的容器组合,进而可以评估在将该GPU设备(第一设备)与目标节点断开连接时,会对哪些容器组合造成影响。
在一个可选的实施例中,在上述根据第一设备对应的标签信息和目标节点上运行的所有容器组合对应的标签信息,得到容器组合列表之后,将上述容器组合列表中记录的所有容器组合的状态调整为关闭或暂停,将上述第一设备更换为第二设备。在本实施例中,在更换设备时,对当前正在使用被更换的设备的容器组合进行状态调整操作,再更换设备,以减少在更换设备的过程中对当前正在使用被更换的设备的容器组合的不良影响。例如,在需要将第一设备更换为第二设备时,将正在使用第一设备的容器组合(对应容器组合列表中记录的容器组合)的状态进行调整,避免正在使用第一设备的容器组合在运行过程中因为第一设备的突然掉线,而出现无法恢复的故障,例如,容器组合无法再运行,或者,使整个目标节点崩了。将容器组合的状态从运行状态调整为暂停或关闭状态,在完成设备更换过程后,将容器列表中记录的容器组合的状态恢复为运行状态,并重新为容器列表中记录的容器组合分配设备资源。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例上述的方法。
在本实施例中还提供了一种设备确定装置,图7是根据本发明实施例的设备确定装置的结构框图,如图7所示,该装置包括:
第一获取模块702,用于在目标节点的目标容器组合上获取目标标签信息,其中,上述目标标签信息是在上述目标节点上创建上述目标容器组合时创建的信息;
第二获取模块704,用于获取目标标签列表,其中,上述目标标签列表中记录了上述目标节点当前连接的所有目标类型的设备,以及与每个上述目标类型的设备对应的标签信息,上述目标标签列表是在对上述目标节点进行初始化的过程中生成的;
确定模块706,用于通过上述目标标签信息和上述目标标签列表确定上述目标容器组合当前正在使用的目标设备。
在一个可选的实施例中,上述确定模块包括:匹配子模块,用于将上述目标标签信息与上述目标标签列表中记录的每个标签信息进行匹配,得到匹配结果;第一确定子模块,用于在上述匹配结果表示上述目标标签信息与第一标签信息匹配成功的情况下,将上述第一标签信息对应的目标设备确定为上述目标容器组合当前正在使用的目标设备,其中,上述目标标签列表中包括上述第一标签信息,以及上述第一标签信息对应的目标设备。
在一个可选的实施例中,上述第一确定子模块用于通过以下方式将上述目标标签信息与上述目标标签列表中记录的每个标签信息进行匹配:对上述目标标签列表中记录的每个标签信息执行以下操作,在执行以下操作时的标签信息为当前标签信息:判断上述目标标签信息与上述当前标签信息是否相同;在上述目标标签信息与上述当前标签信息相同的情况下,确定上述目标标签信息与上述当前标签信息匹配成功。
在一个可选的实施例中,上述装置还包括:第三获取模块,用于在获取目标标签列表之前,获取第一列表,其中,上述第一列表记录了上述目标节点当前连接的所有设备,以及与每个设备对应的总线信息,其中,上述目标节点当前连接的所有设备中包括上述目标类型的设备;目标标签列表确定模块,用于根据上述第一列表中的各个设备的设备类型,得到上述目标标签列表。
在一个可选的实施例中,上述目标标签列表确定模块,包括:第一获取子模块用于,获取上述第一列表中记录的上述目标节点当前连接的所有设备中的每个设备的设备类型;筛选子模块,用于在上述第一列表中筛选出上述设备类型为目标类型的设备,以及上述目标类型的设备对应的总线信息,得到上述第二列表;第二确定子模块,用于根据上述第二列表确定出上述目标标签列表。
在一个可选的实施例中,上述筛选子模块包括:创建单元,用于创建空白表;记录单元,用于将在上述第一列表中筛选出的上述目标类型的设备,以及上述目标类型的设备对应的总线信息记录在上述空白表,得到第二列表。
在一个可选的实施例中,上述记录单元用于通过以下方式将在上述第一列表中筛选出的上述目标类型的设备,以及上述目标类型的设备对应的总线信息记录在上述空白表,得到第二列表:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述当前设备的设备类型;在上述当前设备的设备类型为上述目标类型的情况下,将上述当前设备以及上述当前设备对应的总线信息添加至上述空白表。
在一个可选的实施例中,上述筛选子模块还包括:删除单元,用于将上述第一列表中除上述目标类型以外的其他类型的设备,以及上述其他类型的设备对应的总线信息删除,得到上述第二列表。
在一个可选的实施例中,上述删除单元用于通过以下方式将上述第一列表中除上述目标类型以外的其他类型的设备,以及上述其他类型的设备对应的总线信息删除,得到上述第二列表:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述当前设备的设备类型;在上述当前设备的设备类型不为上述目标类型的情况下,将上述第一列表中上述当前设备以及上述当前设备对应的总线信息删除。
在一个可选的实施例中,上述第一获取子模块包括:第一确定单元,用于根据上述第一列表中记录的每个设备的总线信息的目标字段,确定上述每个设备的设备类型。
在一个可选的实施例中,上述第一确定单元用于通过以下方式根据上述第一列表中记录的每个设备的总线信息的目标字段,确定上述每个设备的设备类型:对上述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:获取上述第一列表中记录的上述当前设备的当前总线信息;获取上述当前总线信息中的目标字段,其中,上述目标字段用于标识上述当前设备的设备类型;根据上述目标字段确定上述当前设备的设备类型。
在一个可选的实施例中,上述第二确定子模块包括:转换单元,用于对上述第二列表中记录的每个设备的总线信息进行格式转换,得到上述每个设备对应的标签信息;第二确定子模块,用于根据上述第二列表中记录的每个设备,以及与每个设备对应的标签信息确定出上述目标标签列表。
在一个可选的实施例中,上述每个设备对应的标签信息的格式为键值对的格式。
在一个可选的实施例中,上述每个设备对应的总线信息中的设备型号信息和设备位置信息组成上述键值对,上述设备型号信息为键,上述设备位置信息为值。
在一个可选的实施例中,上述装置还包括:创建模块,用于在上述在目标节点的目标容器组合上获取目标标签信息之前创建上述目标容器组合,其中,上述目标容器组合中包括一个或多个容器;分配模块,用于为上述目标容器组合分配目标设备;第二确定模块,用于确定上述目标设备的上述目标标签信息。
在一个可选的实施例中,上述第二确定模块还包括:第二获取子模块,用于获取上述目标设备的设备标识;发送子模块,用于将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息。
在一个可选的实施例中,上述装置还包括:添加模块,用于在将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息之后,将上述目标标签信息添加到上述目标容器组合中的注解中。
在一个可选的实施例中,上述装置还包括:第四获取模块,用于在上述将上述目标设备的设备标识发送给上述目标节点上的目标插件,以通过上述目标插件确定上述目标标签信息之前,获取上述目标节点当前连接的上述目标类型的设备的设备标识;第五获取模块,用于获取上述目标节点当前连接的目标类型的设备的标签信息;建立模块,用于建立上述标签信息和上述设备标识之间的关联关系。
在一个可选的实施例中,上述装置还包括:存储模块,用于在上述建立上述标签信息和上述设备标识之间的关联关系之后,将上述关联关系存储在上述目标插件。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上上述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (22)

1.一种设备确定方法,其特征在于,包括:
在目标节点的目标容器组合上获取目标标签信息,其中,所述目标标签信息是在所述目标节点上创建所述目标容器组合时创建的信息;
获取目标标签列表,其中,所述目标标签列表中记录了所述目标节点当前连接的所有目标类型的设备,以及与每个所述目标类型的设备对应的标签信息,所述目标标签列表是在对所述目标节点进行初始化的过程中生成的;
通过所述目标标签信息和所述目标标签列表确定所述目标容器组合当前正在使用的目标设备;
其中,对所述目标节点进行初始化包括:查询所述目标节点上当前连接的所有设备以及所有设备的总线信息;
在对所述目标节点进行初始化的过程中生成所述目标标签列表,包括:根据所述所有设备以及所有设备的总线信息生成所述目标标签列表,其中,所述目标节点当前连接的所有设备中包括所述目标类型的设备。
2.根据权利要求1所述的方法,其特征在于,通过所述目标标签信息和所述目标标签列表确定所述目标容器组合当前正在使用的目标设备,包括:
将所述目标标签信息与所述目标标签列表中记录的每个标签信息进行匹配,得到匹配结果;
在所述匹配结果表示所述目标标签信息与第一标签信息匹配成功的情况下,将所述第一标签信息对应的目标设备确定为所述目标容器组合当前正在使用的目标设备,其中,所述目标标签列表中包括所述第一标签信息,以及所述第一标签信息对应的目标设备。
3.根据权利要求2所述的方法,其特征在于,将所述目标标签信息与所述目标标签列表中记录的每个标签信息进行匹配,包括:
对所述目标标签列表中记录的每个标签信息执行以下操作,在执行以下操作时的标签信息为当前标签信息:
判断所述目标标签信息与所述当前标签信息是否相同;
在所述目标标签信息与所述当前标签信息相同的情况下,确定所述目标标签信息与所述当前标签信息匹配成功。
4.根据权利要求1所述的方法,其特征在于,在获取目标标签列表之前,所述方法还包括:
获取第一列表,其中,所述第一列表记录了所述目标节点当前连接的所有设备,以及与每个设备对应的总线信息;
根据所述第一列表中的各个设备的设备类型,得到所述目标标签列表。
5.根据权利要求4所述的方法,其特征在于,根据所述第一列表中的各个设备的设备类型,得到所述目标标签列表,包括:
获取所述第一列表中记录的所述目标节点当前连接的所有设备中的每个设备的设备类型;
在所述第一列表中筛选出所述设备类型为目标类型的设备,以及所述目标类型的设备对应的总线信息,得到第二列表;
根据所述第二列表确定出所述目标标签列表。
6.根据权利要求5所述的方法,其特征在于,在所述第一列表中筛选出所述设备类型为目标类型的设备,以及所述目标类型的设备对应的总线信息,得到第二列表,包括:
创建空白表;
将在所述第一列表中筛选出的所述目标类型的设备,以及所述目标类型的设备对应的总线信息记录在所述空白表,得到第二列表。
7.根据权利要求6所述的方法,其特征在于,将在所述第一列表中筛选出的所述目标类型的设备,以及所述目标类型的设备对应的总线信息记录在所述空白表,得到第二列表,包括:
对所述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:
获取所述当前设备的设备类型;
在所述当前设备的设备类型为所述目标类型的情况下,将所述当前设备以及所述当前设备对应的总线信息添加至所述空白表。
8.根据权利要求5所述的方法,其特征在于,在所述第一列表中筛选出所述设备类型为目标类型的设备,以及所述目标类型的设备对应的总线信息,得到第二列表,还包括:
将所述第一列表中除所述目标类型以外的其他类型的设备,以及所述其他类型的设备对应的总线信息删除,得到所述第二列表。
9.根据权利要求8所述的方法,其特征在于,将所述第一列表中除所述目标类型以外的其他类型的设备,以及所述其他类型的设备对应的总线信息删除,得到所述第二列表,包括:
对所述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:
获取所述当前设备的设备类型;
在所述当前设备的设备类型不为所述目标类型的情况下,将所述第一列表中所述当前设备以及所述当前设备对应的总线信息删除。
10.根据权利要求5所述的方法,其特征在于,获取所述第一列表中记录的所述目标节点当前连接的所有设备中的每个设备的设备类型,包括:
根据所述第一列表中记录的每个设备的总线信息的目标字段,确定所述每个设备的设备类型。
11.根据权利要求10所述的方法,其特征在于,根据所述第一列表中记录的每个设备的总线信息的目标字段,确定所述每个设备的设备类型,包括:
对所述第一列表中记录的每个设备执行以下操作,在执行以下操作时的设备为当前设备:
获取所述第一列表中记录的所述当前设备的当前总线信息;
获取所述当前总线信息中的目标字段,其中,所述目标字段用于标识所述当前设备的设备类型;
根据所述目标字段确定所述当前设备的设备类型。
12.根据权利要求5所述的方法,其特征在于,根据所述第二列表确定出所述目标标签列表,包括:
对所述第二列表中记录的每个设备的总线信息进行格式转换,得到所述每个设备对应的标签信息;
根据所述第二列表中记录的每个设备,以及与每个设备对应的标签信息确定出所述目标标签列表。
13.根据权利要求12所述的方法,其特征在于,所述每个设备对应的标签信息的格式为键值对的格式。
14.根据权利要求13所述的方法,其特征在于,所述每个设备对应的总线信息中的设备型号信息和设备位置信息组成所述键值对,所述设备型号信息为键,所述设备位置信息为值。
15.根据权利要求1所述的方法,其特征在于,在所述在目标节点的目标容器组合上获取目标标签信息之前,所述方法还包括:
创建所述目标容器组合,其中,所述目标容器组合中包括一个或多个容器;
为所述目标容器组合分配目标设备;
确定所述目标设备的所述目标标签信息。
16.根据权利要求15所述的方法,其特征在于,所述确定所述目标设备的所述目标标签信息,包括:
获取所述目标设备的设备标识;
将所述目标设备的设备标识发送给所述目标节点上的目标插件,以通过所述目标插件确定所述目标标签信息。
17.根据权利要求16所述的方法,其特征在于,在将所述目标设备的设备标识发送给所述目标节点上的目标插件,以通过所述目标插件确定所述目标标签信息之后,所述方法还包括:
将所述目标标签信息添加到所述目标容器组合中的注解中。
18.根据权利要求16所述的方法,其特征在于,在所述将所述目标设备的设备标识发送给所述目标节点上的目标插件,以通过所述目标插件确定所述目标标签信息之前,所述方法还包括:
获取所述目标节点当前连接的所述目标类型的设备的设备标识;
获取所述目标节点当前连接的目标类型的设备的标签信息;
建立所述标签信息和所述设备标识之间的关联关系。
19.根据权利要求18所述的方法,其特征在于,在所述建立所述标签信息和所述设备标识之间的关联关系之后,所述方法还包括:
将所述关联关系存储在所述目标插件。
20.一种设备确定装置,其特征在于,包括:
第一获取模块,用于在目标节点的目标容器组合上获取目标标签信息,其中,所述目标标签信息是在所述目标节点上创建所述目标容器组合时创建的信息;
第二获取模块,用于获取目标标签列表,其中,所述目标标签列表中记录了所述目标节点当前连接的所有目标类型的设备,以及与每个所述目标类型的设备对应的标签信息,所述目标标签列表是在对所述目标节点进行初始化的过程中生成的;
确定模块,用于通过所述目标标签信息和所述目标标签列表确定所述目标容器组合当前正在使用的目标设备;
其中,所述装置用于通过以下方式对所述目标节点进行初始化:查询所述目标节点上当前连接的所有设备以及所有设备的总线信息;
所述装置用于通过以下方式在对所述目标节点进行初始化的过程中生成所述目标标签列表:根据所述所有设备以及所有设备的总线信息生成所述目标标签列表,其中,所述目标节点当前连接的所有设备中包括所述目标类型的设备。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至19任一项中所述的方法的步骤。
22.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至19任一项中所述的方法的步骤。
CN202310617101.2A 2023-05-29 2023-05-29 设备确定方法、装置、存储介质及电子装置 Active CN116339927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310617101.2A CN116339927B (zh) 2023-05-29 2023-05-29 设备确定方法、装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310617101.2A CN116339927B (zh) 2023-05-29 2023-05-29 设备确定方法、装置、存储介质及电子装置

Publications (2)

Publication Number Publication Date
CN116339927A CN116339927A (zh) 2023-06-27
CN116339927B true CN116339927B (zh) 2023-08-15

Family

ID=86884502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310617101.2A Active CN116339927B (zh) 2023-05-29 2023-05-29 设备确定方法、装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN116339927B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251297B (zh) * 2023-11-15 2024-03-01 苏州元脑智能科技有限公司 一种设备分配方法及电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527449A (zh) * 2020-11-19 2021-03-19 北京浪潮数据技术有限公司 一种集群节点标签创建方法、系统及电子设备和存储介质
CN112925611A (zh) * 2021-03-11 2021-06-08 南京邮电大学 一种基于共享式gpu的分布式容器调度方法及其系统
CN115658429A (zh) * 2022-10-17 2023-01-31 北京百度网讯科技有限公司 容器挂载设备监控方法、装置、设备及存储介质
CN115858083A (zh) * 2021-09-26 2023-03-28 中兴通讯股份有限公司 容器cpu资源调度与隔离方法和装置、存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527449A (zh) * 2020-11-19 2021-03-19 北京浪潮数据技术有限公司 一种集群节点标签创建方法、系统及电子设备和存储介质
CN112925611A (zh) * 2021-03-11 2021-06-08 南京邮电大学 一种基于共享式gpu的分布式容器调度方法及其系统
CN115858083A (zh) * 2021-09-26 2023-03-28 中兴通讯股份有限公司 容器cpu资源调度与隔离方法和装置、存储介质及电子设备
CN115658429A (zh) * 2022-10-17 2023-01-31 北京百度网讯科技有限公司 容器挂载设备监控方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN116339927A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
CN113641457B (zh) 容器创建方法、装置、设备、介质及程序产品
CN110489126B (zh) 编译任务的执行方法和装置、存储介质及电子装置
CN114244717B (zh) 虚拟网卡资源的配置方法、装置、计算机设备及介质
CN116339927B (zh) 设备确定方法、装置、存储介质及电子装置
CN111582824B (zh) 云资源同步方法、装置、设备及存储介质
CN108073350A (zh) 一种用于云渲染的对象存储系统和方法
CN111258680A (zh) 资源加载方法和装置、存储介质及电子装置
CN114706690B (zh) 一种Kubernetes容器共享GPU方法及系统
CN112468545A (zh) 一种云主机创建方法、装置、系统、设备及可读存储介质
CN114565502A (zh) Gpu资源管理方法、调度方法、装置、电子设备及存储介质
CN111124437A (zh) 一种基于OpenStack的裸机资源配置信息获取方法、系统及设备
CN108667750B (zh) 虚拟资源管理方法及装置
CN113220432A (zh) 多云互联方法、装置、设备、存储介质及产品
JP2024501005A (ja) コンテナクラスタのための管理方法および装置
CN111447076B (zh) 网络功能虚拟化nvf系统的容器部署方法及网元
CN114911421B (zh) 基于csi插件的数据存储方法、系统、装置及存储介质
CN115665231A (zh) 服务创建方法、装置以及计算机可读存储介质
CN112379867B (zh) 一种基于模块化开发的嵌入式操作系统、方法及存储介质
CN111857736B (zh) 云计算产品的生成方法、装置、设备及存储介质
CN114090242A (zh) 模型训练方法、装置、设备、存储介质及程序产品
CN110362575B (zh) 一种生成数据的全局索引的方法及装置
CN117251297B (zh) 一种设备分配方法及电子设备和存储介质
CN115469961A (zh) 容器组的创建方法和装置、电子设备和存储介质
CN109413011B (zh) 公共服务资源申请方法、相关设备及系统
CN106990990B (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