CN113342466A - 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 - Google Patents
一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 Download PDFInfo
- Publication number
- CN113342466A CN113342466A CN202110691181.7A CN202110691181A CN113342466A CN 113342466 A CN113342466 A CN 113342466A CN 202110691181 A CN202110691181 A CN 202110691181A CN 113342466 A CN113342466 A CN 113342466A
- Authority
- CN
- China
- Prior art keywords
- container
- container group
- parameter
- node
- group
- 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
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/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
-
- 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/45575—Starting, stopping, suspending or resuming 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/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)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Kubernetes云原生容器可变启动资源限制的方法,涉及信息技术领域,解决容器运行过程中资源浪费的技术问题,方法包括:在容器组API结构中的Pod.Spec.Containers[i].Resources中添加限制值参数、持续时间参数;创建容器组并设置限制值参数、持续时间参数;将容器组和节点绑定;Kubelet开始在本节点上启动容器,并配置容器启动的cpu核数限制为容器组的限制值参数;开始启动定时执行器,定时执行器计时达到所述容器组的持续时间参数后,将容器组中的容器cpu限制值为Pod.Spec.Containers[i].Resources中limits的配置值进行资源伸缩操作。本发明还公开了一种基于Kubernetes云原生容器可变启动资源限制的系统。
Description
技术领域
本发明涉及信息技术领域,更具体地说,它涉及一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统。
背景技术
在Kubernetes云原生集群中,通常使用容器组(Pod)的字段Pod.Spec.Containers[i].Resources中的requests和limits来分别控制资源的申请值和限制值,但这控制的是容器组在整个生命周期中的资源申请值和限制值,一旦配置,从容器组的诞生到消失都会采用固定的配置。
在很多业务不是特别繁忙的场景下,这种固定的资源配置使得节点的cpu和内存资源不能被充分利用,比如在一些资源比较充足的节点上启动的容器组应用,很多应用在启动阶段会处于一个比较繁忙的状态,也就是cpu和内存都会占用较高。当启动阶段完成,cpu和内存的占用会迅速下降。
在这种场景下,如果将资源limit配置较低,有可能导致应用启动过慢,甚至在启动中内存超出限制值导致无法启动。当资源limit配置较高时,有可能会导致超出命名空间的quota限制,也可能造成运行过程中资源的浪费。
在Kubernetes云原生集群中,通常还会采用VPA(垂直自动伸缩器)来动态改变容器组的资源申请值requests,但是不会修改资源限制值limits,并且当资源申请值被自动修改后,容器会重启,造成应用业务的中断。
发明内容
本发明要解决的技术问题是针对现有技术的上述不足,本发明的目的一是提供一种基于Kubernetes云原生容器可变启动资源限制的方法。
本发明的目的二是提供基于Kubernetes云原生容器可变启动资源限制的系统。
为了实现上述目的一,本发明提供一种基于Kubernetes云原生容器可变启动资源限制的方法,包括:
步骤1.在容器组API结构中的Pod.Spec.Containers[i].Resources中添加限制值参数、持续时间参数;
步骤2.根据所述容器组API结构创建容器组,设置所述容器组的限制值参数、持续时间参数;所述容器组新建请求并发送给应用程序接口服务器api-server;
步骤3.所述api-server接收所述新建请求,并存储到分布式数据库etcd中,经过调度器Scheduler预选和优选后,将所述容器组和节点绑定;
步骤4.所述节点的Kubelet监听到所述容器组和节点绑定后,开始在本节点上启动容器,并配置容器启动的cpu核数限制为所述容器组的限制值参数;
步骤5.当Kubelet检测到所述容器组已经成功启动并正常运行,开始启动一个定时执行器,定时执行器计时达到所述容器组的持续时间参数后,Kubelet通过调用CRI的UpdateContainerResources接口修改所述容器组中的容器cpu限制值为Pod.Spec.Containers[i].Resources中limits的配置值进行资源伸缩操作。
作为进一步地改进,所述步骤4具体包括:
步骤41.Kubelet监听到所述容器组和节点绑定后,通过CRI的StartContainer接口发送启动容器的请求;
步骤42.Kubelet通过CRI接口通知容器运行时该容器的cpu资源限制为所述容器组的限制值参数;
步骤43.容器运行时根据Kubelet的请求通过cgroups系统对容器的cpu使用量进行限制,并将上限设置为所述容器组的限制值参数。
进一步地,在容器组API结构中增加状态参数;在所述步骤4中,将所述状态参数配置为所述容器组的限制值参数;在所述步骤5后,将所述状态参数配置为Pod.Spec.Containers[i].Resources中limits的配置值;实时将所述状态参数输出。
进一步地,所述容器组的限制值参数大于Pod.Spec.Containers[i].Resources中limits的配置值。
为了实现上述目的二,本发明提供一种基于Kubernetes云原生容器可变启动资源限制的系统,包括容器组API结构、应用程序接口服务器api-server、控制器管理控制中心Controller Manager、调度器Scheduler、分布式数据库etcd,节点Master Node,所述节点Master Node包括Kubelet组件,所述容器组API结构模块设置有限制值参数、持续时间参数;
所述控制器管理控制中心Controller Manager根据所述容器组API结构创建容器组,并根据上述的方法启动所述容器组运行。
有益效果
本发明与现有技术相比,具有的优点为:
本发明通过在容器组API结构中的Pod.Spec.Containers[i].Resources中添加限制值参数、持续时间参数,在容器组启动阶段的资源限制值可以独立配置一个较大的限制值参数值,不仅使得启动阶段高负载的容器组能正常启动,较多的资源也加速了应用的启动速度,在容器组完成启动后,容器组使用现有的Pod.Spec.Containers[i].Resources中的limits作为资源限制值,可以有效的利用节点资源,保证了节点资源能够被充分利用。
附图说明
图1为本发明中方法的控制流程图;
图2为本发明中系统的架构图;
图3为本发明中容器组与节点的架构图。
具体实施方式
下面结合附图中的具体实施例对本发明做进一步的说明。
参阅图1-3,本实施方式采用3个Master Node作为控制节点,控制节点不负责运行工作负载,只有一些kubernetes的组件以容器的形式运行在上面,包括应用程序接口服务器API Server、控制器管理控制中心Controller Manager、调度器Scheduler。
本实施方式采用N个Worker Node作为工作节点,每个工作节点上都运行Kubelet组件和多个容器组作为工作负载。
每个Master Node上的API Server都会与分布式数据库etcd连接,用于集群内各种资源配置和状态存储。
每个节点都包含Kubelet组件,作为节点与Kubernetes集群通信的代理,也作为管理节点上的工作负载容器组的管理组件。其中,API Server是kubernetes集群的控制组件,能够接收Node等类型资源的新增、修改、删除、监听的请求,并将修改反映到etcd中
本发明提供的一种基于Kubernetes云原生容器可变启动资源限制的方法,包括:
步骤1.在容器组API结构中的Pod.Spec.Containers[i].Resources中添加限制值参数startupLimits,限制值参数startupLimits包含有cpu、memory(内存)、持续时间参数initialDelaySeconds的限制值,持续时间参数initialDelaySeconds用于控制容器启动资源限制的持续时间;
步骤2.根据容器组API结构创建容器组Pod1,该容器组包含Pod.Spec.Containers[1].Resources参数,设置容器组的限制值参数、持续时间参数,limits.cpu被配置为1,startupLimits.cpu被配置为2,startupLimits.initialDelaySeconds被配置为60,表示该容器组正常运行阶段的cpu限制为1核,启动阶段的cpu限制为2核,启动阶段的时长为60秒;容器组Pod1新建请求并发送给应用程序接口服务器api-server;
步骤3.api-server接收容器组Pod1发送的新建请求,并存储到分布式数据库etcd中,经过调度器Scheduler预选和优选后,将容器组Pod1和节点Worker Node1绑定;
步骤4.节点Worker Node1的Kubelet监听到容器组Pod1和节点Worker Node1绑定后,开始在本节点Worker Node1上启动容器,并配置容器启动的cpu核数限制为容器组Pod1的限制值参数startupLimits.cpu;
步骤5.当Kubelet检测到容器组Pod1已经成功启动并正常运行,开始启动一个定时执行器,定时执行器计时达到容器组Pod1的持续时间参数startupLimits.initialDelaySeconds后,Kubelet通过调用CRI的UpdateContainerResources接口修改容器组中的容器cpu限制值为Pod.Spec.Containers[i].Resources中limits.cpu的配置值进行资源伸缩操作。
在步骤4中具体包括:
步骤41.Kubelet监听到容器组Pod1和节点Worker Node1绑定后,通过CRI的StartContainer接口发送启动容器的请求;
步骤42.Kubelet通过CRI接口通知容器运行时该容器的cpu资源限制为容器组Pod1的限制值参数startupLimits.cpu;
步骤43.容器运行时根据Kubelet的请求通过cgroups系统对容器的cpu使用量进行限制,并将上限设置为容器组Pod1的限制值参数startupLimits.cpu。
本方法还包括在容器组API结构中增加状态参数Pod.Status.ContainerStatuses[i].Resources;在步骤4中,将状态参数Pod.Status.ContainerStatuses[1].Resources中的limits.cpu配置为容器组的限制值参数startupLimits.cpu,即配置为2,用于表示当前容器组Pod1中的容器cpu资源限制值为2核;在步骤5后,将状态参数Pod.Status.ContainerStatuses[1].Resources中的limits.cpu配置为Pod.Spec.Containers[i].Resources中limits的配置值,即配置为1,用于表示当前容器组Pod1中的容器cpu资源限制值为1核;实时将状态参数Pod.Status.ContainerStatuses[1].Resources中的limits.cpu输出,如通过音频或视频输出,以提醒当容器cpu资源限制值的状态。
容器组Pod1的限制值参数startupLimits.cpu的配置值大于Pod.Spec.Containers[i].Resources中limits.cpu的配置值。
一种基于Kubernetes云原生容器可变启动资源限制的系统,包括容器组API结构、应用程序接口服务器api-server、控制器管理控制中心Controller Manager、调度器Scheduler、分布式数据库etcd,节点Master Node,节点Master Node包括Kubelet组件,容器组API结构模块设置有限制值参数、持续时间参数;
控制器管理控制中心Controller Manager根据容器组API结构创建容器组Pod1,并根据上述的方法启动容器组运行。
本发明可以应用于云主机、Web应用服务、持续集成和持续部署、微服务架构使用,以解决这些应用在启动过程速度慢的问题。
本发明通过引入容器启动可变资源配置的方法,为容器组启动时提供了一个时间窗口,该时间窗口内,容器组将获得较高的资源限制值,也就是获得更多的资源运行,加速了应用的启动速度,并且在时间窗口后,恢复正常运行时的资源限制值,保证了节点资源能够被充分利用。
以上仅是本发明的优选实施方式,应当指出对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些都不会影响本发明实施的效果和专利的实用性。
Claims (5)
1.一种基于Kubernetes云原生容器可变启动资源限制的方法,其特征在于,包括:
步骤1.在容器组API结构中的Pod.Spec.Containers[i].Resources中添加限制值参数、持续时间参数;
步骤2.根据所述容器组API结构创建容器组,设置所述容器组的限制值参数、持续时间参数;所述容器组新建请求并发送给应用程序接口服务器api-server;
步骤3.所述api-server接收所述新建请求,并存储到分布式数据库etcd中,经过调度器Scheduler预选和优选后,将所述容器组和节点绑定;
步骤4.所述节点的Kubelet监听到所述容器组和节点绑定后,开始在本节点上启动容器,并配置容器启动的cpu核数限制为所述容器组的限制值参数;
步骤5.当Kubelet检测到所述容器组已经成功启动并正常运行,开始启动一个定时执行器,定时执行器计时达到所述容器组的持续时间参数后,Kubelet通过调用CRI的UpdateContainerResources接口修改所述容器组中的容器cpu限制值为Pod.Spec.Containers[i].Resources中limits的配置值进行资源伸缩操作。
2.根据权利要求1所述的一种基于Kubernetes云原生容器可变启动资源限制的方法,其特征在于,所述步骤4具体包括:
步骤41.Kubelet监听到所述容器组和节点绑定后,通过CRI的StartContainer接口发送启动容器的请求;
步骤42.Kubelet通过CRI接口通知容器运行时该容器的cpu资源限制为所述容器组的限制值参数;
步骤43.容器运行时根据Kubelet的请求通过cgroups系统对容器的cpu使用量进行限制,并将上限设置为所述容器组的限制值参数。
3.根据权利要求1所述的一种基于Kubernetes云原生容器可变启动资源限制的方法,其特征在于,在容器组API结构中增加状态参数;在所述步骤4中,将所述状态参数配置为所述容器组的限制值参数;在所述步骤5后,将所述状态参数配置为Pod.Spec.Containers[i].Resources中limits的配置值;实时将所述状态参数输出。
4.根据权利要求1所述的一种基于Kubernetes云原生容器可变启动资源限制的方法,其特征在于,所述容器组的限制值参数大于Pod.Spec.Containers[i].Resources中limits的配置值。
5.一种基于Kubernetes云原生容器可变启动资源限制的系统,包括容器组API结构、应用程序接口服务器api-server、控制器管理控制中心Controller Manager、调度器Scheduler、分布式数据库etcd,节点Master Node,所述节点Master Node包括Kubelet组件,其特征在于,所述容器组API结构模块设置有限制值参数、持续时间参数;
所述控制器管理控制中心Controller Manager根据所述容器组API结构创建容器组,并根据权利要求1-4任意一项所述的方法启动所述容器组运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110691181.7A CN113342466A (zh) | 2021-06-22 | 2021-06-22 | 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110691181.7A CN113342466A (zh) | 2021-06-22 | 2021-06-22 | 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113342466A true CN113342466A (zh) | 2021-09-03 |
Family
ID=77477578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110691181.7A Pending CN113342466A (zh) | 2021-06-22 | 2021-06-22 | 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342466A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201857A (zh) * | 2021-11-22 | 2022-03-18 | 厦门深度赋智科技有限公司 | 一种基于云原生技术的建模实验系统 |
-
2021
- 2021-06-22 CN CN202110691181.7A patent/CN113342466A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201857A (zh) * | 2021-11-22 | 2022-03-18 | 厦门深度赋智科技有限公司 | 一种基于云原生技术的建模实验系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111796908B (zh) | 一种资源自动弹性伸缩的系统、方法及云平台 | |
CN111290834B (zh) | 一种基于云管理平台实现业务高可用的方法、装置及设备 | |
CN110677305B (zh) | 一种云计算环境下的自动伸缩方法和系统 | |
US6026424A (en) | Method and apparatus for switching long duration tasks from synchronous to asynchronous execution and for reporting task results | |
CN106293868A (zh) | 一种云计算环境中虚拟机扩缩容方法及扩缩容系统 | |
WO2021103646A1 (zh) | 一种部署pod的方法及装置 | |
WO2017107483A1 (zh) | 一种虚拟化网管文件下载负载均衡的方法及网管服务器 | |
CN109391038B (zh) | 一种智能变电站间隔测控功能的部署方法 | |
Wang et al. | A cluster autoscaler based on multiple node types in kubernetes | |
RU2769106C1 (ru) | Способ, устройство и система для предоставления услуг, носитель данных и электронное устройство | |
CN114389955A (zh) | 嵌入式平台异构资源池化管理方法 | |
CN114518955A (zh) | 一种基于kubernetes的Flink云原生部署架构方法及系统 | |
CN113342466A (zh) | 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN113434256B (zh) | 一种云资源横向扩展方法、可读存储介质 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN108073426B (zh) | 一种基于云计算的软件管理方法、装置及系统 | |
CN117215721A (zh) | 虚拟系统的管理方法、装置、电子设备及存储介质 | |
CN114579298A (zh) | 资源管理方法、资源管理器和计算机可读存储介质 | |
CN114840324A (zh) | 一种转码任务调度方法、系统、电子设备及存储介质 | |
CN113138842B (zh) | 微服务集群的调度方法、装置及介质 | |
CN114546631A (zh) | 任务调度方法、控制方法、核心、电子设备、可读介质 | |
CN111858060A (zh) | 一种高性能计算集群的资源动态调整方法和装置 | |
CN112328359A (zh) | 避免容器集群启动拥塞的调度方法和容器集群管理平台 | |
CN114598706B (zh) | 基于Serverless函数的存储系统弹性伸缩方法 |
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 |