CN113918273A - 一种容器组的创建方法和装置 - Google Patents

一种容器组的创建方法和装置 Download PDF

Info

Publication number
CN113918273A
CN113918273A CN202010662159.5A CN202010662159A CN113918273A CN 113918273 A CN113918273 A CN 113918273A CN 202010662159 A CN202010662159 A CN 202010662159A CN 113918273 A CN113918273 A CN 113918273A
Authority
CN
China
Prior art keywords
reserved field
identifications
pod
scheduling module
identification
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
Application number
CN202010662159.5A
Other languages
English (en)
Other versions
CN113918273B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010662159.5A priority Critical patent/CN113918273B/zh
Priority to PCT/CN2021/102243 priority patent/WO2022007645A1/zh
Publication of CN113918273A publication Critical patent/CN113918273A/zh
Application granted granted Critical
Publication of CN113918273B publication Critical patent/CN113918273B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

为了解决调度模块创建的容器组可用性不高的问题,本申请提供了一种容器组的创建方法,包括:利用第一预留字段向调度模块传递第一标识集合,该第一标识集合包括至少一个可用设备的标识,利用第二预留字段获取第二标识集合,该第二标识集合包括调度模块根据第一标识集合为容器组分配的设备的标识,然后根据第二标识集合创建容器组。如此可以实现根据调度模块指定的设备创建容器组,为容器组提供充足资源,保障容器组可用性。并且,无需对原生接口进行修改,减少了侵入式修改。

Description

一种容器组的创建方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种容器组的创建方法、装置、设备以及计算机可读存储介质。
背景技术
应用开发完成后,通常需要将应用部署到生产环境,以供用户使用。为了提高可用性,保障用户体验,一般可以部署该应用的多个实例,以对应用请求进行负载均衡。基于此,业界提出了容器编排引擎,该容器编排引擎支持自动化部署、大规模可伸缩、应用容器化管理。以容器编排引擎为kubernetes为例,在kubernetes中可以创建多个容器,每个容器运行一个应用实例,然后通过内置的负载均衡策略,可以实现对这一组应用实例的管理、发现、访问,无需运维人员进行复杂的手工配置和处理。
kubernetes将集群中的节点划分为一个主节点(Master)和至少一个工作节点(Node)。其中,Master用于控制和管理Node,Node用于运行应用,从而对外提供服务。具体地,Master在Node上创建容器组(pod),其中,pod包含至少一个容器,每个容器运行有相同应用的进程。
Master具有原生的调度器kube-scheduler。kube-scheduler用于根据调度算法确定最优的Node,然后在最优的Node上创建pod,从而更加合理、充分地利用kubernetes集群的资源。其中,kube-scheduler有一个明显的特点是依次调度每个容器。在人工智能(artificial intelligence,AI)训练、大数据、高性能计算等需要多个容器同时配合执行的场景中,容器依次调度难以满足业务需求。
基于此,一些自定义的调度模块应运而生。这些自定义的调度模块支持同时创建多个pod,从而实现同时调度多个容器。但是,该调度模块创建的pod可用性不高,影响了服务质量。由此,业界亟需提供一种高可用的pod创建方法。
发明内容
本申请提供了一种容器组(pod)的创建方法,该方法利用预留字段传递至少一个可用设备的标识,以供调度模块能够根据该标识指定具体的设备,并通过预留字段传递指定的设备的标识,然后工作节点代理根据该指定的设备创建pod,而不是随机选择设备创建pod,提高了pod的可用性,进而提高了服务质量。本申请还提供了上述方法对应的装置、设备、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种pod的创建方法。该方法利用预留字段在工作节点代理和调度模块之间传递设备的标识,从而实现根据指定的设备创建pod,为pod提供充足的资源,提高了pod的可用性,进而提高了pod中运行的应用的服务质量。而且该方法无需修改调度设备和工作节点代理之间的接口、主节点的接口等,减少了侵入式修改。
具体地,利用针对工作节点(Node)的第一预留字段向调度模块传递第一标识集合,该第一标识集合包括至少一个可用设备的标识。对应地,调度模块可以知晓可用设备的明细,而不仅仅是可用设备的数量。调度模块能够根据可用设备的明细为pod分配具体的设备,调度模块分配的设备的标识(第二标识集合)能够通过第二预留字段被获取,并用于创建pod。
在一些可能的实现方式中,利用第一预留字段向调度模块传递第一标识集合,具体可以是在针对工作节点的第一预留字段中写入第一标识集合,该第一标识集合用于被调度模块从第一预留字段中读取,从而实现传递第一标识集合。由于无需修改接口,直接通过读写数据方式实现传递第一标识集合,减少了侵入式修改。
在一些可能的实现方式中,利用第二预留字段获取第二标识集合,具体可以是从针对pod的第二预留字段中读取第二标识集合,该第二标识集合由调度模块写入上述第二预留字段。由于无需修改接口,直接通过读写数据方式实现传递第一标识集合,减少了侵入式修改。
在一些可能的实现方式中,还可以向设备插件框架(device plugin)下发第二标识集合,然后接收device plugin发送的设备路径,该设备路径用于为工作节点挂载对应的设备,从而为保障为pod提供充足的资源,并且合理地利用集群中的资源,避免资源不足或资源浪费。
在一些可能的实现方式中,预留字段包括注解(annotation)或标签(lable)。基于此,第一预留字段可以是第一annotation,或者第一lable,第二预留字段可以是第二annotation,或者第二lable。无论label还是annotation均可以将元数据关联到资源对象,例如将标识集合关联到Node。
考虑到annotation中数据的大小可以是不固定的,数据可以是结构化的,也可以是非结构化的,可以采用针对Node的第一annotation传递第一标识集合。当第一标识集合中数据的大小固定,数据是结构化数据时,也可以采用针对Node的第一lable传递第一标识集合。
在一些可能的实现方式中,pod被部署在kubernetes集群,上述方法具体可以由kubernetes集群中的工作节点代理例如kubelet执行。
第二方面,本申请提供了一种容器组的创建方法。具体地,根据针对Node的第一预留字段获取第一标识集合,该第一标识集合包括至少一个可用设备的标识,然后根据第一标识集合为pod分配设备,获得第二标识集合,该第二标识集合包括分配设备的标识,然后利用第二预留字段向工作节点代理传递第二标识集合,该第二标识集合用于工作节点代理创建pod。
该方法利用预留字段在工作节点代理和调度模块之间传递设备的标识,从而实现根据指定的设备创建pod,为pod提供充足的资源,提高了pod的可用性,进而提高了pod中运行的应用的服务质量。而且该方法无需修改调度设备和工作节点代理之间的接口、主节点的接口等,减少了侵入式修改。
在一些可能的实现方式中,根据针对Node的第一预留字段获取第一标识集合,具体可以为从针对Node的第一预留字段中读取第一标识集合,该第一标识集合由工作节点代理写入第一预留字段。由于无需修改接口,直接通过读写数据方式实现传递第一标识集合,减少了侵入式修改。
在一些可能的实现方式中,利用第二预留字段向工作节点代理传递第二标识集合,具体可以为在针对pod的第二预留字段中写入第二标识集合,该第二标识集合用于被工作节点代理从第二预留字段中读取。由于无需修改接口,直接通过读写数据方式实现传递第一标识集合,减少了侵入式修改。
在一些可能的实现方式中,预留字段包括annotation或lable。其中,lable适用于长度固定的结构化数据,annotation还可以适用于长度不固定的结构化数据、长度固定的非结构化数据和长度不固定的非结构化数据。也即,待传递的标识集合长度固定,且为结构化数据时,既可以将该标识集合写入lable,也可以写入annotation;待传递的标识集合长度不固定,或者是非结构化数据时,可以将该标识集合写入annotation。
在一些可能的实现方式中,pod可以被部署在kubernetes集群,上述方法可以由kubernetes集群的调度模块执行。
第三方面,本申请提供了一种pod创建装置。该pod创建装置包括:
通信模块,用于利用针对Node的第一预留字段向调度模块传递第一标识集合,该第一标识集合包括至少一个可用设备的标识;
通信模块,还用于利用第二预留字段获取第二标识集合,该第二标识集合包括调度模块根据第一标识集合为pod分配的设备的标识;
创建模块,用于根据第二标识集合创建pod。
在一些可能的实现方式中,通信模块具体用于:
在针对Node的第一预留字段中写入第一标识集合,该第一标识集合用于被调度模块从第一预留字段中读取。
在一些可能的实现方式中,通信模块具体用于:
从第二预留字段中读取第二标识集合,该第二标识集合由调度模块写入第二预留字段。
在一些可能的实现方式中,通信模块还用于:
向设备插件框架下发第二标识集合;
接收设备插件框架发送的设备路径,该设备路径用于为工作节点挂载对应的设备。
在一些可能的实现方式中,预留字段包括注解或标签。
在一些可能的实现方式中,pod被部署在kubernetes集群,pod创建装置为kubernetes集群中的工作节点代理。
第四方面,本申请提供了一种pod创建装置。该pod创建装置包括:
通信模块,用于根据针对Node的第一预留字段获取第一标识集合,该第一标识集合包括至少一个可用设备的标识;
分配模块,用于根据第一标识集合为pod分配设备,获得第二标识集合,该第二标识集合包括分配设备的标识;
通信模块,还用于利用第二预留字段向工作节点代理传递第二标识集合,该第二标识集合用于工作节点代理创建pod。
在一些可能的实现方式中,通信模块具体用于:
从针对Node的第一预留字段中读取第一标识集合,该第一标识集合由工作节点代理写入第一预留字段。
在一些可能的实现方式中,通信模块具体用于:
在第二预留字段中写入第二标识集合,该第二标识集合用于被工作节点代理从第二预留字段中读取。
在一些可能的实现方式中,预留字段包括注解或标签。
在一些可能的实现方式中,pod被部署在kubernetes集群,pod创建装置为kubernetes集群的调度模块。
第五方面,本申请提供一种计算设备,计算设备包括处理器和存储器。处理器、存储器进行相互的通信。处理器用于执行存储器中存储的指令,以使得计算设备执行如第一方面或第一方面的任一种实现方式中的pod创建方法。
第六方面,本申请提供一种计算设备,计算设备包括处理器和存储器。处理器、存储器进行相互的通信。处理器用于执行上述存储器中存储的指令,以使得计算设备执行如第一方面或第一方面的任一种实现方式中的pod创建方法。
第七方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,该指令指示设备执行上述第一方面或第二方面的任一种实现方式中的pod创建方法。
第八方面,本申请提供了一种包含指令的计算机程序产品,当其在设备上运行时,使得设备执行上述第一方面或第二方面的任一种实现方式中的pod创建方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种pod创建方法的系统架构图;
图2为本申请实施例提供的一种pod创建方法的应用场景图;
图3为本申请实施例提供的一种pod创建方法的交互流程图;
图4为本申请实施例提供的一种pod创建装置的结构示意图;
图5为本申请实施例提供的一种pod创建装置的结构示意图;
图6为本申请实施例提供的一种计算设备的结构示意图;
图7为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
应用(application,APP),是针对用户的某种特殊应用目的所撰写的计算机程序的集合,具体可以是单一的应用程序或者多个应用程序的集合形成的应用软件。例如,应用可以是产品、订单、用户等多个应用程序的集合形成的电商系统。又例如,应用可以是编辑器等应用程序。
应用在开发完成后,可以被部署到生产环境(production environment)中供客户使用。其中,生产环境是指客户实际使用应用的环境,应用被部署到生产环境的过程也可以称为应用上线的过程。应用被部署到生产环境后,可以正式地提供对外服务。
当应用被部署到物理机或者虚拟机时,操作系统的一些更新可能损坏该应用。例如,一个操作系统的更新导致对应用的若干依赖的更新,一些不兼容的更新甚至可以导致应用运行异常。另外,如果两个或两个以上的应用共享相同的操作系统和一些相同的库文件(library,lib),则其中一个或一些应用的库文件的更新可以影响其他应用。
基于此,应用还可以被部署到容器(container)中。一个容器包含了完整的运行时环境。运行时环境是指除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等。这些文件统一被打包至一个称为容器镜像的包中,从而形成容器。
由于容器封装了运行应用所必需的相关文件,如依赖以及操作系统,因而部署在容器中的应用不会受到操作系统变更或者依赖变更的影响,保障了应用能够无中断地运行。并且,由于无需考虑操作系统差异,将容器化应用由一个环境移植到另一个环境更加灵活。
在一些实现方式中,应用可以被部署到一个或多个容器形成的容器组(pod)中。pod是一组容器(包括至少一个容器)的集合,在pod里面的容器可以共享网络和/或存储。考虑到pod中的容器应用具有共生性,即同时启动,同时终止,因此,一个pod中的多个容器通常部署相同应用。当应用包括多个不同的应用程序时,可以为多个应用程序分别创建pod,每个pod用于部署多个应用程序中的一个。
当容器数量达到一定规模时,通常可以使用容器编排工具(例如容器编排引擎)对容器进行编排,以实现自动化部署、大规模可伸缩、应用容器化管理。所谓容器编排是指对部署应用的多个容器之间的交互方式进行排布,使得容器基于设定的交互方式进行交互,以保障应用正常运行。
其中,容器编排工具包括多种,例如docker swarm、docker compose、kubernetes或者apache mesos等等。为了便于描述,后文以容器编排工具为kubernetes进行示例说明。本申请实施例提供的pod创建方法包括但不限于应用于kubernetes。
kubernetes将集群中的节点划分为一个主节点(Master)和至少一个工作节点(Node)。
其中,Master上运行有与集群管理相关的一组进程,例如接口服务器(kube-apiserver)、kube控制器管理器(kube-controller-manager)和调度器(kube-scheduler)等进程。Master通过这些进程可以实现对整个集群的资源管理、pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力。
Node上运行应用的进程,从而对外提供服务。其中,应用的进程具体是在pod的容器中运行的。Node上还运行有服务进程,例如代理(kubelet)、网络代理(kube-proxy)等进程,Node通过这些服务进程实现Pod的创建、启动、监控、重启、销毁以及负载均衡。
kubernetes原生支持的硬件设备时有限的,例如,kubernetes原生支持中央处理器(central processing unit,CPU),但是不支持图形处理器(graphical processingunit,GPU)、现场可编程门阵列(field programmable gate array,FPGA)、高性能网络接口控制器(network interface controller,NIC)以及无线带宽(infiniband,IB)设备。
为此,kubernetes提供了一个设备插件框架(device plugin),用于将硬件资源发布到kubelet。具体地,device plugin提供通用设备插件机制和标准的设备应用程序编程(application programming interface,API)接口。设备厂商仅需实现相应的API接口,无需修改kubelet主干代码,就可以实现支持GPU、FPGA、NIC、InfiniBand等设备。
在部署应用时,Master上运行的调度器kube-scheduler根据调度算法确定最优的Node,然后在最优的Node上创建pod,从而更加合理、充分地利用kubernetes集群的资源。其中,kube-scheduler有一个明显的特点是依次调度每个容器。
在人工智能(artificial intelligence,AI)训练、大数据、高性能计算等需要多个容器同时配合执行的场景中,容器依次调度难以满足业务需求,具体为难以满足多个相关任务同时执行成功,如果存在一个任务执行不成功,则所有任务都不执行的需求。
基于此,一些自定义的调度模块应运而生。这些自定义的调度模块支持同时创建多个pod,从而实现同时调度多个容器。其中,调度模块为了将pod分配到合理的Node上,需要知道Node上设备的信息,根据Node的资源情况评估是否将pod分配到该Node。具体地,device plugin通过list and watch接口将设备列表上报到kubelet,kubelet缓存一份设备列表,根据设备列表生成可分配资源allocatable,调度模块通过Master查询至少一个Node的kubelet上的可分配资源allocatable。然后,调度模块根据该allocatable确定将pod分配到目标Node,下发创建pod命令到Master,其中,命令中携带pod的标识podId和需要的设备数量(为了便于描述,记作m,m大于1)。接着,Master将命令下发到kubelet上,kubelet查询本地缓存的设备列表,随机挑选m个设备,通过allocate接口下发至deviceplugin。device plugin接收收到设备列表后,返回相应设备的路径给kubelet。kubelet执行创建Pod、挂载设备等动作。
然而,kubelet原生方案中,kubelet将device-plugin返回的设备列表转换成设备数量,这样会导致调度模块只能知道Node上设备数量,而无法知道设备列表。如此,调度模块在创建pod时,也只能指定pod需要使用多少设备,而无法指定具体的设备。由此,影响了pod的可用性,进而影响了服务质量。
相关技术提供了一种在Master和调度模块之间传递设备列表的方法,然而该方法需要修改kubelet和Master之间的接口、Master API接口等,对kubernetes的侵入式修改太多,如此增加了应用部署成本,降低了部署效率。
有鉴于此,本申请实施例提供了一种pod创建方法。该方法利用kubernetes的预留字段在调度模块和kubelet之间传递设备列表,如可用设备的列表、为容器组分配的设备的列表等等,一方面实现了调度模块在创建pod时能够指定设备,保障pod的高可用性,另一方面无需修改kubelet和Master之间的接口、Master API接口,减少了对kubernetes的侵入式修改,减少了部署应用的工作量,降低了部署成本,提高了部署效率。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例的pod创建方法的系统架构进行介绍。
参见图1所示的pod创建方法的系统架构图。如图1所示,kubernetes集群中包括Master和Node。其中,Master中包括调度模块,该调度模块可以是自定义的调度模块,例如原生的调度模块kube scheduler(图1未示出)之外的调度模块。Master中还包括其他的管理进程,如kube-controller-manager和kube-apiserver。Node中包括kubelet和deviceplugin。
具体地,device plugin通过list and watch接口将第一标识集合上报至kubelet,其中,第一标识集合包括至少一个可用设备的标识。kubelet将该第一标识集合写入第一预留字段,对应地,调度模块可以从第一预留字段中读取第一标识集合。调度模块利用调度算法从第一标识集合标识的可用设备中为pod分配设备,得到第二标识集合,该第二标识集合包括调度模块根据第一标识集合为pod分配的设备的标识。然后,调度模块将第二标识集合写入第二预留字段。kubelet从第二预留字段中读取第二标识集合,将第二标识集合下发至device plugin。device plugin接收到上述第二标识集合,将第二标识集合所标识设备的路径返回至kubelet。如此,kubelet可以创建pod,并根据设备的路径挂载设备至上述pod。
如图2所示,Master和Node可以是云环境中的物理机或虚拟机。云环境具体为包括至少一个云计算设备(例如中心服务器)的计算集群。在一些实现方式中,Master和Node也可以是边缘环境中的物理机或者虚拟机。边缘环境具体为包括至少一个边缘计算设备(例如边缘服务器)的计算集群。在另一些实现方式中,Master和Node还可以是端设备或者是端设备上的虚拟机。需要说明的是,Master和Node可以是相同环境中的物理机或虚拟机,也可以是不同环境中的物理机或虚拟机,例如Master可以是云环境中的物理机,Node可以是边缘环境中的物理机。
调度模块以计算机程序的形式存储于Master中,kubelet、device plugin以计算机程序的形式存储于Node中。上述计算机程序被执行时产生相应的进程,这些进程通过交互实现本申请实施例的pod创建方法。
图1是以kubernetes集群包括一个Master和一个Node进行示例说明。在一些实现方式中,kubernetes集群可以包括多个Node,如此,可以将应用分布式地部署在多个Node。进一步地,kubernetes集群中也可以包括多个Master,当一个Master故障时,可以启用另一个Master,如此可以保证高可用性。
接下来,将从调度模块和kubelet、device plugin等交互的角度对本申请实施例提供的pod创建方法进行详细介绍。
参见图3所示的pod创建方法的流程图,该方法包括:
S302:device plugin向kubelet上报第一标识集合。
第一标识集合包括至少一个可用设备的标识。其中,可用设备是指健康状态为健康的设备。设备的标识能够唯一标识设备的身份,基于此,设备的标识可以是设备编号、设备地址或者根据设备编号、设备地址等确定的字符序列。其中,设备编号、设备地址或者根据该设备编号、设备地址确定的字符序列具有唯一性。
第一标识集合中数据组织的形式可以是列表,也可以是文本,例如JavaScript对象简谱(JavaScript object notation,JSON)文本,或者是其他数据类型。为了便于描述,下面以第一标识集合中数据组织的形式为列表进行示例说明。如表1所示,第一标识集合可以为:
表1第一标识集合
Figure BDA0002579004590000071
Figure BDA0002579004590000081
其中,表1中可用设备的标识为可用设备的编号。
进一步地,第一标识集合也可以包括所有设备的标识,具体包括可用设备的标识和不可用设备的标识。对应地,针对每个设备,第一标识集合还记录有设备的健康状态,以便于从第一标识集合中区分可用设备的标识和不可用设备的标识。为了便于描述,下面以第一标识集合中数据组织的形式为列表进行示例说明。如表2所示,第一标识集合可以为:
表2第一标识集合
100210532xxxxx0301 健康
…… ……
100210712xxxxx2408 不健康
其中,表2中设备的标识为设备的编号,设备的健康状态用于表征设备是否可用。其中,表征设备是否可用可以通过多种方式实现,例如可以分别用0和1表示设备不可用(设备健康状态为不健康)、设备可用(设备健康状态为健康)。
当第一标识集合采用列表的形式组织数据时,device plugin可以采用list andwatch接口向kubelet上报第一标识集合。当然,第一标识集合采用其他形式组织数据时,device也可以采用其他方式上报第一标识集合。
应理解,执行本申请实施例的pod创建方法也可以不执行S302。例如,kubernetes中的扩展设备均为kubernetes原生支持的设备时,无需device plugin上报上述第一标识集合。
S304:kubelet利用第一预留字段向调度模块传递第一标识集合。
第一预留字段是针对Node的预留字段。其中,Node实质是kubernetes集群的一种资源对象。kubernetes集群提供有至少一个属性字段用于描述Node这一资源对象。基于此,针对Node的第一预留字段可以是Node的预留属性字段。Node的预留属性字段可以用于描述Node的一种属性或多种属性。
在一些实现方式中,该预留字段可以是标签(label)或者注解(annotation)等字段。其中,label和annotation均可以将元数据关联到kubernetes资源对象,例如将标识集合关联到Node。
考虑到annotation中数据的大小可以是不固定的,数据可以是结构化的,也可以是非结构化的,因此,kubelet可以采用针对Node的第一annotation向调度模块传递上述第一标识集合。为了便于描述,后文均以第一预留字段为第一annotation进行示例说明,在本申请实施例其他可能的实现方式中,kubelet也可以采用其他第一预留字段,如第一label传递第一标识集合。
具体地,kubelet可以将第一标识集合写入第一annotation。其中,kubelet可以采用键值对(key value)的结构写入上述第一标识集合至第一annotation。对应地,调度模块可以从第一annotation中读取上述第一标识集合,从而实现在kubelet和调度模块之间传递第一标识集合。
其中,调度模块在读取第一标识集合时,可以通过kube-apiserver进行读取。具体地,调度模块可以向kube-apiserver发送读请求,该读请求具体用于从第一annotation读取第一标识集合。kube-apiserver接收到上述读请求,利用对应的API(通常是经过封装的函数)读取第一标识集合。
为了便于理解,下面还提供了一具体示例对写入第一标识集合的过程进行说明。
在该示例中,kubelet在kubelet/cm/devicemanager/manager.go中,通过如下函数写入第一标识集合:
func(m*ManagerImpl)WriteNodeAnnotation()
{
1、读取kubelet中缓存第一标识集合。
2、获取kubelet对应Node对象。
3、在Node对象的Annotation字段中写入第一标识集合。
}
其中,NodeAnnotation表征针对Node的第一annotation。
调度模块读取第一标识集合的过程可以通过kube-apiserver中相应的函数实现,在此不再赘述。
在一些可能的实现方式中,kubelet也可以通过报文方式向调度模块传递第一标识集合。具体地,kubelet可以在报文中携带上述第一预留字段,然后向调度模块发送报文,从而实现向调度模块传递第一标识集合。其中,携带上述第一预留字段的报文也可称为第一报文。
S306:调度模块根据第一标识集合为pod分配设备,获得第二标识集合。
调度模块可以根据至少一个Node的第一标识集合确定至少一个Node的资源状况,根据该资源状况确定将pod分配至目标Node。具体地,调度模块可以从可分配资源大于需求资源的Node中确定目标Node,将pod分配至上述目标Node。其中,资源可以是计算资源、网络资源、存储资源等资源中的一种或多种。
接着调度模块可以利用调度算法从目标Node的可分配资源中为pod分配资源,该资资源为Node关联的设备的资源,由此实现为pod分配设备。调度模块根据分配的设备的标识获得第二标识集合。该第二标识集合包括调度模块根据第一标识集合为pod分配的设备的标识。
与第一标识集合类似,第二标识集合中的标识可以是设备编号、设备地址或者根据设备编号、设备地址确定的字符序列等等。第二标识集合中的数据可以采用列表、文本(如JSON文本)或者其他类型进行组织。
S308:调度模块利用第二预留字段向kubelet传递第二标识集合。
第二预留字段是针对pod的预留字段。其中,pod也是kubernetes集群的一种资源对象。kubernetes集群提供有至少一个属性字段用于描述pod这一资源对象。基于此,针对pod的第二预留字段可以是pod的预留属性字段。pod的预留属性字段可以用于描述pod的一种属性或多种属性。
在一些可能的实现方式中,预留字段可以是lable或者annotation等字段。label和annotation均可以将pod和第二标识集合关联。为了便于描述,本申请以第二预留字段为第二annotation进行示例说明。
具体地,调度模块可以将第二标识集合写入针对pod的第二annotation,对应地,kubelet从针对pod的第二annotation中读取上述第二标识集合,如此实现了在调度模块和kubelet之间传递第二标识集合。其中,调度模块写入第二标识集合至第二annotation时,可以采用key value形式写入。
其中,调度模块在写入第二标识集合时,也可以通过kube-apiserver进行写入。具体地,调度模块可以向kube-apiserver发送写请求,该写请求具体用于向第二annotation写入第二标识集合。kube-apiserver接收到上述写请求,利用对应的API(通常是经过封装的函数)写入第二标识集合。
下面还提供了一具体示例对写入第二标识集合的过程进行说明。
在该示例中,kubelet在kubelet/cm/devicemanager/manager.go中,通过如下函数读取第二标识集合:
func(m*ManagerImpl)ReadPodAnnotation(podId)
{
1、通过podId获取pod信息。
2、读取Pod Annotaion字段中第二标识集合。
}
其中,PodAnnotation表征针对pod的第二annotation。
调度模块写入第二标识集合的过程具体通过kube-apiserver中的相应函数实现,在此不再赘述。
在一些可能的实现方式中,调度模块也可以通过报文方式向kubelet传递第二标识集合。具体地,调度模块可以在报文中携带上述第二预留字段,然后向kubelet发送报文,从而实现向kubelet传递第二标识集合。其中,携带上述第二预留字段的报文也可称为第二报文。
第一报文和第二报文可以是不同的报文。第一报文用于通过第一预留字段传递第一标识集合,第二报文用于通过第二预留字段传递第二标识集合。
在一些可能的实现方式中,第一报文和第二报文也可以是同一报文。具体地,该第一报文携带第一预留字段和第二预留字段。其中,kubelet发送第一报文时,第二预留字段可以为空值或者默认值等等,调度模块接收到该第一报文,在第一报文中的第二预留字段填入第二标识集合,然后向kubelet返回处理后的报文。
S310:kubelet根据第二标识集合创建pod。
具体地,kubelet可以创建pod,将第二标识集合标识的设备挂载至上述pod。其中,kubelet挂载设备时,可以先向device plugin发送第二标识集合,device接收到该第二标识集合,可以获取第二标识集合所标识设备的路径,然后向kubelet返回上述路径。kubelet可以根据该路径挂载设备。如此,实现了调度模块创建pod时指定设备,提高pod可用性。
在一些实现方式中,kubelet可以在接收到创建pod的命令时,根据第二标识集合创建pod。其中,创建pod的命令中携带有pod的标识podId和需求的设备的数量。创建pod的命令具体是调度模块生成,并通过kubeapiserver下发至kubelet。如此,kubelet根据该命令以及第二标识集合创建标识为podId的pod。
基于上述内容描述,本申请实施例提供了一种pod创建方法。在该方法中,kubelet利用针对Node的第一预留字段向调度模块传递第一标识集合,调度模块根据该第二标识集合为pod分配设备,获得第二标识集合,然后调度模块利用针对pod的第二预留字段向kubelet传递第二标识集合,如此,kubelet根据第二标识集合所标识的设备创建pod。一方面实现了调度模块能够指定设备用于创建pod,保障pod的高可用性,另一方面无需修改kubelet和Master之间的接口、Master API接口,减少了对kubernetes的侵入式修改,减少了部署应用的工作量,降低了部署成本,提高了部署效率。
图3所示实施例是以kubernetes场景为例进行示例说明。在其他可能的实现方式中,工作节点代理可以是除了kubelet之外的其他代理。工作节点代理和调度模块可以通过annotation等预留字段传递第一标识集合和第二标识集合,从而实现根据指定设备创建pod,保障pod的高可用性,而且无需修改Node和Master之间接口,以及Master的API接口,减少了侵入性修改。
上文结合图1至图3对本申请实施例提供的pod创建方法进行了详细介绍,下面将结合附图对本申请实施例提供的装置、设备进行介绍。
参见图4所示的pod创建装置的结构示意图,该装置400包括:
通信模块402,用于利用第一预留字段向调度模块传递第一标识集合,该第一标识集合包括至少一个可用设备的标识;
通信模块402,还用于利用第二预留字段获取第二标识集合,第二标识集合包括调度模块根据第一标识集合为pod分配的设备的标识;
创建模块404,用于根据第二标识集合创建pod。
在一些可能的实现方式中,通信模块402具体用于:
在第一预留字段中写入第一标识集合,该第一标识集合用于被调度模块从第一预留字段中读取。
在一些可能的实现方式中,通信模块402具体用于:
从第二预留字段中读取第二标识集合,该第二标识集合由调度模块写入第二预留字段。
在一些可能的实现方式中,通信模块402还用于:
向设备插件框架下发第二标识集合;
接收设备插件框架发送的设备路径,该设备路径用于为工作节点挂载对应的设备。
在一些可能的实现方式中,预留字段包括注解或标签。
在一些可能的实现方式中,pod被部署在kubernetes集群,pod创建装置400为kubernetes集群中的工作节点代理,例如kubelet。
根据本申请实施例的pod创建装置400可对应于执行本申请实施例中描述的方法,并且pod创建装置400的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
参见图5所示的pod创建装置的结构示意图,该装置500包括:
通信模块502,用于根据第一预留字段获取第一标识集合,该第一标识集合包括至少一个可用设备的标识;
分配模块504,用于根据第一标识集合为pod分配设备,获得第二标识集合,该第二标识集合包括分配设备的标识;
通信模块502,还用于利用第二预留字段向工作节点代理传递第二标识集合,该第二标识集合用于工作节点代理创建pod。
在一些可能的实现方式中,通信模块502具体用于:
从第一预留字段中读取第一标识集合,该第一标识集合由工作节点代理写入第一预留字段。
在一些可能的实现方式中,通信模块502具体用于:
在第二预留字段中写入第二标识集合,该第二标识集合用于被工作节点代理从第二预留字段中读取。
在一些可能的实现方式中,预留字段包括注解或标签。
在一些可能的实现方式中,pod被部署在kubernetes集群,pod创建装置500为kubernetes集群的调度模块。
根据本申请实施例的pod创建装置500可对应于执行本申请实施例中描述的方法,并且pod创建装置500的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算设备600。该计算设备600可以是笔记本电脑、台式机等端侧设备,也可以是云环境或边缘环境中的计算机集群。该计算设备600具体用于实现如图4所示实施例中pod创建装置400的功能。
图6提供了一种计算设备600的结构示意图,如图6所示,设备600包括总线601、处理器602、通信接口603和存储器604。处理器602、存储器604和通信接口603之间通过总线601通信。
总线601可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器602可以为中央处理器(central processing unit,CPU)。存储器604可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器604还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard disk drive,HDD)或固态驱动器(solid state drive,SSD)。
通信接口603用于与外部通信。例如,利用针对Node的第一预留字段向调度模块传递第一标识集合,利用针对pod的第二预留字段获取第二标识集合,向设备插件框架下发第二标识集合等等。
存储器604中存储有可执行代码,处理器602执行该可执行代码以执行前述pod创建方法。
具体地,在实现图4所示实施例的情况下,且图4实施例中所描述的pod创建装置400的各模块为通过软件实现的情况下,执行图4中的创建模块404功能所需的软件或程序代码存储在存储器604中。通信模块功能通过通信接口603实现。通信接口603利用针对Node的第一预留字段向调度模块传递第一标识集合,然后利用针对pod的第二预留字段获取第二标识集合,将第二标识集合通过总线601传输至处理器602,处理器602执行存储器604中存储的各模块对应的程序代码,如创建模块404对应的程序代码,以执行根据第二标识集合创建pod。
在一些可能的实现方式中,通信接口603利用针对Node的第一预留字段向调度模块传递第一标识集合,具体可以是在针对Node的第一预留字段中写入第一标识集合,该第一标识集合用于被调度模块从第一预留字段中读取。
在一些可能的实现方式中,通信接口603利用针对pod的第二预留字段获取第二标识集合,具体可以是从针对pod的第二预留字段中读取第二标识集合,第二标识集合由调度模块写入第二预留字段。
在一些可能的实现方式中,通信接口603还用于:
向设备插件框架下发第二标识集合;
接收设备插件框架发送的设备路径,设备路径用于为工作节点挂载对应的设备。
对应地,处理器604根据第二标识集合创建pod时,可以先创建pod,然后根据设备插件框架发送的设备路径挂载相应的设备。
本申请实施例还提供了另一种计算设备700。该计算设备700可以是笔记本电脑、台式机等端侧设备,也可以是云环境或边缘环境中的计算机集群。该计算设备700具体用于实现如图5所示实施例中pod创建装置500的功能。
图7提供了一种计算设备700的结构示意图,如图7所示,设备700包括总线701、处理器702、通信接口703和存储器704。处理器702、存储器704和通信接口703之间通过总线701通信。其中,总线701、处理器702、通信接口703、存储器704的功能和具体实现参见图6所示实施例相关内容描述,在此不再赘述。
具体地,在实现图5所示实施例的情况下,且图5实施例中所描述的pod创建装置500的各模块为通过软件实现的情况下,执行图5中的分配模块504功能所需的软件或程序代码存储在存储器704中。通信模块502功能通过通信接口703实现。通信接口703根据针对Node的第一预留字段获取第一标识集合,接着将第一标识集合通过总线701传输至处理器702,处理器702执行存储器704中存储的各模块对应的程序代码,如分配模块504对应的程序代码,以执行根据第一标识集合为pod分配设备,获得第二标识集合的步骤。通信接口703再利用针对pod的第二预留字段向工作节点代理传递第二标识集合,其中,第二标识集合用于工作节点代理创建pod。
在一些可能的实现方式中,通信接口703在根据针对Node的第一预留字段获取第一标识集合时,具体可以从针对Node的第一预留字段中读取第一标识集合,该第一标识集合由工作节点代理写入第一预留字段。
在一些可能的实现方式中,通信接口703在利用针对pod的第二预留字段向工作节点代理传递第二标识集合,具体可以是在针对pod的第二预留字段中写入第二标识集合,该第二标识集合用于被工作节点代理从上述第二预留字段中读取。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (20)

1.一种容器组的创建方法,其特征在于,所述方法包括:
利用第一预留字段向调度模块传递第一标识集合,所述第一标识集合包括至少一个可用设备的标识;
利用第二预留字段获取第二标识集合,所述第二标识集合包括所述调度模块根据所述第一标识集合为所述容器组分配的设备的标识;
根据所述第二标识集合创建容器组。
2.根据权利要求1所述的方法,其特征在于,所述利用第一预留字段向调度模块传递第一标识集合,包括:
在第一预留字段中写入第一标识集合,所述第一标识集合用于被调度模块从所述第一预留字段中读取。
3.根据权利要求1或2所述的方法,其特征在于,所述利用第二预留字段获取第二标识集合,包括:
从第二预留字段中读取第二标识集合,所述第二标识集合由所述调度模块写入所述第二预留字段。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
向设备插件框架下发所述第二标识集合;
接收所述设备插件框架发送的设备路径,所述设备路径用于为所述工作节点挂载对应的设备。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述预留字段包括注解或标签。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述容器组被部署在kubernetes集群,所述方法应用于所述kubernetes集群中的工作节点代理。
7.一种容器组的创建方法,其特征在于,所述方法包括:
根据第一预留字段获取第一标识集合,所述第一标识集合包括至少一个可用设备的标识;
根据所述第一标识集合为容器组分配设备,获得第二标识集合,所述第二标识集合包括分配设备的标识;
利用第二预留字段向工作节点代理传递所述第二标识集合,所述第二标识集合用于所述工作节点代理创建所述容器组。
8.根据权利要求7所述的方法,其特征在于,所述根据第一预留字段获取第一标识集合,包括:
从第一预留字段中读取第一标识集合,所述第一标识集合由所述工作节点代理写入所述第一预留字段。
9.根据权利要求7或8所述的方法,其特征在于,所述利用第二预留字段向工作节点代理传递所述第二标识集合,包括:
在第二预留字段中写入所述第二标识集合,所述第二标识集合用于被工作节点代理从所述第二预留字段中读取。
10.根据权利要求7至9任一项所述的方法,其特征在于,所述预留字段包括注解或标签。
11.根据权利要求7至10任一项所述的方法,其特征在于,所述容器组被部署在kubernetes集群,所述方法应用于所述kubernetes集群的调度模块。
12.一种容器组的创建装置,其特征在于,所述装置包括:
通信模块,用于利用第一预留字段向调度模块传递第一标识集合,所述第一标识集合包括至少一个可用设备的标识;
所述通信模块,还用于利用第二预留字段获取第二标识集合,所述第二标识集合包括所述调度模块根据所述第一标识集合为所述容器组分配的设备的标识;
创建模块,用于根据所述第二标识集合创建容器组。
13.根据权利要求12所述的装置,其特征在于,所述通信模块具体用于:
在第一预留字段中写入第一标识集合,所述第一标识集合用于被调度模块从所述第一预留字段中读取。
14.根据权利要求12或13所述的装置,其特征在于,所述通信模块具体用于:
从第二预留字段中读取第二标识集合,所述第二标识集合由所述调度模块写入所述第二预留字段。
15.根据权利要求12至14任一项所述的装置,其特征在于,所述通信模块还用于:
向设备插件框架下发所述第二标识集合;
接收所述设备插件框架发送的设备路径,所述设备路径用于为所述工作节点挂载对应的设备。
16.根据权利要求12至15任一项所述的装置,其特征在于,所述预留字段包括注解或标签。
17.根据权利要求12至16任一项所述的装置,其特征在于,所述容器组被部署在kubernetes集群,所述装置为所述kubernetes集群中的工作节点代理。
18.一种容器组的创建装置,其特征在于,所述装置包括:
通信模块,用于根据第一预留字段获取第一标识集合,所述第一标识集合包括至少一个可用设备的标识;
分配模块,用于根据所述第一标识集合为容器组分配设备,获得第二标识集合,所述第二标识集合包括分配设备的标识;
所述通信模块,还用于利用第二预留字段向工作节点代理传递所述第二标识集合,所述第二标识集合用于所述工作节点代理创建所述容器组。
19.根据权利要求18所述的装置,其特征在于,所述容器组被部署在kubernetes集群,所述装置为所述kubernetes集群的调度模块。
20.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述设备执行如权利要求1至11中任一项所述的方法。
CN202010662159.5A 2020-07-10 2020-07-10 一种容器组的创建方法和装置 Active CN113918273B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010662159.5A CN113918273B (zh) 2020-07-10 2020-07-10 一种容器组的创建方法和装置
PCT/CN2021/102243 WO2022007645A1 (zh) 2020-07-10 2021-06-25 一种容器组的创建方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010662159.5A CN113918273B (zh) 2020-07-10 2020-07-10 一种容器组的创建方法和装置

Publications (2)

Publication Number Publication Date
CN113918273A true CN113918273A (zh) 2022-01-11
CN113918273B CN113918273B (zh) 2023-07-18

Family

ID=79232207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010662159.5A Active CN113918273B (zh) 2020-07-10 2020-07-10 一种容器组的创建方法和装置

Country Status (2)

Country Link
CN (1) CN113918273B (zh)
WO (1) WO2022007645A1 (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919445A (zh) * 2015-12-28 2017-07-04 华为技术有限公司 一种在集群中并行调度容器的方法和装置
CN108549580A (zh) * 2018-03-30 2018-09-18 平安科技(深圳)有限公司 自动部署Kubernetes从节点的方法及终端设备
CN108920259A (zh) * 2018-03-30 2018-11-30 华为技术有限公司 深度学习作业调度方法、系统和相关设备
CN110198231A (zh) * 2018-05-08 2019-09-03 腾讯科技(深圳)有限公司 用于多租户的容器网络管理方法和系统以及中间件
CN110888736A (zh) * 2019-11-15 2020-03-17 北京浪潮数据技术有限公司 一种基于容器云平台的应用管理方法、系统及相关组件
CN111176788A (zh) * 2019-12-24 2020-05-19 优刻得科技股份有限公司 Kubernetes集群的主节点的部署方法及系统
CN111309447A (zh) * 2020-03-16 2020-06-19 优刻得科技股份有限公司 容器调度方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867955A (zh) * 2015-09-18 2016-08-17 乐视云计算有限公司 一种应用程序部署系统及部署方法
US10705880B2 (en) * 2017-09-22 2020-07-07 Vmware, Inc. Cluster updating using temporary update-monitor pod
CN110535831B (zh) * 2019-07-30 2022-02-01 平安科技(深圳)有限公司 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919445A (zh) * 2015-12-28 2017-07-04 华为技术有限公司 一种在集群中并行调度容器的方法和装置
CN108549580A (zh) * 2018-03-30 2018-09-18 平安科技(深圳)有限公司 自动部署Kubernetes从节点的方法及终端设备
CN108920259A (zh) * 2018-03-30 2018-11-30 华为技术有限公司 深度学习作业调度方法、系统和相关设备
CN110198231A (zh) * 2018-05-08 2019-09-03 腾讯科技(深圳)有限公司 用于多租户的容器网络管理方法和系统以及中间件
CN110888736A (zh) * 2019-11-15 2020-03-17 北京浪潮数据技术有限公司 一种基于容器云平台的应用管理方法、系统及相关组件
CN111176788A (zh) * 2019-12-24 2020-05-19 优刻得科技股份有限公司 Kubernetes集群的主节点的部署方法及系统
CN111309447A (zh) * 2020-03-16 2020-06-19 优刻得科技股份有限公司 容器调度方法及装置

Also Published As

Publication number Publication date
WO2022007645A1 (zh) 2022-01-13
CN113918273B (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
US11704144B2 (en) Creating virtual machine groups based on request
CN108182111B (zh) 任务调度系统、方法和装置
JP6658882B2 (ja) 制御装置、vnf配置先選択方法及びプログラム
CN109684065B (zh) 一种资源调度方法、装置及系统
WO2018149221A1 (zh) 一种设备管理方法及网管系统
CN106919445B (zh) 一种在集群中并行调度容器的方法和装置
US9906589B2 (en) Shared management service
US10505832B2 (en) Resource coordinate system for data centers
KR20160087706A (ko) 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법
US11467874B2 (en) System and method for resource management
CN112579622B (zh) 业务数据的处理方法、装置及设备
CN111930525B (zh) Gpu资源使用方法、电子设备及计算机可读介质
CN113382077B (zh) 微服务调度方法、装置、计算机设备和存储介质
US20230229496A1 (en) Allocating resources for network function virtualization
GB2584980A (en) Workload management with data access awareness in a computing cluster
CN112865993B (zh) 分布式主从系统中从节点的切换方法和装置
EP4163798A1 (en) Method and apparatus for managing model file in inference application
CN115686346A (zh) 一种数据存储方法、设备及计算机可读存储介质
CN112463376A (zh) 一种资源分配方法及装置
CN109005071B (zh) 一种决策部署方法和调度设备
CN113918273B (zh) 一种容器组的创建方法和装置
CN114675954A (zh) 任务调度方法及装置
CN113485830A (zh) 一种电网监控系统微服务自动扩容方法
CN108073453B (zh) 分布式集群中cpu资源的调度方法以及装置
CN111399983B (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