CN114390106A - 基于Kubernetes容器资源的调度方法、调度器及调度*** - Google Patents
基于Kubernetes容器资源的调度方法、调度器及调度*** Download PDFInfo
- Publication number
- CN114390106A CN114390106A CN202210292444.1A CN202210292444A CN114390106A CN 114390106 A CN114390106 A CN 114390106A CN 202210292444 A CN202210292444 A CN 202210292444A CN 114390106 A CN114390106 A CN 114390106A
- Authority
- CN
- China
- Prior art keywords
- node
- information
- pod
- state information
- scheduled
- 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
Images
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1012—Server selection for load balancing based on compliance of requirements or conditions with available server resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Kubernetes容器资源的调度方法、调度器及调度***,该调度方法包括:获取每个Node节点的已有数据状态信息和待调度Pod;获取每个Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;根据缺少的信息筛选出目标Node节点;将待调度Pod调度至目标Node节点。通过将每个节点的已有数据状态信息与待调度Pod所依赖的数据信息进行对比,得到当前节点所缺少的信息;根据缺少的信息可筛选出最优的节点作为目标节点,并将待调度Pod调度至目标节点,这样可以将待调度Pod容器优先放置在已经存在部分镜像和依赖数据的节点上,以避免重复从远端拉取数据,能最大程度节省拉取数据的时间。
Description
技术领域
本发明涉及电数字数据处理的技术领域,特别涉及一种基于Kubernetes容器资源的调度方法、调度器及调度***。
背景技术
Kubernetes是目前云计算基础技术重要的一环,使用场景非常广泛。开发人员可以通过使用Kubernetes来作为云计算平台底层的实现。因为其易用,稳定性高,已经成为了业界普遍使用的容器编排方案。
通过Kubernetes,可以快速建立相关的Pod,并调度到对应的物理或虚拟Node节点上,Node节点上面的kubelet程序再将Pod的配置映射、生成容器并启动。但是容器的启动有可能需要很多数据依赖条件,特别是在医疗行业中,对于容器处理性能,启动速度都有比较苛刻的要求。例如一个医疗AI智能阅片业务容器需要将镜像和模型都准备好,才能正常进行工作。但是这些业务容器的镜像大小可能就达到几GB,所依赖的模型文件更可能达到几十GB,上百GB大小。同样,例如处在5G远程医疗通信链路的容器,容器需要很大的模型对视频进行分析和处理,数据吞吐非常高,对延迟性能要求极严苛,很多情况下是不能使用共享存储的,这就导致了必须将依赖数据从远端拉取下来并持久化到本地,以达到最快的读写,最低的延迟,依赖数据巨大会导致需要耗费大量的时间从网络上将其下载下来。这样一来,一个容器从调度到启动中间就需要耗费数分钟甚至数小时的时间来解决运行时数据依赖问题。这种问题在deployment类型的容器重新启动的时候特别明显,很多Pod重建后都被调度到了别的负载压力较低Node节点机器上,而这些负载压力较低的Node节点机器大部分可能都是新加入的Node节点。这就导致deployment的容器升级、回滚和扩容都会出现Pod长时间处在创建中的过程,影响业务正常使用。
发明内容
本发明的目的是提供一种基于Kubernetes容器资源的调度方法、调度器及调度***,可以将待调度Pod优先放置在已经存在部分镜像和依赖数据的Node节点上,以避免重复从远端拉取数据,能最大程度节省拉取数据的时间,可避免数据使用的延迟。
本发明的第一方面提供了一种基于Kubernetes容器资源的调度方法,包括:获取每个Node节点的已有数据状态信息和待调度Pod;获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;根据所述缺少的信息筛选出目标Node节点;将待调度Pod调度至所述目标Node节点。
可选的,所述获取每个Node节点的已有数据状态信息包括:通过每个Node节点上设置的代理模块采集每个Node节点的已有数据状态信息。
可选的,在所述获取每个Node节点的已有数据状态信息之后,所述调度方法还包括:通过所述代理模块将当前的所述Node节点的已有数据状态信息发送给状态信息服务单元,以使所述状态信息服务单元存储,接收所述状态信息服务单元发送的所述Node节点的已有数据状态信息。
可选的,所述获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息包括:将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或所依赖的数据信息进行比对,得到所述缺少的信息。
可选的,所述根据所述缺少的信息筛选出目标Node节点包括:获取当前Node节点增加所述缺少的信息所需的存储空间;基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
可选的,所述对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点包括:计算各个所述合格Node节点拉取所述缺少的信息所需的第一时间,并将所述第一时间转化为得分。
本发明的第二方面提供了一种基于Kubernetes容器资源的调度器,包括:第一获取模块,其用于获取每个Node节点的已有数据状态信息和待调度Pod;第二获取模块,其用于获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;筛选模块,其用于根据所述缺少的信息筛选出目标Node节点;调度模块,其用于将待调度Pod调度至所述目标Node节点。
可选的,所述第二获取模块包括:比对子模块,其用于将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或所依赖的数据信息进行比对,得到所述缺少的信息。
可选的,所述筛选模块包括:获取子模块,其用于获取当前Node节点增加所述缺少的信息所需的存储空间;判断子模块,其用于基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;过滤子模块,其用于若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;打分子模块,其用于对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
本发明的第三方面提供了一种Kubernetes容器资源的调度***,包括:多个Node节点,每个所述Node节点均包括代理模块,所述代理模块用于采集当前所述Node节点的已有数据状态信息;所述的调度器;状态信息服务单元,其用于接收并存储所述代理模块发送的所述Node节点的已有数据状态信息,并将所述Node节点的已有数据状态信息发送至所述调度器;API-Server,其用于接收所述调度器发送的将待调度Pod调度至所述目标Node节点的指令,将待调度Pod调度至所述目标Node节点。
本发明的第四方面提供了一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时以实现所述基于Kubernetes容器资源的调度方法的步骤。
本发明的第五方面提供了一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时以实现所述基于Kubernetes容器资源的调度方法的步骤。
本发明的上述技术方案至少具有如下有益的技术效果:
通过将每个Node节点的已有数据状态信息与待调度Pod所依赖的数据信息进行对比,得到当前Node节点所缺少的信息;根据缺少的信息可筛选出最优的Node节点作为目标Node节点,并将待调度Pod调度至目标Node节点,这样可以将待调度Pod容器优先放置在已经存在部分镜像和依赖数据的Node节点上,以避免重复从远端拉取数据,能最大程度节省拉取数据的时间,避免了数据使用的延迟。
附图说明
图1是根据本发明第一实施方式的基于Kubernetes容器资源的调度方法的流程图;
图2是代理模块采集Node节点的信息并上传示意图;
图3是根据本发明第二实施方式的基于Kubernetes容器资源的调度器的结构示意图;
图4是根据本发明第三实施方式的Kubernetes容器资源的调度***的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
为了解决deployment的容器升级、回滚和扩容都会出现Pod长时间处在创建中的过程,影响业务正常使用的问题,可采用如下相关技术并存在相应的技术缺陷如下:
1、人工限定Pod只能在指定的Node节点调度,迫使Pod只能在某部分Node节点运行,以此来提高Pod运行在有依赖的Node节点的几率。但这种方式需要人为手工去选定Node节点,为了提高依赖数据和依赖的镜像利用率去限定Pod调度范围,不利于Pod的灵活调度,而且这种方式只能调度到刚好有依赖数据的节点,不能利用已有的信息知道哪个Node节点最合适,因此是一种碰运气的方式。
2、提高网络性能,例如使用Harbor集群通过部署多个镜像服务集群;建立不同的HDFS集群来存储数据;升级硬件提高带宽;通过这些方式使得Node节点的主机拉取镜像(Image)和依赖数据性能得到提升。但这种方式需要耗费资源去提高网络传输效率,以此来减少镜像和数据拉取时间;成本较高,在小规模集群中见效不大。
3、镜像方面使用OnDemond方式,数据依赖使用共享存储。镜像OnDemaond方式传输就是在Pod对应的容器启动的时候不全拉取镜像,而是通过网络先拉取将要使用到的镜像数据;数据依赖使用共享存储是一种普遍的使用方法,当产生数据交互的时候通过网络进行交互。但是,OnDemand拉取镜像这种方式能提高容器启动速度,但是镜像运行伤害很大,因为当需要读取到某部分镜像,而镜像又不在本地的时候,就需要从远端继续拉取过来;共享存储也有很多问题,首先就是需要耗费资源搭建共享存储服务,然后就是共享存储基本都是通过网络和Node节点联通的,性能对比本地IO性能来说会慢很多;因此在很多场景下并不实用,不能满足很多业务对于存储性能的要求。
目前市面上所有的调度方案几乎都是集中在考虑Pod调度运行起来后对于Node的影响,并没有考虑容器启动前和正常工作前可能需要长时间准备镜像和相关的依赖数据。本发明的创新和改进点就是充分考虑Node节点在经过长时间运行后,可能已经存在Pod所需要的部分镜像数据和依赖数据,即调度到这种Node节点可以大大节省启动和正常工作时间。
本发明的第一方面提供了一种基于Kubernetes容器资源的调度方法,如图1所示,具体地包括以下步骤:
步骤S10,获取每个Node节点的已有数据状态信息和待调度Pod;
步骤S30,获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;
步骤S50,根据所述缺少的信息筛选出目标Node节点;
步骤S70,将待调度Pod调度至所述目标Node节点。
获取每个Node节点的已有数据状态信息可包括获取当前Node节点目前所具有的数据,镜像列表,网络环境,计算拉取依赖性数据速率等;通过将每个Node节点的已有数据状态信息与待调度Pod所依赖的数据信息进行对比,得到当前Node节点所缺少的信息;通过这些信息可以计算推测出该待调度Pod从调度完成到可以正常运行所需消耗的时间,这个时间将作为重要参考,可以利用该时间来计算各个Node节点部署该待调度Pod的得分,根据得分筛选出最优的Node节点作为目标Node节点,并将待调度Pod调度至目标Node节点。通过这种方式,可以将待调度Pod容器优先放置在已经存在部分镜像和依赖数据的Node节点上,以避免重复从远端拉取数据;或是可调度到网络条件好的Node节点上,能最大程度节省拉取数据的时间,避免了数据使用的延迟。因此可避免共享存储带来的一系列问题,并且可避免deployment的容器升级、回滚和扩容都会出现待调度Pod长时间处在创建中的过程,可确保业务正常使用;尤其是在医疗行业中,对于容器的启动需要很多数据依赖条件,对于容器处理性能,启动速度都要求比较苛刻的情况下均可满足正常使用,这样在待调度Pod完成调度后可以实现快速工作。
一些实施例中,步骤S10中所述获取每个Node节点的已有数据状态信息包括:通过每个Node节点上设置的代理模块采集每个Node节点的已有数据状态信息。
代理模块(Agent程序)是整个调度的基础信息采集***,部署在每个Kubernetes(容器集群)的node节点上,主要负责表1中信息采集以及拉取依赖性数据、镜像所需要的时间预估计算。
表1
代理模块采集的当前node节点上的已有数据状态信息包括但不限于表1中提到的以上6类信息。
一些实施例中,在步骤S10所述获取每个Node节点的已有数据状态信息之后,所述调度方法还包括:
步骤S20,通过所述代理模块将当前的所述Node节点的已有数据状态信息发送给状态信息服务单元,以使所述状态信息服务单元存储,接收所述状态信息服务单元发送的所述Node节点的已有数据状态信息。
状态信息服务单元NDSS(Node Data Status Service),NDSS可以采用高性能的服务,如MySQL(关系型数据库管理***),Redis(开源的使用ANSI C语言编写***)等,因为不需要保留历史数据,所以存储的服务不需要将数据落盘存储,状态信息服务单元NDSS可以设置为独立于Kubernetes。
图2为代理模块采集Node节点的信息并上传示意图,如图2所示,代理模块通过与镜像接口和操作***存储接口电连接,以提供镜像服务和依赖性数据的存储服务。
一些实施例中,步骤S30,所述获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息包括:
将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或所依赖的数据信息进行比对,得到所述缺少的信息。
获取待调度Pod后,可以取得特定相关镜像,待调度Pod容器依赖的数据的metadata信息(元数据信息),metadata信息可以包含镜像名字,版本,数字摘要,镜像层信息,容器依赖的数据名字,唯一标示号,大小,信息摘要等信息。随后从NDSS中获取各个主机中Agent已经提交的NRDS信息,通过比对,就可以知道缺少的镜像数据和缺少的依赖数据。
一些实施例中,步骤S50,所述根据所述缺少的信息筛选出目标Node节点包括:
步骤S51,获取当前Node节点增加所述缺少的信息所需的存储空间;
步骤S52,基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;
步骤S53,若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;
步骤S54,对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
一些实施例中,步骤S54中所述对所述合格Node节点打分,基于各个所述合格Node
节点的得分筛选出所述目标Node节点包括:计算各个所述合格Node节点拉取所述缺少的信
息所需的第一时间,并将所述第一时间转化为得分。第一时间为总的消耗时间为,其包
括拉取缺少的镜像数据消耗的时间()和拉取缺少的依赖数据消耗的时间()。
例如需要调度某个待调度Pod时,该待调度Pod需要镜像M,其依赖数据为集合{a,
b,c}。镜像M实际上是由三层构成,分别是X,Y,Z。从NDSS中某个Node节点的已有数据状态信
息中得知该Node节点已经存在了Y和Z层镜像以及依赖数据{a,b},意味着将该待调度Pod部
署到这个节点只需要拉取X层镜像和依赖数据c,X层镜像和依赖数据c可作为当前Node节点
的缺少的信息,X层镜像和依赖数据c的大小可以从metadata中获得。过滤不符合条件的
Node节点,如果Node节点的剩余存储空间小于增加缺少的信息所需的存储空间,则该Node
节点应该被过滤掉。即该Node节点的剩余存储空间包括镜像数据存储空间()和依
赖数据存储空间(),当,或者则该
Node节点需要被过滤掉,得到合格Node节点;同理,缺少的信息也可包括缺少的镜像数据大
小和依赖数据大小,式中和分别为缺少的镜像数据大小和依赖数据大小。
在打分(Scoring)环节中,拉取缺少的镜像数据消耗的时间( )可以按下面条件式进
行估算:
总的消耗时间为。计算出总的消耗时间后,再将
再转化成得分。其中耗时越高,则得分越低。将转化为优先级得分可以有多种算法
和方式,例如有合格Node节点队列{1,2,3,4...,n},是合格Node节点i的总耗时,将各
个加总求和得到T,即 ,则合格Node节点i的得分可以按下面条件式进
行估算:
式中Weight是可配置的权重系数。
一些实施例中,为所有合格Node节点打分环节中,有些可能已经存在了该待调度Pod需要的镜像以及依赖数据,那么这些Node节点的得分值就需要比其他Node节点(没有需要的镜像或者依赖数据)要高。每个合格Node节点存在的该待调度Pod需要的镜像以及依赖数据越多,即增加缺少的信息所花时间越少,则该合格Node节点得分越高。最后可选取得分最高的Node节点部署该待调度Pod。
基于同一发明构思,本发明的第二方面提供了一种基于Kubernetes容器资源的调度器,用于执行上述的一种基于Kubernetes容器资源的调度方法,如图3所示,该调度器包括:第一获取模块310,其用于获取每个Node节点的已有数据状态信息和待调度Pod;第二获取模块320,其用于获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;筛选模块330,其用于根据所述缺少的信息筛选出目标Node节点;调度模块340,其用于将待调度Pod调度至所述目标Node节点。
其中,本发明实施例对于第一获取模块310、第二获取模块320、筛选模块330和调度模块340的具体形状结构不做限定,本领域技术人员可以根据其实现的功能作用对其进行任意设置,在此不再赘述;另外,本发明实施例中上述各模块所实现的操作步骤的具体实现过程以及实现效果与本发明实施例中步骤S10-步骤S70的具体实现过程以及实现效果相同,具体可参考上述陈述内容,在此不再赘述。
一些实施例中,所述第二获取模块包括:比对子模块,其用于将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或所依赖的数据信息进行比对,得到所述缺少的信息。
一些实施例中,所述筛选模块包括:获取子模块,其用于获取当前Node节点增加所述缺少的信息所需的存储空间;判断子模块,其用于基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;过滤子模块,其用于若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;打分子模块,其用于对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
Pod中的每个容器对资源有不同的要求,每个Pod也有不同的要求。因此,需要根据具体的调度要求对现有的Node节点进行过滤。Kubernetes (集群)的Custom-Scheduler(调度器)是Kubernetes控制平面的核心组件之一。它运行在控制平面上,其主要功能是将Pod分配给Node节点,同时平衡各Node节点的资源利用率。当Pod被分配到一个新的Node节点时,运行在该Node节点上的kubelet(执行器)从Kubernetes 的API-Server中获取到pod描述信息。随后,kubelet根据Node节点上的Pod描述信息创建容器。换句话说,调度器在控制平面内运行,将工作负载分配给Kubernetes。
Custom-Scheduler是本发明实施例提供的Kubernetes的调度器,它具有所有的Kubernetes默认的调度策略,而且针对本发明实施例额外增加了考虑目前Node节点是否可以快速将待调度Pod部署起来的逻辑。Kubernetes的调度流程主要为两块,首先是通过调度策略将所有不符合需要的Node节点剔除,例如有些Node节点已经部署了大量Pod,没有空闲的CPU或内存,那么这些Node节点将被过滤出去。符合要求的Node节点则会进入打分环节,得分最高的Node节点则会被用于调度该待调度Pod。而本发明实施例提供的调度器会将镜像数据,依赖数据的存储等信息考虑进去,进行过滤和打分。所有的Node节点的基础信息已经被代理模块(Agent程序)采集到NDSS中,Custom-Scheduler可以直接通过网络通讯获取得到。
筛选模块其主要考虑当前Node节点上的存储是否满足待调度Pod的要求,计算待调度Pod如果部署在该Node节点所需增加的镜像存储空间和增加的依赖数据存储空间。如果超出了Node节点指定存储的剩余存储空间,则该Node节点必须被过滤;防止待调度Pod在该Node节点运行后导致磁盘空间异常,使得该Node节点上原有的所有Pod被驱逐。
本发明实施例提供的Custom-Scheduler具备访问镜像服务和依赖数据存储服务的能力,可以取得特定相关镜像,容器依赖的数据的metadata信息(元数据信息),metadata信息可以包含镜像名字,版本,数字摘要,镜像层信息,容器依赖的数据名字,唯一标示号,大小,信息摘要等信息。随后从NDSS中获取各个主机中Agent已经提交的Node节点的已有数据状态信息,通过比对,就可以知道缺少的镜像层和缺少的依赖数据。
传统kubernetes默认的调度策略会倾向把待调度Pod调度到新加入的Node节点,使用本发明实施例的调度方法后,本发明实施例提供的调度器的调度策略会倾向将待调度Pod调度到已有镜像和依赖数据的Node节点上,不再是盲目随机调度到一些新Node节点(没有镜像和依赖数据)。例如在deployment升级的时候,绝大部分的Pod都可重新调度到原来的Node节点上,使得deployment升级/回滚的速度极大提升,极大缓解了因为下载镜像和依赖数据而导致deployment升级卡顿的问题。对于重型Pod(需要依赖下载大量数据)的重新恢复服务带来了极大的便利。
本发明的第三方面提供了一种Kubernetes容器资源的调度***,包括:多个Node节点,每个所述Node节点均包括代理模块,所述代理模块用于采集当前所述Node节点的已有数据状态信息;本发明实施例提供的调度器;状态信息服务单元,其用于接收并存储所述代理模块发送的所述Node节点的已有数据状态信息,并将所述Node节点的已有数据状态信息发送至所述调度器;API-Server,其用于接收所述调度器发送的将待调度Pod调度至所述目标Node节点的指令,将待调度Pod调度至所述目标Node节点。
如图4所示,调度***包括Node节点A、B等,外部触发生成一个新的待调度Pod,调度器从API-Server获知有新的待调度Pod需要调度;每个代理模块从当前Node节点A或B采集数据依赖状态信息并发送给状态信息服务单元(NDSS),以使状态信息服务单元存储;调度器接收NDSS发送的Node节点的已有数据状态信息,调度器将每个Node节点的数据依赖状态信息与待调度Pod所依赖的数据信息进行对比,得到当前Node节点所缺少的信息;通过这些信息可以计算推测出该待调度Pod从调度完成到可以正常运行所需消耗的时间,这个时间将作为重要参考,可以利用该时间来计算各个Node节点部署该待调度Pod的得分,根据得分筛选出最优的Node节点作为目标Node节点,并将待调度Pod调度至目标Node节点的指令发送给API-Server,Kubelet从API-Server得知待调度Pod绑定到该Node节点A。
本发明的第四方面提供了一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时以实现所述基于Kubernetes容器资源的调度方法的步骤。
本发明的第五方面提供了一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时以实现所述基于Kubernetes容器资源的调度方法的步骤。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,简称ROM)或随机存取存储器(RandomAccessMemory,简称RAM)等。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例***中的模块可以根据实际需要进行合并、划分和删减。
Claims (12)
1.一种基于Kubernetes容器资源的调度方法,其特征在于,包括:
获取每个Node节点的已有数据状态信息和待调度Pod;
获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;
根据所述缺少的信息筛选出目标Node节点;
将待调度Pod调度至所述目标Node节点。
2.根据权利要求1所述的调度方法,其特征在于,
所述获取每个Node节点的已有数据状态信息包括:
通过每个Node节点上设置的代理模块采集每个Node节点的已有数据状态信息。
3.根据权利要求2所述的调度方法,其特征在于,在所述获取每个Node节点的已有数据状态信息之后,所述调度方法还包括:
通过所述代理模块将当前的所述Node节点的已有数据状态信息发送给状态信息服务单元,以使所述状态信息服务单元存储,接收所述状态信息服务单元发送的所述Node节点的已有数据状态信息。
4.根据权利要求3所述的调度方法,其特征在于,所述获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息包括:
将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或待调度Pod所依赖的数据信息进行比对,得到所述缺少的信息。
5.根据权利要求1所述的调度方法,其特征在于,所述根据所述缺少的信息筛选出目标Node节点包括:
获取当前Node节点增加所述缺少的信息所需的存储空间;
基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;
若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;
对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
6.根据权利要求5所述的调度方法,其特征在于,所述对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点包括:
计算各个所述合格Node节点拉取所述缺少的信息所需的第一时间,并将所述第一时间转化为得分。
7.一种基于Kubernetes容器资源的调度器,其特征在于,包括:
第一获取模块,其用于获取每个Node节点的已有数据状态信息和待调度Pod;
第二获取模块,其用于获取每个所述Node节点的已有数据状态信息相对于待调度Pod所缺少的信息;
筛选模块,其用于根据所述缺少的信息筛选出目标Node节点;
调度模块,其用于将待调度Pod调度至所述目标Node节点。
8.根据权利要求7所述的调度器,其特征在于,所述第二获取模块包括:
比对子模块,其用于将每个所述Node节点的已有数据状态信息与所述待调度Pod的元数据信息和/或待调度Pod所依赖的数据信息进行比对,得到所述缺少的信息。
9.根据权利要求7所述的调度器,其特征在于,所述筛选模块包括:
获取子模块,其用于获取当前Node节点增加所述缺少的信息所需的存储空间;
判断子模块,其用于基于获取的当前Node节点增加所述缺少的信息所需的存储空间,与当前Node节点的剩余存储空间进行比较,判断当前Node节点是否需要被过滤掉;
过滤子模块,其用于若所述当前Node节点增加所述缺少的信息所需的存储空间超出所述当前Node节点的剩余存储空间,则将所述当前Node节点过滤掉,得到合格Node节点;
打分子模块,其用于对所述合格Node节点打分,基于各个所述合格Node节点的得分筛选出所述目标Node节点。
10.一种Kubernetes容器资源的调度***,其特征在于,包括:
多个Node节点,每个所述Node节点均包括代理模块,所述代理模块用于采集当前所述Node节点的已有数据状态信息;
如权利要求7-9任一项所述的调度器;
状态信息服务单元,其用于接收并存储所述代理模块发送的所述Node节点的已有数据状态信息,并将所述Node节点的已有数据状态信息发送至所述调度器;
API-Server,其用于接收所述调度器发送的将待调度Pod调度至所述目标Node节点的指令,将待调度Pod调度至所述目标Node节点。
11.一种电子设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时以实现权利要求1-6任意一项所述基于Kubernetes容器资源的调度方法的步骤。
12.一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时以实现权利要求1-6任意一项所述基于Kubernetes容器资源的调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210292444.1A CN114390106B (zh) | 2022-03-24 | 2022-03-24 | 基于Kubernetes容器资源的调度方法、调度器及调度*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210292444.1A CN114390106B (zh) | 2022-03-24 | 2022-03-24 | 基于Kubernetes容器资源的调度方法、调度器及调度*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114390106A true CN114390106A (zh) | 2022-04-22 |
CN114390106B CN114390106B (zh) | 2022-07-05 |
Family
ID=81205786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210292444.1A Active CN114390106B (zh) | 2022-03-24 | 2022-03-24 | 基于Kubernetes容器资源的调度方法、调度器及调度*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114390106B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228354A (zh) * | 2017-12-29 | 2018-06-29 | 杭州朗和科技有限公司 | 调度方法、***、计算机设备和介质 |
CN111198745A (zh) * | 2018-11-16 | 2020-05-26 | 北京京东尚科信息技术有限公司 | 容器创建的调度方法、装置、介质及电子设备 |
CN112217676A (zh) * | 2020-10-13 | 2021-01-12 | 北京工业大学 | 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法 |
CN113568624A (zh) * | 2021-09-22 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种镜像的拉取方法、***、计算机设备及可读存储介质 |
US20210365290A1 (en) * | 2020-04-16 | 2021-11-25 | Nanjing University Of Posts And Telecommunications | Multidimensional resource scheduling method in kubernetes cluster architecture system |
CN113835874A (zh) * | 2021-08-17 | 2021-12-24 | 苏州浪潮智能科技有限公司 | 深度学习业务调度方法、***、终端及存储介质 |
CN113961314A (zh) * | 2021-12-16 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种容器应用调度方法、装置、电子设备及存储介质 |
-
2022
- 2022-03-24 CN CN202210292444.1A patent/CN114390106B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228354A (zh) * | 2017-12-29 | 2018-06-29 | 杭州朗和科技有限公司 | 调度方法、***、计算机设备和介质 |
CN111198745A (zh) * | 2018-11-16 | 2020-05-26 | 北京京东尚科信息技术有限公司 | 容器创建的调度方法、装置、介质及电子设备 |
US20210365290A1 (en) * | 2020-04-16 | 2021-11-25 | Nanjing University Of Posts And Telecommunications | Multidimensional resource scheduling method in kubernetes cluster architecture system |
CN112217676A (zh) * | 2020-10-13 | 2021-01-12 | 北京工业大学 | 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法 |
CN113835874A (zh) * | 2021-08-17 | 2021-12-24 | 苏州浪潮智能科技有限公司 | 深度学习业务调度方法、***、终端及存储介质 |
CN113568624A (zh) * | 2021-09-22 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种镜像的拉取方法、***、计算机设备及可读存储介质 |
CN113961314A (zh) * | 2021-12-16 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种容器应用调度方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114390106B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960585B (zh) | 一种基于kubernetes的资源调度方法 | |
CN108920153B (zh) | 一种基于负载预测的Docker容器动态调度方法 | |
CN107463582B (zh) | 分布式部署Hadoop集群的方法及装置 | |
CN111522636B (zh) | 应用容器的调整方法、调整***、计算机可读介质及终端设备 | |
TWI287713B (en) | System and method for computer cluster virtualization using dynamic boot images and virtual disk | |
US8381222B2 (en) | Policy driven automation—specifying equivalent resources | |
CN110838939B (zh) | 一种基于轻量级容器的调度方法及边缘物联管理平台 | |
CN112463290A (zh) | 动态调整计算容器的数量的方法、***、装置和存储介质 | |
CN108509280B (zh) | 一种基于推送模型的分布式计算集群本地性调度方法 | |
CN114153580A (zh) | 一种跨多集群的工作调度方法及装置 | |
JP7161560B2 (ja) | 人工知能開発プラットフォームの管理方法及び装置、媒体 | |
CN115145695B (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
Wang et al. | A cluster autoscaler based on multiple node types in kubernetes | |
CN113918281A (zh) | 一种提升容器云资源扩展效率的方法 | |
CN114679451A (zh) | 面向边缘计算的服务调度***及其调度方法 | |
CN117435324B (zh) | 基于容器化的任务调度方法 | |
CN114356714A (zh) | 基于Kubernetes智能板卡集群的资源集成监控与调度装置 | |
CN112363812B (zh) | 基于任务分类的数据库连接队列管理方法及存储介质 | |
CN114390106B (zh) | 基于Kubernetes容器资源的调度方法、调度器及调度*** | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
Syrigos et al. | Optimization of Execution for Machine Learning Applications in the Computing Continuum | |
CN115480785A (zh) | 基于容器的服务部署方法、装置和服务器 | |
CN105760215A (zh) | 基于映射规约模型分布式文件***作业的运行方法 | |
CN115629860A (zh) | 软件参数调优方法、容器管理平台、存储介质及*** | |
CN114625474A (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 |