CN116643845A - 缩容方法、容器编排***、设备及存储介质 - Google Patents
缩容方法、容器编排***、设备及存储介质 Download PDFInfo
- Publication number
- CN116643845A CN116643845A CN202310609518.4A CN202310609518A CN116643845A CN 116643845 A CN116643845 A CN 116643845A CN 202310609518 A CN202310609518 A CN 202310609518A CN 116643845 A CN116643845 A CN 116643845A
- Authority
- CN
- China
- Prior art keywords
- container group
- state
- workload
- container
- condition
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012217 deletion Methods 0.000 claims abstract description 55
- 230000037430 deletion Effects 0.000 claims abstract description 55
- 230000009467 reduction Effects 0.000 claims description 26
- 238000012795 verification Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 239000003795 chemical substances by application Substances 0.000 description 34
- 230000000875 corresponding effect Effects 0.000 description 30
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 11
- 239000000243 solution Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000011038 discontinuous diafiltration by volume reduction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种缩容方法、容器编排***、设备及存储介质。其中,方法包括如下的步骤:当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。采用本申请实施例提供的技术方案进行缩容时,能够辨别出哪些已运行容器组繁忙,哪些已运行容器组空闲,这样,有助于减少那些繁忙的容器组,也即有任务需要处理的容器组被删除的情况,能够减低对应用服务的影响,提升应用服务质量。
Description
技术领域
本申请涉及云计算领域,尤其涉及一种缩容方法、容器编排***、设备及存储介质。
背景技术
目前,基于容器编排***Kubernetes进行应用部署已然成为一种行业趋势,通过其编排能力可以轻松实现应用的故障自愈、运维、弹性伸缩等能力。
以视频直播应用为例,视频直播应用所涉及的直播转码是一项资源密集型任务,需要大量的计算资源,突发的流量增量会极大影响服务能力。视频直播服务提供了直播服务的成套解决方案,其直播服务的核心环节——直播转码充分利用云上计算资源。直播转码用于将直播流转换为不同编码格式、不同分辨率、不同码率的转码流推送给用户,以满足差异化环境(不同网络环境、不同终端设备)下的播放需求。
由于直播转码是典型的长连接任务,任何对服务中节点的下线动作都将对服务质量带来严重影响,在通过容量伸缩以满足服务需求及成本控制双重要求的前提下,如何降低应用容器组pod的缩容对应用服务的影响是亟待解决的问题。
发明内容
鉴于上述问题,提出了本申请以提供一种解决上述问题或至少部分地解决上述问题的缩容方法、容器编排***、设备及存储介质。
于是,在本申请的一个实施例中,提供了一种缩容方法。该方法包括:
当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;
根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
在本申请的又一实施例中,提供了一种容器编排***。该容器编排***,包括:所述容器编排***中部署有工作负载;所述容器编排***,包括:所述工作负载对应的工作负载代理组件;其中,
所述工作负载代理组件,用于:当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
在本申请的又一实施例中,提供了一种电子设备。该电子设备,包括:存储器和处理器,其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现上述任一项所述的缩容方法。
在本申请的又一实施例中,提供了一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述任一项所述的缩容方法。
本申请实施例提供的技术方案中,在需要对应用的工作负载进行缩容时,会去获取工作负载的至少一个已运行容器组的与忙闲情况有关的状态,并结合至少一个已运行容器组的与忙闲情况有关的状态来确定满足预设删除条件的目标容器组。采用本申请实施例提供的技术方案进行缩容时,能够辨别出哪些已运行容器组繁忙,哪些已运行容器组空闲,这样,有助于减少那些繁忙的容器组,也即有任务需要处理的容器组被删除的情况,能够减低对应用服务的影响,提升应用服务质量。以直播转码场景为例,采用本申请实施例提供的技术方案可减少正在负责某个直播流的转码任务的容器组被删除的情况,进而减少容器组切换导致的观众端直播卡顿、中断等情况。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的直播方法的流程示意图;
图2为本申请一实施例提供的容器编排***的结构示意图;
图3为本申请一实施例提供的缩容方法的流程示意图;
图4为本申请一实施例提供的状态流转示意图;
图5为本申请一实施例提供的状态切换流程示意图;
图6为本申请一实施例提供的扩缩容方法的流程示意图;
图7为本申请一实施例提供的状态校验流程示意图;
图8为本申请一实施例提供的电子设备的结构框图。
具体实施方式
以视频直播应用为例,在对直播转码容量伸缩的过程中,可能存在以下若干问题:缩容过程中,若对正在执行转码任务的非空闲节点缩容,会导致转码断流,若无高可用方案,播放端播放画面会受影响;转码服务基于云上Kubernetes部署,其管理的节点由宿主机虚拟化技术生成,可能存在因基础设施异常对节点进行迁移导致转码服务宕机的问题面向上述问题。
其直播转码过程包括图1所示的若干环节:
1、推流端将源流推送至直播中心。
2、直播中心向直播转码服务发起转码流请求。
3、直播转码服务层收到请求后向任务调度层发起资源申请并启动转码任务。
4、转码节点根据任务调度层的任务调度指示,拉取相应的直播源流并同时进行转码。
5、转码节点实时将转码流推送回直播中心。
6、播放端从直播中心拉取转码流进行播放。
从整个转码流程中可以看出,直播转码是典型的长连接任务,任何对服务中节点的下线动作都将对服务质量带来严重影响,在通过容量伸缩以满足应用需求及成本控制双重要求的前提下,如何基于Kubernetes实现对应用容器组Pod的优雅上下线是一大难点问题。
为解决上述痛点,在Pod生命周期中感知pod的忙闲情况,实现容量伸缩过程中pod的忙闲情况可见,降低容量运维成本,提高服务质量稳定性。
为了使本技术领域的人员更好地理解本申请方案,下面将根据本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
术语解释:
直播转码:直播转码是将视频码流转换成另一个视频码流功能。通过转码,可以改变原始码流的编码格式、分辨率和码率等参数,从而适应不同终端和网络环境的播放。以适配不同的网络带宽、不同的终端处理能力、不同的延时要求,满足不同的用户需求。
Kubernetes(简称K8s):是一种开源容器编排***,是一个用于容器编排、部署、扩展和管理容器化应用程序的开源平台。它提供了一个平台,为应用程序提供了包括部署、调度、自动伸缩、维护和健康检查等基础能力。其可以在物理服务器、虚拟机和公有云资源上提供端到端解决方案。
容器组Pod:是K8s中最小的部署单元,它可以容纳一个或多个容器,以及定义并管理了容器之间所需的共享资源,如存储卷、网络等。K8s调度Pod而不是容器,可以将一组容器看作是一个实体,它们可以共享资源和内存空间,同时保持一致性。
工作负载Workload:是在K8s集群中运行的应用程序的实例。K8s提供了多种类型的工作负载,包括部署(Deployment)、副本集(Replica Set)、状态集(Stateful Set)等,以及其他开源增强工作负载,如克隆集(Clone Set)、增强状态集(Advanced Stateful Set)等。在K8s中,通常不需要用户直接管理每个容器组。而是使用工作负载来替用户管理一组容器组。工作负载通过终态配置来确保容器组的状态及个数满足用户期望。
克隆集(Clone Set):开源的增强型的工作负载,可以对标原生的部署(Deployment),但是提供了如指定容器组缩容、原地升级、分批(Partition)发布等增强能力。
网络钩子(Web hook):是K8s中的一种回调机制,其允许K8s中应用程序接口服务在接收到对象的创建、删除、更新等资源变更操作时采取相应的动作,如放行、阻止或覆盖对象的某些配置。
Operator是使用自定义资源(Custom Resource,CR)管理应用及其组件的自定义控制器,自定义资源是K8s中的API(Application Programming Interface,应用程序编程接口)扩展机制。自定义资源定义(Custom Resource Definition,CRD)会声明CR并列出Operator用户可用的所有配置。当Operator被部署到K8s集群中会通过连接集群中的API服务组件(API server)监听特定资源类型的事件并基于CR中提供的配置和嵌入在Operator中的处理逻辑采取对应的操作,进行循环处理确保当前该资源的状态与理想状态相符。
在对本申请实施例提供的缩容方法进行介绍之前,对本申请实施例提供的方法所涉及的容器编排***进行介绍。图2示出了本申请一实施例提供的容器编排***。如图2所示,所述容器编排***中部署有工作负载201;该容器编排***包括:所述工作负载201对应的工作负载代理组件202;其中,
所述工作负载代理组件202,用于:当需要对工作负载201进行缩容时,获取所述工作负载201的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
可选地,上述***可应用在直播转码场景中。也即,所述已运行容器组用于对其分配到的直播转码任务所涉及的直播流进行转码处理。实际应用中,上述工作负载用于负责多个直播流各自的直播转码任务。
上述***除了应用在直播转码场景中,还可应用在任何不能接受容器组切换导致的延时的场景。
实际应用中,一个主播的一个直播流对应的直播转码任务会分配给一个已运行容器组,以由该已运行容器组在该主播直播过程中对该主播的该直播流进行转码。
在一实例中,所述状态可包括但不限于:无任务状态(Idle)、有任务状态(Busy)。其中,无任务状态对应于空闲情况,没有任务(例如:直播转码任务)需要处理;有任务状态对应于繁忙情况,有任务需要处理。
本申请实施例提供的技术方案中,在需要对应用的工作负载进行缩容时,会去获取工作负载的至少一个已运行容器组的与忙闲情况有关的状态,并结合至少一个已运行容器组的与忙闲情况有关的状态来确定满足预设删除条件的目标容器组。采用本申请实施例提供的技术方案进行缩容时,能够辨别出哪些已运行容器组繁忙,哪些已运行容器组空闲,这样,有助于减少那些繁忙的容器组,也即有任务需要处理的容器组被删除的情况,能够减低对应用服务的影响,提升应用服务质量。
可选地,所述工作负载代理组件202,具体用于:
根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定状态为无任务状态的第一容器组;
根据所述第一容器组,确定满足预设删除条件的目标容器组。
以直播转码场景为例,本方案尽量确保一个直播流一直由一个已运行容器组来完成转码处理,以避免容器组切换导致的观众端直播中断、卡顿等情况。
现有技术中,在进行工作负载缩容时,那些正在处理任务的容器组有可能会被删除掉,这些容器组被删除之后,它们已分配到的且尚未处理完的任务就会被暂停处理,对应用服务产生负面影响。本申请实施例提供的技术方案中,当需要对应用的工作负载进行缩容时,会结合其对应容器组的忙闲情况,也即有/无任务情况来筛选需要进行删除的容器组,最终确定出的要删除的容器组是当前没有任务需要处理的。可见,本申请实施例提供的技术方案能够确保删除的是当前没有任务需要处理的容器组,而不是当前有任务需要处理的容器组,能够降低对应用服务的影响。
在一具体实例中,直接将第一容器组确定为满足预设删除条件的目标容器组。
实际应用中,如图2所示,上述容器编排***中还可包括:所述工作负载对应的任务调度组件204;所述任务调度组件204用于为所述工作负载的至少一个已运行容器组分配任务,并且所述任务调度组件204还可用于检测所述至少一个已运行容器组中各容器组当前是否有任务需要处理,以确定各容器组的忙闲情况。其中,有任务需要处理,则为繁忙情况;无任务需要处理,则为空闲情况。任务调度组件204可每隔预设时间间隔检测一次至少一个已运行容器组中各容器组当前是否有任务需要处理,以确定各容器组的忙闲情况。
在一种可实现的方案中,所述工作负载代理组件202可直接从上述任务调度组件204处获取至少一个已运行容器组的忙闲情况,以确定各容器组的状态。若为繁忙情况,则为有任务状态;若为空闲情况,则为无任务状态。
具体地,工作负载代理组件202可向任务调度组件204发送获取请求;任务调度组件204接收到获取请求后,将其最近一次检测到的各容器组的忙闲情况返回给工作负载代理组件202,或者,任务调度组件204接收到获取请求后,检测至少一个已运行容器组中各容器组当前是否有任务需要处理,以确定各容器组的忙闲情况,并将各容器组的忙闲情况返回给工作负载代理组件202。
在本实施例中,需要工作负载代理组件202靠自身的处理逻辑来维护各容器组的状态。
在另一种可实现的方案中,上述容器编排***还可包括:所述工作负载对应的状态管理组件203;其中,
所述任务调度组件204,用于向所述至少一个已运行容器组分配任务并检测所述至少一个已运行容器组的忙闲情况;
所述状态管理组件203,用于根据从所述任务调度组件处获取到所述至少一个已运行容器组的忙闲情况来维护所述工作负载的至少一个已运行容器组的状态标签;
所述工作负载代理组件202,具体用于:当需要对工作负载进行缩容时,从所述工作负载的至少一个已运行容器组的状态标签中获取所述工作负载的至少一个已运行容器组的状态。
在本实施例中,为容器组添加状态标签,由状态管理组件203来维护或更新每一个容器组的状态标签。这样,当工作负载代理组件202需要获取各容器组的状态时,从各容器组的状态标签中直接获取即可,无需再去请求任务调度组件204,也无需自己维护。可见,本方案将状态维护和扩缩容逻辑进行了解耦,分别由状态管理组件和工作负载代理组件分别来实现,有助于后期维护和版本更新。
可选地,如图2所示,上述容器编排***还可包括:应用程序接口(API,Application Programming Interface)服务组件205。工作负载代理组件202还用于:请求应用程序接口服务组件205删除所述目标容器组。
在一实例中,在应用程序接口服务组件205接收到删除请求后,应用程序接口服务组件205直接删除目标容器组即可。在另一实例中,在应用程序接口服务组件205接收到删除请求后,需要判断该删除操作是否属于异常删除场景,如果属于异常删除场景,则应该拒绝删除,以避免异常删除情况出现,进而避免删除正在处理任务的容器组;如果不属于异常删除场景,则放行。具体地,所述应用程序接口服务组件205接收到所述删除请求后,请求状态校验组件206,检验所述目标容器组的状态是否满足所述预设删除条件;校验通过后,删除所述目标容器组。
这样,在由于基础设施主动运维或出现异常需要迁移容器组等非预期删除场景(也即上文异常删除场景)时,拒绝下线操作以给切流留出足够时间,从而避免对应用服务造成的影响,提升服务质量。
状态校验组件206可通过两个途径来获取任务容器组的状态。第一种途径是:从所述目标容器组的状态标签中获取所述目标容器组的状态;第二种途径是:从任务调度组件处获取所述目标容器组的忙闲情况,以确定所述目标容器组的状态。
需要补充说明的是,采用第一种途径,有可能会出现这种情况:目标容器组被认为是满足预设删除条件并预备删除前,其容器或容器内服务因异常发生重启导致该目标容器组在任务调度面重新上线(重新上线,就意味着任务调度组件会继续为该目标容器组分配新的任务),而此时状态校验组件依旧会认定该目标容器组属于可删除的容器组,放行了其删除操作。因此,可采用上述第二种途径来解决上述第一种途径存在的问题,具体地,状态校验组件通过调用任务调度组件提供的接口来请求目标容器组当前的实际忙闲情况,并判断是否满足预设删除条件,或者,状态校验组件通过目标容器组中的钩子函数preStop来获取目标容器组的实际忙闲情况,并判断是否满足预设删除条件。
在本实施例中,应用程序接口服务组件通过调用状态校验组件来对状态进行校验,而无需应用程序接口服务组件自己去校验。也就是说,本实施例提供的技术方案无需修改容器编排***中已有应用程序接口服务组件的运行逻辑,可方便扩展。
上述工作负载代理组件、状态管理组件以及状态校验组件均可通过相应的自定义资源(Custom Resource,CR)和相应的自定义控制器来实现,各组件(也即自定义控制器)通过使用各自的自定义资源来管理相应应用和基础组件,方便对容器编排***进行功能扩展,这种机制方便用户在容器编排***中开发和部署自己的应用逻辑。
具体地,本方案定义如下几种自定义资源:
用于托管工作负载伸缩的自定义资源——工作负载代理WorkloadProxy,可支持管理上述部署、状态集、克隆集、增强状态集这四类工作负载;
用于定期维护容器组状态标签的自定义资源——状态管理(Pod Business LifeCycle),用于在容器组上暴露状态给工作负载代理,实现对容器组的忙闲情况的感知并根据当前感知到的容器组的忙闲情况对状态标签中的状态进行状态流转。
基于工作负载代理及状态管理这两个自定义资源,通过工作负载的指定容器组缩容的能力,在伸缩过程中,可实现在感知到容器组忙闲情况的条件下,对满足缩容条件的容器组进行下线。
此外,本方案实现了一种状态校验组件(Pod Business Life Cycle Webhook),在容器组需要被API服务组件删除时,校验容器组的状态是否满足预设删除条件,不满足则禁止删除。
上述容器编排***中各组件的具体处理过程以及各组件之间的交互过程将在下述各实施例中详细介绍。
图3示出了本申请一实施例提供的缩容方法的流程示意图。该方法的执行主体可以为上述容器编排***中的工作负载代理组件。如图3所示,该方法包括:
301、当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态。
其中,各已运行容器组的状态与其忙闲情况有关。
302、根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
在一实例中,所述已运行容器组用于对其分配到的直播转码任务所涉及的直播流进行转码处理。
上述301中,在一种可实现的方案中,当需要对工作负载进行缩容时,从所述工作负载的至少一个已运行容器组的状态标签中获取所述至少一个已运行容器组的状态;其中,所述状态标签由所述工作负载对应的状态管理组件根据从所述任务调度组件处获取到的相应容器组的忙闲情况来维护。在一实例中,所述状态可包括但不限于:无任务状态(Idle)、有任务状态(Busy)、待下线状态(Need Offline)、待删除状态(Wait Offline)以及待上线状态(Need Online)。
其中,待下线状态指的是等待工作负载对应的任务调度组件暂停向相应容器组分配任务的状态;待上线状态指的是等待工作负载对应的任务调度组件重新向相应容器组分配任务的状态;待删除状态指的是等待应用程序接口服务组件删除相应容器组的状态。其中,处于待删除状态的容器组指的是无任务需要处理且任务调度组件已暂停向其分配任务。
具体地,所述工作负载对应的状态管理组件根据从所述任务调度组件处获取到的相应容器组的忙闲情况对状态标签中的状态进行状态流转。其中,状态在多种预设状态之间流转,所述多种预设状态可包括:无任务状态(Idle)、有任务状态(Busy)、待下线状态(Need Offline)、待删除状态(Wait Offline)以及待上线状态(Need Online)。具体的状态流转的过程将在下述各实施例中详细介绍。
上述302中,在一种可实现的方案中,至少一个已运行容器组中,状态为无任务状态和/或待删除状态的容器组作为满足预设删除条件的目标容器组。处于无任务状态或待删除状态的容器组当前无任务需要处理,删除这样的容器组,不会影响应用服务质量。
现有技术中,在进行工作负载缩容时,那些正在处理任务的容器组有可能会被删除掉,这些容器组被删除之后,它们已分配到的且尚未处理完的任务就会被暂停处理,对应用服务产生负面影响。本申请实施例提供的技术方案中,当需要对应用的工作负载进行缩容时,会结合其对应容器组的忙闲情况,也即有/无任务情况来筛选需要进行删除的容器组,最终确定出的要删除的容器组是当前没有任务需要处理的。可见,本申请实施例提供的技术方案能够确保删除的是当前没有任务需要处理的容器组,而不是当前有任务需要处理的容器组,能够降低对应用服务的影响。
在实际应用中,任一个容器组的状态按照图4所示的状态流转图流转。如图4所示:
从空流转至有任务状态——S(11):容器组状态管理组件针对初始创建的容器组Pod,通过任务调度组件的查询,确定其状态为有任务状态并将状态更改为有任务状态;
从空流转至无任务状态——S(12):容器组状态管理组件针对初始创建的容器组Pod,通过任务调度组件的查询,确定其状态为无任务状态并将状态更改为无任务状态;
从有任务状态流转至无任务状态——S(2):容器组状态管理组件通过任务调度组件的查询,确定其状态为无任务状态并将状态更改为无任务状态;
从无任务状态流转至有任务状态——S(31):容器组状态管理组件通过任务调度组件的查询,确定其状态为有任务状态并将状态更改为有任务状态;
从无任务状态流转至待下线状态——S(32):工作负载代理组件需要进行缩容时,由工作负载代理组件将无任务状态更改为待下线状态。
从待下线状态流转至待删除状态——S(41):容器组状态管理组件向任务调度组件发送下线请求,并通过任务调度组件查询到容器组当前属于空闲情况,则将状态更改为待删除状态。
从待下线状态流转至待上线状态——S(42):容器组状态管理组件向任务调度组件发送下线请求,并通过任务调度组件查询到容器组当前属于繁忙情况,则将状态更改为待上线状态;
从待上线状态流转至有任务状态——S(5):容器组状态管理组件向任务调度组件发送上线请求,并通过任务调度组件查询到容器组当前属于繁忙情况,则将状态更改为有任务状态;上线请求用于请求所述任务调度组件继续向该容器组分配任务。
从待删除状态到释放——S(61):工作负载代理组件调用工作负载去请求API服务组件删除指定容器组,容器组Pod被成功删除(也即释放);
从待删除状态到流转至待上线状态——S(62):工作负载代理组件需要扩容时,将该容器组的状态修改为待上线状态。
可选地,上述302中“根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组”,可采用如下步骤来实现:
3021、根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定状态为无任务状态的第一容器组。
3022、根据所述第一容器组,确定满足预设删除条件的目标容器组。
上述3021中,在一种可实现的方案中,可获取缩容要求;缩容要求中包含所需删除的目标容器组数量;根据缩容要求中所包含的目标容器组数量,从所述至少一个已运行容器组中确定状态为无任务状态的至少一个第一容器组。实际应用中,至少一个第一容器组的数量等于或小于所述目标容器组数量。
当所述至少一个已运行容器组中状态为无任务状态的容器组数量大于或等于所述目标容器组数量时,至少一个第一容器组的数量等于所述目标容器组数量;当所述至少一个已运行容器组中状态为无任务状态的容器组数量小于所述目标容器组数量时,至少一个第一容器组的数量小于所述目标容器组数量。
上述3022中,在一实例中,可直接将第一容器组作为满足预设删除条件的目标容器组。
实际应用中,工作负载代理组件可请求API服务组件来删除目标容器组。具体地,工作负载代理组件可调用所述工作负载去请求API服务组件来删除目标容器组。
若将第一容器组确定为满足预设删除条件的目标容器组之后,任务调度组件又再次向第一容器组分配新的任务,就会使得第一容器组的实际状态从无任务状态进入有任务状态。这时如果删除该第一容器组,就会导致该第一容器组新分配到的任务被暂停处理,影响应用服务。因此,上述3022中“根据所述第一容器组,确定满足预设删除条件的目标容器组”,可包括:
S71、请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务。
S72、请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,将所述第一容器组确定为满足所述预设删除条件的目标容器组。
上述S71中,在一种可实现的方案中,工作负载代理组件可直接向任务调度组件发送下线请求;其中,所述下线请求用于请求所述任务调度组件停止向所述第一容器组分配任务。
在另一种可实现的方案中,将所述第一容器组的状态标签中状态更新为待下线状态,以触发所述状态管理组件向所述任务调度组件发送下线请求;其中,所述下线请求用于请求所述任务调度组件停止向所述第一容器组分配任务。
状态管理组件可每隔预设时间间隔查询第一容器组的状态标签中的状态,一旦查询到第一容器组的状态标签中状态更新为待下线状态时,向所述任务调度组件发送下线请求。
其中,任务调度组件接收到下线请求后,停止向第一容器组分配任务。
在实际应用中,由于网络传输存在时延,若在任务调度组件接收到该下线请求之前,就已经重新向第一容器组分配了新的任务,这时,如果删除第一容器组,就会导致该新分配的任务被暂停处理,影响应用服务。因此,所述状态管理组件还可用于:向所述工作负载对应的任务调度组件发送下线请求后,请求所述任务调度组件查询所述第一容器组当前的忙闲情况;若所述第一容器组当前的忙闲情况为空闲情况,则将所述第一容器组的状态标签中状态更新为待删除状态。若查询到第一容器组当前的忙闲情况为空闲情况,说明在任务调度组件接收到上述下线请求之前,没有向第一容器组重新分配新的任务。若查询到第一容器组当前的忙闲情况为繁忙情况,则说明在任务调度组件接收到上述下线请求之前,向第一容器组重新分配了新的任务。
相应的,上述S72中:“请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,将所述第一容器组确定为满足所述预设删除条件的目标容器组”,可包括:
请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,当所述第一容器组的状态标签中状态变为待删除状态时,将所述第一容器组确定为满足所述预设删除条件的目标容器组。
工作负载代理组件可每个预设时间间隔去查询一次第一容器组的状态标签;当查询到第一容器组的状态标签中状态变为待删除状态时,将所述第一容器组确定为满足所述预设删除条件的目标容器组。
在本实施例中,能够确保最终删除的容器组是空闲的容器组,这样可避免对应用服务产生不好的影响。
在一实例中,确定出满足预设删除条件的目标容器组之后,若当前已确定出的目标容器组的数量小于缩容要求中所需删除的目标容器组数量,则可继续执行上述步骤301、302以确定出新的满足预设删除条件的目标容器组,直至已确定出的满足预设删除条件的目标容器组的总数量满足缩容要求为止。
可选地,所述状态管理组件还用于:若所述第一容器组当前的忙闲情况为繁忙情况,则将所述第一容器组的状态标签中状态更新为待上线状态;当所述第一容器组的状态标签中状态为待上线状态时,请求所述任务调度组件继续向所述第一容器组分配任务。
若查询到所述第一容器组当前的忙闲情况为繁忙情况,说明第一容器组不能够被删除,那么该第一容器组应该需要继续接收新的任务进行处理,因此,需要再次请求所述任务调度组件继续向所述第一容器组分配任务。具体地,所述状态管理组件还用于:若所述第一容器组当前的忙闲情况为繁忙情况,则将所述第一容器组的状态标签中状态更新为待上线状态;当所述第一容器组的状态标签中状态为待上线状态时,请求所述任务调度组件继续向所述第一容器组分配任务。
其中,状态管理组件可每隔预设时间间隔检测第一容器组的状态标签中的状态,一旦检测到第一容器组的状态标签中状态为待上线状态,则请求所述任务调度组件继续向所述第一容器组分配任务。具体地,状态管理组件可向所述任务调度组件发送上线请求;所述上线请求用于请求所述任务调度组件继续向所述第一容器组分配任务。任务调度组件接收到上线请求后,继续向所述第一容器组分配任务。
在一实例中,上述方法,还可包括:
303、确定所述工作负载的至少一个未调度容器组的数量。
304、判断所述至少一个未调度容器组的数量是否满足缩容要求。
305、当所述至少一个未调度容器组的数量不满足缩容要求时,将所述至少一个未调度容器组确定为满足所述预设删除条件的目标容器组并触发所述根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组的步骤。
上述304中,缩容要求中包含包含所需删除的目标容器组数量;若至少一个未调度容器组的数量小于目标容器组数量,则确定至少一个未调度容器组的数量不满足缩容要求;若至少一个未调度容器组的数量大于或等于目标容器组数量,则确定至少一个未调度容器组的数量满足缩容要求。
上述305中,当不满足缩容要求时,可将所述至少一个未调度容器组确定为满足所述预设删除条件的目标容器组;并计算目标容器组数量与至少一个未调度容器组的数量之间的第一差值;并根据至少一个已运行容器组的状态以及所述第一差值,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。其中,确定出的满足预设删除条件的目标容器组的数量上限为所述第一差值。
在本实施例中,根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组,具体可包括:
根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定状态为待删除状态的至少一个第二容器组;
若至少一个第二容器组的数量大于或等于所述第一差值,则从至少一个第二容器组中选择所述第一差值个的第二容器组,以作为满足预设删除条件的目标容器组;
若至少一个第二容器组的数量小于所述第一差值,则将至少一个第二容器组作为作为满足预设删除条件的目标容器组,并计算所述第一差值与至少一个第二容器组的数量之间的第二差值;
根据第二差值,从所述至少一个已运行容器组中确定状态为无任务状态的至少一个第一容器组。
其中,至少一个第一容器组的数量上限为第二差值。具体地,若所述至少一个已运行容器组中状态为无任务状态的容器组的数量大于或等于第二差值,则从至少一个已运行容器组中选择出所述第二差值个状态为无任务状态的容器组,以得到至少一个第一容器组。若所述至少一个已运行容器组中状态为无任务状态的容器组的数量小于第二差值,则将所述至少一个已运行容器组中状态为无任务状态的容器组全部作为第一容器组。
上述方法还可包括:当当前已确定出的目标容器组的总数量不满足所述缩容要求时,可在预设时间间隔后,继续执行上述步骤301、步骤302以找到新的满足预设删除条件的目标容器组,直至已确定出的目标容器组的总数量满足缩容要求为止。注:各容器组的状态处于动态变化中,因此,预设时间间隔后,某些容器组的状态就有可能从有任务状态变为无任务状态。
为了节省资源占用,任一个目标容器组在被确定出来之后,工作负载代理组件可请求API服务组件删除该目标容器组,无需等到已确定出的目标容器组的总数量满足缩容要求时再删除。
实际应用中,当需要对工作负载进行扩缩容时,***或用户可通过更新所述工作负载代理组件所使用的自定义资源中配置的所述工作负载的期望副本数来实现。一旦所述工作负载代理组件所使用的自定义资源中配置的所述工作负载的期望副本数发生改变,就可自动实现对工作负载的扩缩容。在一实例中,所述方法,还可包括:
305、确定所述工作负载代理组件所使用的自定义资源中配置的所述工作负载的期望副本数。
306、确定所述工作负载的实际副本数。
307、当所述实际副本数大于所述期望副本数时,确定需要对所述工作负载进行缩容。
可每隔第一预设时间间隔,确定所述工作负载代理组件所使用的自定义资源中配置的所述工作负载的期望副本数以及确定所述工作负载的实际副本数。
上述方法,还可包括:
308、当所述实际副本数小于所述期望副本数时,确定需要对所述工作负载进行扩容。
上述方法,还可包括:
309、当需要对所述工作负载进行扩容时,请求应用程序接口服务组件增大所述工作负载对应的工作负载声明中的副本数。
工作负载声明中的副本数被增大之后,容器编排***会自动创建新的容器组。
此外,上述方法,还可包括:
310、向应用程序接口服务组件发送删除所述目标容器组的删除请求。
其中,所述应用程序接口服务组件接收到所述删除请求后,请求状态校验组件,检验所述目标容器组的状态是否满足所述预设删除条件;校验通过后,删除所述目标容器组。
具体实现可参见上述各实施例中相应内容,在此不再赘述。本方案旨在提供一种基于Kubernetes的面向直播转码的优雅下线服务,进而提高伸缩效率的同时满足服务质量要求。
下面将以直播转码为例,结合图5、图6和图7对本申请实施例提供的技术方案进行详细介绍:
图5为容器组状态切换流程图。如图5所示,切换流程包括:
601、判断容器组是否处于运行中。
若为是,则执行步骤602;否则,不作任何处理。
602、通过标签获取容器组的状态。
603、判断容器组状态是否为待下线状态。
604、请求任务调度组件对容器组进行下线。
也即请求任务调度组件停止向容器组分配任务。
605、请求任务调度组件查询是否空闲。
也即查询容器组的忙闲情况。
606、判断任务调度组件的查询结果是否为空闲。
若为是,则执行步骤607;否则,执行步骤608。
607、更新状态为待删除状态。
608、更新状态为待上线状态。
609、判断容器组状态是否为空、有任务状态或无任务状态。
若为是,则执行步骤610。
610、请求任务调度组件查询是否空闲以及上下线情况。
也即查询容器组的忙闲情况以及上下线情况。
611、判断任务调度组件的查询结果是否为空闲。
若为是,则执行步骤612;否则,执行步骤613。
612、更新状态为无任务状态。
613、更新状态为有任务状态。
614、判断任务调度组件的查询结果是否为下线情况。
若为是,则执行步骤615。
通过步骤614,可将非法下线的情况进行纠正,避免对服务质量产生影响。
615、请求任务调度组件进行上线。
也即请求任务调度组件重新向容器组分配任务。
616、判断容器组状态是否待上线状态。
若为是,则执行步骤617。
617、请求任务调度组件进行上线。
618、更新状态为有任务状态。
在本方案中,执行完步骤617之后,可立即执行步骤618。也即默认只要容器组上线,其状态即为有任务状态。
在实际应用中,将工作负载托管给工作负载代理组件,通过调整工作负载代理组件所使用的自定义资源中配置的工作负载的期望副本数可实现对直播转码容器组的横向伸缩。
图6为工作负载代理组件感知到伸缩时,对托管的工作负载进行伸缩操作的流程图。如图6所示,该方法,包括:
701、比较工作负载代理组件所使用的自定义资源中配置的工作负载的期望副本数与工作负载的实际副本数。
702、判断实际副本数是否小于或等于期望副本数。
若为是,则执行步骤703;否则,执行步骤706。
703、挑选待删除状态的容器组,并更新状态为待上线状态。
704、判断实际副本数是否小于期望副本数
若为是,则执行步骤705;否则,不作任何处理。
705、设置工作负载的副本数为期望副本数。
706、确定当前所需缩容的数量。
707、挑选未调度容器组,并通过工作负载指定缩容的同时修改工作负载的副本数。
708、判断是否满足当前所需缩容的数量。
若为是,则结束本次伸缩过程;若为否,则执行步骤709。
709、更新当前所需缩容的数量。
710、挑选待删除状态的容器组,并通过工作负载指定缩容的同时修改工作负载的副本数。
711、判断是否满足当前所需缩容的数量。
若为是,则结束本次伸缩过程;若为否,则执行步骤712。
712、更新当前所需缩容的数量。
713、挑选无任务状态的容器组,并更新其状态为待下线状态。
后续,可间隔预设时间间隔后,返回执行步骤710。
优先挑选未调度容器组以尽可能满足需要缩容的数量,对挑选出的容器组通过工作负载进行指定缩容的同时更新工作负载的副本数,也即将工作负载当前的副本数减去删掉的未调度容器组的数量。
若未调度容器组数量不够,优先挑选待删除状态的容器组以尽可能满足当前需要缩容的数量,对挑选出的容器组通过工作负载进行指定缩容的同时更新工作负载的副本数,也即将工作负载当前的副本数减去删掉的待删除状态的容器组的数量。
若待删除状态的容器组的数量还不够,尽可能挑选无任务状态的容器组,将其状态更新为待下线状态。
此外,状态校验组件通过API服务组件感知到直播转码Pod需要删除时,通过判断其是否属于异常下线场景决定是否应当放行该操作。图7为状态校验流程示意图。如图7所示,该过程包括:
801、判断容器组当前是否未调度。
若为是,则执行步骤802;否则,则执行步骤803。
802、放行,即允许删除。
803、根据容器组的状态标签,判断其状态是否为待删除状态。
若为是,则执行步骤804;否则,则执行步骤805。
804、放行。
805、拒绝,即拒绝删除。
本方案提出了联动容器组忙闲情况的思想,将容器组忙闲情况透出至Kubernetes,从Kubernetes视角判断容器组的忙闲状态,实现仅对满足删除条件的容器组进行缩容,提高伸缩效率的同时降低运维成本,提升服务质量。具体地,基于Kubernetes环境,对部署其中的直播转码服务,深度结合其任务调度面的状态数据,与工作负载的指定容器组缩容特性相配合,实现缩容过程中的容器组忙闲情况有感,进而仅对满足预设删除条件的容器组,也即无转码任务的容器组进行缩容,支持直播转码场景下的优雅缩容。
图8示出了本申请一实施例提供的电子设备的结构示意图。如图8所示,所述电子设备包括存储器1101以及处理器1102。存储器1101可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器1101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static RandomAccess Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable read only memory),EEPROM),可擦除可编程只读存储器(Electrical Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器1101,用于存储程序;
所述处理器1102,与所述存储器1101耦合,用于执行所述存储器1101中存储的所述程序,以实现上述各方法实施例提供的缩容方法。
进一步,如图8所示,电子设备还包括:通信组件1103、显示器1104、电源组件1105、音频组件1106等其它组件。图8中仅示意性给出部分组件,并不意味着电子设备只包括图8所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各方法实施例提供的缩容方法的步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM(Read Only Memory,只读存储器)/RAM(RandomAccess Memory,随机存取存储器)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种缩容方法,其特征在于,包括:
当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;
根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
2.根据权利要求1所述的方法,其特征在于,所述已运行容器组用于对其分配到的直播转码任务所涉及的直播流进行转码处理。
3.根据权利要求1所述的方法,其特征在于,根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定出满足预设删除条件的目标容器组,包括:
根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定状态为无任务状态的第一容器组;
根据所述第一容器组,确定满足预设删除条件的目标容器组。
4.根据权利要求3所述的方法,其特征在于,根据所述第一容器组,确定满足预设删除条件的目标容器组,包括:
请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务;
请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,将所述第一容器组确定为满足所述预设删除条件的目标容器组。
5.根据权利要求4所述的方法,其特征在于,当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态,包括:
当需要对工作负载进行缩容时,从所述工作负载的至少一个已运行容器组的状态标签中获取所述至少一个已运行容器组的状态;
其中,所述状态标签由所述工作负载对应的状态管理组件根据从所述任务调度组件处获取到的相应容器组的忙闲情况来维护。
6.根据权利要求5所述的方法,其特征在于,请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务,包括:
将所述第一容器组的状态标签中状态更新为待下线状态,以触发所述状态管理组件向所述任务调度组件发送下线请求;
其中,所述下线请求用于请求所述任务调度组件停止向所述第一容器组分配任务。
7.根据权利要求5或6所述的方法,其特征在于,所述状态管理组件还用于:向所述工作负载对应的任务调度组件发送下线请求后,请求所述任务调度组件查询所述第一容器组当前的忙闲情况;若所述第一容器组当前的忙闲情况为空闲情况,则将所述第一容器组的状态标签中状态更新为待删除状态;
请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,将所述第一容器组确定为满足所述预设删除条件的目标容器组,包括:
请求所述工作负载对应的任务调度组件停止向所述第一容器组分配任务后,当所述第一容器组的状态标签中状态变为待删除状态时,将所述第一容器组确定为满足所述预设删除条件的目标容器组。
8.根据权利要求5或6所述的方法,其特征在于,所述状态管理组件还用于:若所述第一容器组当前的忙闲情况为繁忙情况,则将所述第一容器组的状态标签中状态更新为待上线状态;当所述第一容器组的状态标签中状态为待上线状态时,请求所述任务调度组件继续向所述第一容器组分配任务。
9.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
确定所述工作负载的至少一个未调度容器组的数量;
判断所述至少一个未调度容器组的数量是否满足缩容要求;
当所述至少一个未调度容器组的数量不满足缩容要求时,将所述至少一个未调度容器组确定为满足所述预设删除条件的目标容器组并触发所述根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组的步骤。
10.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法应用于所述工作负载对应的工作负载代理组件;所述方法,还包括:
确定所述工作负载代理组件所使用的自定义资源中配置的所述工作负载的期望副本数;
确定所述工作负载的实际副本数;
当所述实际副本数大于所述期望副本数时,确定需要对所述工作负载进行缩容。
11.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
向应用程序接口服务组件发送删除所述目标容器组的删除请求;
其中,所述应用程序接口服务组件接收到所述删除请求后,请求状态校验组件,检验所述目标容器组的状态是否满足所述预设删除条件;校验通过后,删除所述目标容器组。
12.一种容器编排***,其特征在于,所述容器编排***中部署有工作负载;所述容器编排***,包括:所述工作负载对应的工作负载代理组件;其中,
所述工作负载代理组件,用于:当需要对工作负载进行缩容时,获取所述工作负载的至少一个已运行容器组的状态;各已运行容器组的状态与其忙闲情况有关;根据所述至少一个已运行容器组的状态,从所述至少一个已运行容器组中确定满足预设删除条件的目标容器组。
13.一种电子设备,其特征在于,包括:存储器和处理器,其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现权利要求1至11中任一项所述的缩容方法。
14.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被计算机执行时能够实现权利要求1至11中任一项所述的缩容方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310609518.4A CN116643845A (zh) | 2023-05-24 | 2023-05-24 | 缩容方法、容器编排***、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310609518.4A CN116643845A (zh) | 2023-05-24 | 2023-05-24 | 缩容方法、容器编排***、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116643845A true CN116643845A (zh) | 2023-08-25 |
Family
ID=87614830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310609518.4A Pending CN116643845A (zh) | 2023-05-24 | 2023-05-24 | 缩容方法、容器编排***、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116643845A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806815A (zh) * | 2023-11-27 | 2024-04-02 | 本原数据(北京)信息技术有限公司 | 数据处理方法、***、电子设备及存储介质 |
-
2023
- 2023-05-24 CN CN202310609518.4A patent/CN116643845A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806815A (zh) * | 2023-11-27 | 2024-04-02 | 本原数据(北京)信息技术有限公司 | 数据处理方法、***、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11316800B2 (en) | Method and system for managing applications | |
CN112199194B (zh) | 基于容器集群的资源调度方法、装置、设备和存储介质 | |
CN101969391B (zh) | 一种支持融合网络业务的云平台及其工作方法 | |
US10277705B2 (en) | Virtual content delivery network | |
US20210389970A1 (en) | Vnf lifecycle management method and apparatus | |
US11966768B2 (en) | Apparatus and method for multi-cloud service platform | |
US11556369B2 (en) | Virtual machine deployment method and OMM virtual machine | |
US11954473B2 (en) | Deployment architecture for multi-tenant cloud computing systems | |
CN103873534A (zh) | 一种应用集群迁移方法及装置 | |
CN113037794A (zh) | 计算资源配置调度方法、装置及*** | |
WO2021120968A1 (zh) | 一种服务器扩容方法及扩容*** | |
CN113296882A (zh) | 容器编排方法、设备、***及存储介质 | |
CN113630438B (zh) | 流处理任务调度方法和分布式流处理*** | |
US20220357995A1 (en) | Method for dynamic resources allocation and apparatus for implementing the same | |
CN116643845A (zh) | 缩容方法、容器编排***、设备及存储介质 | |
CN112910937A (zh) | 容器集群中的对象调度方法、装置、服务器和容器集群 | |
CN112044078A (zh) | 虚拟场景应用的接入方法、装置、设备及存储介质 | |
US9832137B1 (en) | Provisioning system and method for a distributed computing environment using a map reduce process | |
CN115426361A (zh) | 分布式客户端打包方法、装置、主服务器及存储介质 | |
CN108958933B (zh) | 任务执行器的配置参数更新方法、装置及设备 | |
CN112039963B (zh) | 一种处理器的绑定方法、装置、计算机设备和存储介质 | |
CN112261125A (zh) | 集中单元的云化部署方法、装置及*** | |
KR20160025926A (ko) | 가상 응용서버들로 부하를 분산하는 장치 및 방법 | |
CN106657195B (zh) | 任务处理方法和中继设备 | |
CN115225645B (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 |