CN112540829A - 容器组驱逐方法、装置、节点设备及存储介质 - Google Patents

容器组驱逐方法、装置、节点设备及存储介质 Download PDF

Info

Publication number
CN112540829A
CN112540829A CN202011486963.9A CN202011486963A CN112540829A CN 112540829 A CN112540829 A CN 112540829A CN 202011486963 A CN202011486963 A CN 202011486963A CN 112540829 A CN112540829 A CN 112540829A
Authority
CN
China
Prior art keywords
container
node
target
container group
eviction
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.)
Pending
Application number
CN202011486963.9A
Other languages
English (en)
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.)
Hundsun Technologies Inc
Original Assignee
Hundsun Technologies Inc
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 Hundsun Technologies Inc filed Critical Hundsun Technologies Inc
Priority to CN202011486963.9A priority Critical patent/CN112540829A/zh
Publication of CN112540829A publication Critical patent/CN112540829A/zh
Pending legal-status Critical Current

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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45595Network 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)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提出一种容器组驱逐方法、装置、节点设备及存储介质,涉及容器技术领域,通过在多个可被驱逐的容器组中确定出一个目标容器组,并当判定该目标容器组能够被调度至除该目标容器组所在的目标节点设备之外的其他可用节点设备,将该目标容器组确定为待驱逐容器组;如此,即使该目标容器组被驱逐后,也能够确保该目标容器组能够被调度至其他可用节点设备运行,而不会被反复驱逐,提升了集群***的稳定性。

Description

容器组驱逐方法、装置、节点设备及存储介质
技术领域
本申请涉及容器技术领域,具体而言,涉及一种容器组驱逐方法、装置、节点设备及存储介质。
背景技术
在例如Kubernetes等容器集群中,可以通过在容器集群中的各个节点设备(node)创建容器组(pod),从而可以将各个服务部署在pod中运行,以达到快速部署服务的目的。
其中,由于部署在节点设备上的pod需要消耗节点设备上的例如内存(Memory)、磁盘、进程PID(Process Identification,进程标识符)等资源,且单个节点设备的资源一般是有限的;因此,当容器集群中的某个节点设备的剩余资源不足,可以将该节点设备的至少部分pod进行驱逐,从而使该节点设备能够空余出足够的资源用于pod的稳定运行。
然而,由于被驱逐的pod并不一定能够被调度至容器集群中的其他节点设备稳定运行,可能会使得该pod被反复驱逐,导致被驱逐的pod无法被调度。
发明内容
本申请的目的在于提供一种容器组驱逐方法、装置、节点设备及存储介质,能够提升集群***的稳定性。
为了实现上述目的,本申请采用的技术方案如下:
第一方面,本申请提供一种容器组驱逐方法,所述方法包括:
按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在所述容器驱逐列表中确定出目标容器组;其中,所述目标容器组为所述多个可被驱逐的容器组中的多副本容器组;
判断所述目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;其中,所述容器集群包括多个节点设备,所述目标节点设备为所述多个节点设备中运行所述目标容器组的节点设备,所述可用节点设备为所述多个节点设备中能够运行所述目标容器组的节点设备;
当所述目标容器组能够被调度至其他可用节点设备,则将所述目标容器组确定为待驱逐容器组。
第二方面,本申请提供一种容器组驱逐装置,所述装置包括:
处理模块,用于按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在所述容器驱逐列表中确定出目标容器组;其中,所述目标容器组为所述多个可被驱逐的容器组中的多副本容器组;
判断模块,用于判断所述目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;其中,所述容器集群包括多个节点设备,所述目标节点设备为所述多个节点设备中运行所述目标容器组的节点设备,所述可用节点设备为所述多个节点设备中能够运行所述目标容器组的节点设备;
所述处理模块还用于,当所述目标容器组能够被调度至其他可用节点设备,则将所述目标容器组确定为待驱逐容器组。
第三方面,本申请提供一种节点设备,所述节点设备包括存储器,用于存储一个或多个程序;处理器;当所述一个或多个程序被所述处理器执行时,实现上述的容器组驱逐方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的容器组驱逐方法。
本申请提供的一种容器组驱逐方法、装置、节点设备及存储介质,通过在多个可被驱逐的容器组中确定出一个目标容器组,并当判定该目标容器组能够被调度至除该目标容器组所在的目标节点设备之外的其他可用节点设备,将该目标容器组确定为待驱逐容器组;如此,即使该目标容器组被驱逐后,也能够确保该目标容器组能够被调度至其他可用节点设备运行,而不会被反复驱逐,提升了集群***的稳定性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1示出kubernetes集群的一种架构示意图。
图2示出本申请提供的节点设备的一种示意性结构框图。
图3示出本申请提供的容器组驱逐方法的一种示意性流程图。
图4示出本申请提供的容器组驱逐装置的一种示意性流程图。
图中:100-节点设备;101-存储器;102-处理器;103-通信接口;300-容器组驱逐装置;301-处理模块;302-判断模块。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请的一些实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请选定的一些实施例。基于本申请中的一部分实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1示出kubernetes集群的一种架构示意图,kubernetes集群可以包括集群主节点(master)以及多个节点设备,集群主节点可以接收用户通过客户端发送的创建请求,创建一个新的pod,并将该新的pod调度至多个节点设备的其中一个运行。
可以理解的是,图1仅为示意,该kubernetes集群包括有三个节点设备,在本申请其他一些可能的实施方式中,kubernetes集群还可以包括更多或者更少的节点设备,本申请对kubernetes集群包括的节点设备的数量不进行限制。
其中,pod在节点设备中运行的过程中,需要使用节点设备提供的例如Memory、磁盘、进程PID等硬件资源,而单个节点设备所拥有的硬件资源一般是有限的;因此,集群主节点在将新创建的pod调度至节点设备的过程中,可以结合kubernetes集群中每一个节点设备在当前时刻的资源使用情况,将新创建的pod合理的调度至kubernetes集群中具有富余硬件资源的节点设备。
然而,pod使用的硬件资源情况一般是动态变化的,随着pod内运行的服务交互数据量的增加,各个pod所占用的硬件资源量也可能会增加,使得pod所在的节点设备的剩余硬件出现资源不足,无法提供足够的硬件资源供pod使用,导致pod或者是节点设备运行异常,甚至崩溃。
因此,出于维护节点设备以及pod稳定运行的目的,相关技术中提供一种pod驱逐机制,在例如kubernetes集群的场景中,运行在节点设备上的Kubelet服务可以启用名为EvictionManager的控制单元,由EvictionManager负责监控所在节点设备上的Memory、磁盘、进程PID等硬件资源使用情况,当节点设备上的硬件资源使用量超出一设定的阈值,则EvictionManager可以驱逐节点设备上运行的部分pod,以释放节点设备上的部分硬件资源,从而确保剩余未被驱逐的pod以及节点设备能够保持稳定的运行。
其中,EvictionManager在确定出需要驱逐的pod的过程中,一般是按照各个pod各自的驱逐优先级进行排序,并优先将对应的驱逐优先级最高的pod进行驱逐。
比如,在一些可能的场景中,EvictionManager对所有的pod进行排序的依据可以考虑以下两个维度:
(1)待驱逐的pod是否为管理pod、静态pod等关键pod;
(2)待驱逐的pod相比于节点设备上的其他pod是否占用了相对较多的可回收资源。
即:EvictionManager在对节点设备上运行的所有pod进行排序的过程中,首先排除节点设备上运行的所有的关键pod,仅针对非关键pod进行排序;然后,针对所有的非关键pod,根据每一个pod占用的例如memory、磁盘空间等硬件资源进行排序,优先将占用了相对较多硬件资源的pod进行驱逐。
如此,按照上述示例的驱逐策略,EvictionManager只需要驱逐少量的pod,即能够释放大量的硬件资源,确保运行在节点设备上的其他设备可以稳定的运行。
其中,针对被驱逐的pod,集群主节点可以启用调度器,将该pod调度至其他的节点设备运行,以持续地提供服务。
然而,调度器在将该被驱逐的pod调度至其他节点设备的过程中,其他节点设备可能也无法提供足够的硬件资源供给该被驱逐的pod运行,而只能将该被驱逐的pod重新调度至在先运行的节点设备;并且,当继续按照上述的策略驱逐pod的过程中,该pod可能又会被驱逐,从而导致同一个pod在同一个节点设备被反复驱逐,进而导致该被驱逐的pod无法被调度。
比如在图1所示的场景中,运行在节点设备1中的EvictionManager在判定节点设备1上的硬件资源使用量超出一设定的阈值时,该EvictionManager可以驱逐节点设备1中的部分pod,比如驱逐节点设备1中运行的pod1;然而,被驱逐的pod1可能由于所需节点资源较多等原因,无法被调度至节点设备2或者是节点设备3,pod1被节点设备1的EvictionManager驱逐后,可能会被集群主节点重新调度至节点设备1;而按照上述的驱逐策略,pod1又有可能被节点设备1的EvictionManager驱逐;如此往复,导致pod1反复被节点设备1的EvictionManager驱逐。
因此,为解决上述策略的至少部分缺陷,本申请提供的一些可能的实施方式为:通过在多个可被驱逐的容器组中确定出一个目标容器组,并当判定该目标容器组能够被调度至除该目标容器组所在的目标节点设备之外的其他可用节点设备,将该目标容器组确定为待驱逐容器组;如此,能够确保被驱逐的目标容器组能够被调度至其他节点设备运行,而不会被反复驱逐。
请参阅图2,图2示出本申请提供的节点设备100的一种示意性结构框图,在一些实施例中,节点设备100可以包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
存储器101可用于存储软件程序及模块,如本申请提供的容器组驱逐装置对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理,进而执行本申请提供的容器组驱逐方法的步骤。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解的是,图2所示的结构仅为示意,节点设备100还可以包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
下面以图2所示的节点设备作为示意性执行主体,对本申请提供的容器组驱逐方法进行示例性说明。
请参阅图3,图3示出本申请提供的容器组驱逐方法的一种示意性流程图,在一些可能的实施方式中,该容器组驱逐方法可以包括以下步骤:
步骤201,按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在容器驱逐列表中确定出目标容器组。
步骤203,判断目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;当为是,执行步骤205;当为否;执行步骤201。
步骤205,将目标容器组确定为待驱逐容器组。
在例如kubernetes集群等场景中,可以利用kubernetes集群提供的CRD(CustomResource Definition,自定义资源类型)功能,预先在kubernetes集群中的节点设备创建一个预驱逐控制器(PreEvictionController)服务,该节点设备可以通过执行该预驱逐控制器服务对应的程序指令或者是功能模块,以执行本申请提供的容器组驱逐方法的步骤,在kubernetes集群所运行的所有pod中确定出待驱逐pod。
可以理解的是,在一些实施例中,针对一个kubernetes集群,可以仅在该kubernetes集群中的其中一个节点设备上创建上述的预驱逐控制器,并利用创建的该预驱逐控制器,维护该kubernetes集群中所运行的所有pod;又或者是,针对一个kubernetes集群,还可以在该kubernetes集群中的所有节点设备均创建一个预驱逐控制器,由每一个节点设备上运行的预驱逐控制器负责维护每个节点设备上各自所运行的所有pod;再或者是,还可以将预驱逐控制器运行在kubernetes集群以外的节点设备,通过建立该预驱逐控制器与kubernetes集群内的各个节点设备之间的通信,使得该预驱逐控制器可以维护kubernetes集群内运行的所有pod;本申请对于预驱逐控制器的实现方式不进行限定。
其中,预驱逐控制器在执行本申请提供的容器组驱逐方法的过程中,预驱逐控制器可以接收Kubelet EvictionManager发送的容器驱逐列表,该容器驱逐列表可以由EvictionManager生成,并记录有运行在节点设备上的所有非关键pod,以及每一个非关键pod各自对应副本状态、驱逐优先级等信息。
预驱逐控制器在执行步骤201的过程中,为了避免单副本pod被驱逐后,运行在该pod内的应用无法继续运行等情况,预驱逐控制器可以按照每一pod各自在该容器驱逐列表中对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的pod,并将容器驱逐列表记录的多个可被驱逐的pod中的多副本pod确定为目标pod。
也就是说,在本申请提供的方案中,可以指定不针对单副本pod进行驱逐,而只针对多副本pod进行驱逐。
接下来,针对容器集群中包括的多个节点设备,预驱逐控制器可以将多个节点设备中运行该目标pod的节点设备作为目标节点设备,并通过获取各个节点设备的剩余资源情况,判断该目标pod能否被调度至容器集群中除目标节点设备以外的其他可用节点设备,该可用节点设备可以为容器集群包括的多个节点设备中能够运行该目标pod的节点设备;即:预驱逐控制器可以先根据容器集群中各个节点设备的剩余资源情况,判断是否存在除目标节点设备以外的节点是否能否运行该目标pod。
其中,当预驱逐控制器确定出目标pod能够被调度至容器集群中除目标节点设备以外的其他可用节点设备,则预驱逐控制器可以将该目标pod确定为待驱逐pod,然后由EvictionManger将该待驱逐pod执行驱逐;否则,当预驱逐控制器确定出该目标pod不能够被调度至容器集群中除目标节点设备以外的其他可用节点设备,则预驱逐控制器可以返回执行步骤201,以下一个多副本pod作为目标pod,继续执行本申请提供的容器组驱逐方法,直至遍历结束容器驱逐列表中记录的所有多副本pod。
比如在上述示例的场景中,假设pod1和pod2均为多副本pod,且pod2所需的节点资源少于pod1所需的资源,pod2能够在节点设备2内稳定运行,而pod1不能够在节点设备2内稳定运行;则按照上述示例的相关驱逐方案,将pod1进行驱逐,可能导致pod1反复被驱逐;而按照本申请提供的上述驱逐方案,则可以将pod2从节点设备1内驱逐,并能够稳定的将pod2调度至节点设备2内运行,从而避免了反复驱逐的情况。
可见,本申请提供的上述方案,通过在多个可被驱逐的容器组中确定出一个目标容器组,并当判定该目标容器组能够被调度至除该目标容器组所在的目标节点设备之外的其他可用节点设备,将该目标容器组确定为待驱逐容器组;如此,即使该目标容器组被驱逐后,也能够确保该目标容器组能够被调度至其他可用节点设备运行,而不会被反复驱逐,提升了集群***的稳定性。
需要说明的是,在一些可能的实施方式中,预驱逐控制器在执行步骤201的过程中,可以根据运行的每一pod各自的资源使用情况,确定出每一pod各自对应的驱逐优先级顺序;比如,针对设定维度的硬件资源,对应使用该硬件资源量越大的pod,其对应的驱逐优先级越高。
另外,为了使目标pod被驱逐后被调度至其他可用节点设备的可靠性,预驱逐控制器在执行步骤203的过程中,可以先在该容器集群中查找除目标节点设备以外的所有可用节点设备。
比如,在一些实施例中,为了灵活的查找出可用节点设备的数量,预驱逐控制器可以根据目标pod所需的资源情况,创建与该目标pod对应的节点查找策略;示例性地,预驱逐控制器可以将该目标pod所需的资源情况作为节点查找策略;或者是,预驱逐控制器可以在目标pod所需资源的基础上,叠加预先设定的容器资源量,生成该节点查找策略。
然后,预驱逐控制器可以基于该节点查找策略,将容器集群中与该节点查找策略相匹配的节点设备确定为可用节点设备。
示例性地,预驱逐控制器可以将该节点查找策略中的资源条件与容器集群中的其他节点设备的剩余资源情况进行比对,将所有剩余资源情况满足该节点查找策略的节点设备均确定为可用节点设备。
又或者,预驱逐控制器可以将该节点查找策略发送给集群主节点,并向集群主节点发送一匹配请求,集群主节点可以响应于该匹配请求,根据该节点查找策略所指示的资源需求请求,创建一个与该节点查找策略相对应的虚拟镜像pod,并启用调度器,将该虚拟镜像pod尝试调度至除目标节点设备以外的其他所有节点设备,从而将所有能够稳定运行该虚拟镜像pod的节点设备确定为可用节点设备。
当然,可以理解的是,在确定出所有的可用节点设备后,还可以将所有的虚拟镜像pod删除。
接下来,预驱逐控制器可以基于预先设置的一个第一阈值,将可用节点设备的数量与该第一阈值进行比对;其中,当该可用节点设备的数量达到该第一阈值,则预驱逐控制器可以确定该目标pod能够被调度至其他可用节点设备;反之,当该可用节点设备的数量未达到该第一阈值,则预驱逐控制器可以确定该目标pod不能够被调度至其他可用节点设备。
比如,假定该第一阈值为3,当预驱逐控制器确定容器集群中除目标节点设备以外,还包括有至少3个可用节点设备能够运行该目标pod,则预驱逐控制器可以判定该目标pod能够被调度至其他可用节点设备;反之,当预驱逐控制器确定容器集群中除目标节点设备以外,能够运行该目标pod的可用节点设备不足3个,则预驱逐控制器可以判定该目标pod不能够被调度至其他可用节点设备。
另外,在例如上述的实现方式中,在利用创建的节点查找策略确定出可用节点设备的过程中,预驱逐控制器可以基于该节点查找策略,一一遍历容器集群中的所有节点设备。
其中,在一些可能的场景中,容器集群中可能存在一些不具有空闲节点资源的节点设备,即:容器集群中可能存在无法提供空闲节点设备供目标pod运行的节点设备。
因此,为了提升可用节点设备的查找速度,避免无效的查找过程,在基于节点查找策略匹配出可用节点设备之前,预驱逐控制器还可以先确定出该容器集群中当前具有空闲节点资源的所有节点设备。
比如,在一些可能的场景中,假定一个节点设备请求驱逐pod,则表征该节点设备当前已经没有富余的节点资源提供给新的pod;因此,在查找出可用节点设备之前,预驱逐控制器可以基于当前请求驱逐pod的节点设备,将容器集群中除当前请求驱逐pod的节点设备之外的其他节点设备,确定为当前具有空闲节点资源的所有节点设备。
基于此,在基于该节点查找策略匹配出可用节点设备的过程中,预驱逐控制器可以将当前具有空闲节点资源的所有节点设备中与该节点查找策略相匹配的节点设备确定为可用节点设备,而无需在容器集群包括的所有节点设备中匹配出可用节点设备,以提升可用节点设备的查找速度。
当然,可以理解的是,上述仅为示例,举例说明在一些可能的场景中,请求驱逐pod的节点设备属于当前没有空闲节点资源的节点设备;在一些其他可能的场景中,还可以根据各个节点设备的状态标识信息,或者是资源利用情况,确定出当前没有空闲节点资源的节点设备,本申请对此不进行限定。
另外,在一些可能的场景中,当预驱逐控制器遍历结束上述的容器驱逐列表,仍然不存在能够被调度至其他可用节点设备的目标pod,即:该容器驱逐列表中不存在能够被调度至其他可用节点设备的多副本pod,则预驱逐控制器可以将该容器驱逐列表中对应的驱逐优先级最高的多副本pod确定为待驱逐pod;如此,在尽可能释放较多的节点资源的情况下,即使该pod被驱逐,且暂时无法被调度至其他的节点设备,也存在其他的副本pod提供服务,从而避免了单副本pod被驱逐后出现的服务中断。
并且,在一些可能的场景中,当预驱逐控制器确定出待驱逐pod,可以由目标节点设备内运行的EvictionManager对该待驱逐pod进行驱逐。另外,预驱逐控制器还可以将该目标节点设备的状态配置为禁止调度状态,以指示该目标节点设备不被用于创建新的pod;即:该目标节点设备已执行驱逐pod的操作,表征该目标节点设备当前的节点资源不足,因此,将该目标节点设备的状态配置为禁止调度状态,以避免被驱逐的pod重新被调度至目标节点设备,从而减少出现pod被反复驱逐的情况。
另外,在一些可能的场景中,针对上述的待驱逐pod,当EvictionManager对该待驱逐pod进行驱逐后,预驱逐控制器可以监听该待驱逐pod所属的目标对象的容器状态,该容器状态可以用于指示目标对象的副本状态,即该目标对象当前拥有的副本pod的数量。
基于此,当预驱逐控制器判定该目标对象的容器状态满足设定的多副本条件,比如,当所属于该目标对象的pod数量达到第二阈值,则预驱逐控制器可以将该目标节点设备的状态配置为允许调度状态,以指示该目标节点设备允许被用于创建新的pod;即:当该目标对象的容器状态满足设定的多副本条件,表征在先驱逐的pod已被调度至其他的节点设备,不会再被调度至目标节点设备造成反复驱逐的情况。
另外,基于与本申请提供的上述容器组驱逐方法相同的发明构思,结合图4所示,本申请还提供一种容器组驱逐装置300。在一些实施例中,容器组驱逐装置300可以包括处理模块301及判断模块302。其中:
处理模块301,用于按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在容器驱逐列表中确定出目标容器组;其中,目标容器组为多个可被驱逐的容器组中的多副本容器组;
判断模块302,用于判断目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;其中,容器集群包括多个节点设备,目标节点设备为多个节点设备中运行目标容器组的节点设备,可用节点设备为多个节点设备中能够运行目标容器组的节点设备;
处理模块301还用于,当目标容器组能够被调度至其他可用节点设备,则将目标容器组确定为待驱逐容器组。
可选地,在一些可能的实施方式中,判断模块302在判断目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备时,具体用于:
在容器集群中查找除目标节点设备以外的所有可用节点设备;
当可用节点设备的数量达到第一阈值,则确定目标容器组能够被调度至其他可用节点设备;
当可用节点设备的数量未达到第一阈值,则确定目标容器组不能够被调度至其他可用节点设备。
可选地,在一些可能的实施方式中,判断模块302在容器集群中查找除目标节点设备以外的可用节点设备时,具有用于:
创建目标容器组对应的节点查找策略;
将容器集群中与节点查找策略相匹配的节点设备确定为可用节点设备。
可选地,在一些可能的实施方式中,判断模块302在将容器集群中与节点查找策略相匹配的节点设备确定为可用节点设备之前,还用于:
确定出容器集群中当前具有空闲节点资源的所有节点设备;
判断模块302在将容器集群中与节点查找策略相匹配的节点设备确定为可用节点设备时,具体用于:
将当前具有空闲节点资源的所有节点设备中与节点查找策略相匹配的节点设备确定为可用节点设备。
可选地,在一些可能的实施方式中,判断模块302在确定出容器集群中当前具有空闲节点资源的所有节点设备时,具体用于:
将容器集群中除当前请求驱逐容器组的节点设备之外的其他节点设备,确定为当前具有空闲节点资源的所有节点设备。
可选地,在一些可能的实施方式中,处理模块301还用于:
当容器驱逐列表中不存在能够被调度至其他可用节点设备的目标容器组,则将容器驱逐列表中对应的驱逐优先级最高的多副本容器组确定为待驱逐容器组。
可选地,在一些可能的实施方式中,处理模块301还用于:
将目标节点设备的状态配置为禁止调度状态;其中,禁止调度状态用于指示对应的节点设备不被用于创建新的容器组。
可选地,在一些可能的实施方式中,处理模块301还用于:
监听待驱逐容器组所属的目标对象的容器状态;
当目标对象的容器状态满足设定的多副本条件,则将目标节点设备的状态配置为允许调度状态;其中,允许调度状态用于指示对应的节点设备允许被用于创建新的容器组。
可选地,在一些可能的实施方式中,处理模块301在确定目标对象的容器状态满足设定的多副本条件时,具体用于:
当所属于目标对象的容器组数量达到第二阈值,则确定目标对象的容器状态满足设定的多副本条件。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的一些实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请的一些实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请的一些实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的部分实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

Claims (12)

1.一种容器组驱逐方法,其特征在于,所述方法包括:
按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在所述容器驱逐列表中确定出目标容器组;其中,所述目标容器组为所述多个可被驱逐的容器组中的多副本容器组;
判断所述目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;其中,所述容器集群包括多个节点设备,所述目标节点设备为所述多个节点设备中运行所述目标容器组的节点设备,所述可用节点设备为所述多个节点设备中能够运行所述目标容器组的节点设备;
当所述目标容器组能够被调度至其他可用节点设备,则将所述目标容器组确定为待驱逐容器组。
2.如权利要求1所述的方法,其特征在于,所述判断所述目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备,包括:
在所述容器集群中查找除所述目标节点设备以外的所有可用节点设备;
当所述可用节点设备的数量达到第一阈值,则确定所述目标容器组能够被调度至其他可用节点设备;
当所述可用节点设备的数量未达到所述第一阈值,则确定所述目标容器组不能够被调度至其他可用节点设备。
3.如权利要求2所述的方法,其特征在于,所述在所述容器集群中查找除所述目标节点设备以外的可用节点设备,包括:
创建所述目标容器组对应的节点查找策略;
将所述容器集群中与所述节点查找策略相匹配的节点设备确定为可用节点设备。
4.如权利要求3所述的方法,其特征在于,在所述将所述容器集群中与所述节点查找策略相匹配的节点设备确定为可用节点设备之前,所述方法还包括:
确定出所述容器集群中当前具有空闲节点资源的所有节点设备;
所述将所述容器集群中与所述节点查找策略相匹配的节点设备确定为可用节点设备,包括:
将所述当前具有空闲节点资源的所有节点设备中与所述节点查找策略相匹配的节点设备确定为可用节点设备。
5.如权利要求4所述的方法,其特征在于,所述确定出所述容器集群中当前具有空闲节点资源的所有节点设备,包括:
将所述容器集群中除当前请求驱逐容器组的节点设备之外的其他节点设备,确定为当前具有空闲节点资源的所有节点设备。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
当所述容器驱逐列表中不存在能够被调度至其他可用节点设备的目标容器组,则将所述容器驱逐列表中对应的驱逐优先级最高的多副本容器组确定为待驱逐容器组。
7.如权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
将所述目标节点设备的状态配置为禁止调度状态;其中,所述禁止调度状态用于指示对应的节点设备不被用于创建新的容器组。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
监听所述待驱逐容器组所属的目标对象的容器状态;
当所述目标对象的容器状态满足设定的多副本条件,则将所述目标节点设备的状态配置为允许调度状态;其中,所述允许调度状态用于指示对应的节点设备允许被用于创建新的容器组。
9.如权利要求8所述的方法,其特征在于,所述目标对象的容器状态满足设定的多副本条件,包括:
当所属于所述目标对象的容器组数量达到第二阈值,则确定所述目标对象的容器状态满足所述设定的多副本条件。
10.一种容器组驱逐装置,其特征在于,所述装置包括:
处理模块,用于按照每一容器组各自对应的驱逐优先级顺序,依次遍历容器驱逐列表中记录的多个可被驱逐的容器组,并在所述容器驱逐列表中确定出目标容器组;其中,所述目标容器组为所述多个可被驱逐的容器组中的多副本容器组;
判断模块,用于判断所述目标容器组能否被调度至容器集群中除目标节点设备以外的其他可用节点设备;其中,所述容器集群包括多个节点设备,所述目标节点设备为所述多个节点设备中运行所述目标容器组的节点设备,所述可用节点设备为所述多个节点设备中能够运行所述目标容器组的节点设备;
所述处理模块还用于,当所述目标容器组能够被调度至其他可用节点设备,则将所述目标容器组确定为待驱逐容器组。
11.一种节点设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
CN202011486963.9A 2020-12-16 2020-12-16 容器组驱逐方法、装置、节点设备及存储介质 Pending CN112540829A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011486963.9A CN112540829A (zh) 2020-12-16 2020-12-16 容器组驱逐方法、装置、节点设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011486963.9A CN112540829A (zh) 2020-12-16 2020-12-16 容器组驱逐方法、装置、节点设备及存储介质

Publications (1)

Publication Number Publication Date
CN112540829A true CN112540829A (zh) 2021-03-23

Family

ID=75018969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011486963.9A Pending CN112540829A (zh) 2020-12-16 2020-12-16 容器组驱逐方法、装置、节点设备及存储介质

Country Status (1)

Country Link
CN (1) CN112540829A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297031A (zh) * 2021-05-08 2021-08-24 阿里巴巴新加坡控股有限公司 容器集群中的容器组防护方法及装置
CN113835840A (zh) * 2021-09-28 2021-12-24 广东浪潮智慧计算技术有限公司 一种集群资源管理方法、装置、设备及可读存储介质
CN117331650A (zh) * 2023-10-31 2024-01-02 中科驭数(北京)科技有限公司 容器集的调度方法、装置、设备及存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180349174A1 (en) * 2017-05-30 2018-12-06 Red Hat, Inc. Fast and greedy scheduling machine based on a distance matrix
CN109558260A (zh) * 2018-11-20 2019-04-02 北京京东尚科信息技术有限公司 Kubernetes故障排除***、方法、设备及介质
CN110096336A (zh) * 2019-04-29 2019-08-06 江苏满运软件科技有限公司 数据监控方法、装置、设备和介质
CN110427249A (zh) * 2019-07-26 2019-11-08 重庆紫光华山智安科技有限公司 任务分配方法、pod初始化方法及相关装置
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排***的资源二次调度方法及装置
CN110727512A (zh) * 2019-09-30 2020-01-24 星环信息科技(上海)有限公司 集群资源调度方法、装置、设备及储存介质
CN111104227A (zh) * 2019-12-28 2020-05-05 北京浪潮数据技术有限公司 一种K8s平台的资源控制方法、装置及相关组件
CN111314450A (zh) * 2020-02-06 2020-06-19 恒生电子股份有限公司 数据的传输方法、装置、电子设备和计算机存储介质
CN111464659A (zh) * 2020-04-27 2020-07-28 广州虎牙科技有限公司 节点的调度、节点的预选处理方法、装置、设备及介质
CN111522639A (zh) * 2020-04-16 2020-08-11 南京邮电大学 Kubernetes集群架构***下多维资源调度方法
CN111694633A (zh) * 2020-04-14 2020-09-22 新华三大数据技术有限公司 集群节点负载均衡方法、装置及计算机存储介质
CN111767113A (zh) * 2019-04-01 2020-10-13 北京沃东天骏信息技术有限公司 一种用于实现容器驱逐的方法和装置
US20200334075A1 (en) * 2016-04-12 2020-10-22 Telefonaktiebolaget Lm Ericsson (Publ) Process scheduling in a processing system having at least one processor and shared hardware resources
CN111930468A (zh) * 2020-07-13 2020-11-13 苏州浪潮智能科技有限公司 一种驱逐容器组的方法、***及装置

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200334075A1 (en) * 2016-04-12 2020-10-22 Telefonaktiebolaget Lm Ericsson (Publ) Process scheduling in a processing system having at least one processor and shared hardware resources
US20180349174A1 (en) * 2017-05-30 2018-12-06 Red Hat, Inc. Fast and greedy scheduling machine based on a distance matrix
CN109558260A (zh) * 2018-11-20 2019-04-02 北京京东尚科信息技术有限公司 Kubernetes故障排除***、方法、设备及介质
CN111767113A (zh) * 2019-04-01 2020-10-13 北京沃东天骏信息技术有限公司 一种用于实现容器驱逐的方法和装置
CN110096336A (zh) * 2019-04-29 2019-08-06 江苏满运软件科技有限公司 数据监控方法、装置、设备和介质
CN110427249A (zh) * 2019-07-26 2019-11-08 重庆紫光华山智安科技有限公司 任务分配方法、pod初始化方法及相关装置
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排***的资源二次调度方法及装置
CN110727512A (zh) * 2019-09-30 2020-01-24 星环信息科技(上海)有限公司 集群资源调度方法、装置、设备及储存介质
CN111104227A (zh) * 2019-12-28 2020-05-05 北京浪潮数据技术有限公司 一种K8s平台的资源控制方法、装置及相关组件
CN111314450A (zh) * 2020-02-06 2020-06-19 恒生电子股份有限公司 数据的传输方法、装置、电子设备和计算机存储介质
CN111694633A (zh) * 2020-04-14 2020-09-22 新华三大数据技术有限公司 集群节点负载均衡方法、装置及计算机存储介质
CN111522639A (zh) * 2020-04-16 2020-08-11 南京邮电大学 Kubernetes集群架构***下多维资源调度方法
CN111464659A (zh) * 2020-04-27 2020-07-28 广州虎牙科技有限公司 节点的调度、节点的预选处理方法、装置、设备及介质
CN111930468A (zh) * 2020-07-13 2020-11-13 苏州浪潮智能科技有限公司 一种驱逐容器组的方法、***及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JOSHUAANDREW: "容器调度", Retrieved from the Internet <URL:CSDN,https://blog.csdn.net/chweiweich/article/details/53244965> *
ZHANG D,ET AL.: "Container oriented job scheduling using linear programming model", 《IEEE》 *
黄涛: "基于Kubernetes的容器云调度算法的研究", 《中国优秀硕士学位论文全文数据库-信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297031A (zh) * 2021-05-08 2021-08-24 阿里巴巴新加坡控股有限公司 容器集群中的容器组防护方法及装置
CN113835840A (zh) * 2021-09-28 2021-12-24 广东浪潮智慧计算技术有限公司 一种集群资源管理方法、装置、设备及可读存储介质
CN117331650A (zh) * 2023-10-31 2024-01-02 中科驭数(北京)科技有限公司 容器集的调度方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN112540829A (zh) 容器组驱逐方法、装置、节点设备及存储介质
US7810098B2 (en) Allocating resources across multiple nodes in a hierarchical data processing system according to a decentralized policy
US8458712B2 (en) System and method for multi-level preemption scheduling in high performance processing
US7920282B2 (en) Job preempt set generation for resource management
CN108509280B (zh) 一种基于推送模型的分布式计算集群本地性调度方法
CN108616424B (zh) 一种资源调度方法、计算机设备和***
CN110597614A (zh) 一种资源调整方法及装置
CN113886069A (zh) 一种资源分配方法、装置、电子设备及存储介质
US9384050B2 (en) Scheduling method and scheduling system for multi-core processor system
US9128754B2 (en) Resource starvation management in a computer system
CN112214288B (zh) 基于Kubernetes集群的Pod调度方法、装置、设备和介质
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
US20150365474A1 (en) Computer-readable recording medium, task assignment method, and task assignment apparatus
CN112527490B (zh) 节点资源管控方法、装置、电子设备及存储介质
CN113608896B (zh) 一种动态切换数据流的方法、***、介质及终端
CN114675954A (zh) 任务调度方法及装置
CN114443302A (zh) 容器集群扩容方法、***、终端及存储介质
CN109240829B (zh) 用于交换芯片的申请、管理独占资源的方法及装置
CN112612606A (zh) 消息主题的处理方法、装置、计算机设备和可读存储介质
CN114077493A (zh) 一种资源分配方法及相关设备
CN113703930A (zh) 任务调度方法、装置及***、计算机可读存储介质
CN113127289A (zh) 一种基于yarn集群的资源管理方法、计算机设备和存储介质
CN113254143A (zh) 虚拟化网络功能网元编排调度方法、装置和***
CN111142880B (zh) 消息***中分区的分配方法、装置及电子设备
US11687269B2 (en) Determining data copy resources

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