基于K8S的POD资源动态平滑扩展及重负载时重调度方法与流程
- 国知局
- 2024-09-19 14:34:50
本发明涉及容器云平台,具体的说,涉及了一种基于k8s的pod资源动态平滑扩展及重负载时重调度方法。
背景技术:
1、在k8s(kubernetes 的简称)集群环境中,pod是最小的部署单元,它可以包含一个或多个容器。在铁路综合视频监控系统的部署和管理中,可以利用k8s集群来自动化部署和扩展监控系统的组件,提高系统的可靠性和可扩展性。同时,k8s集群的数据存储和持久化功能也可以为铁路综合视频监控系统提供稳定的数据存储和备份解决方案。但是,k8s集群的一些固有内在机制,导致现有k8s集群无法完全满足铁路综合视频监控系统的业务需求,存在问题主要有:
2、(1)k8s集群中的pod的cpu和内存资源只能在其yaml配置文件中根据经验进行静态定义,设置好后无论资源是否够用,都无法进行改变,除非手工修改;因此现有k8s集群无法根据pod实际的资源占用和变化情况进行动态调整,较易发生因资源定义不准确、不合理导致业务pod卡顿甚至无法正常运行的情况;
3、而,铁路综合视频监控系统要对大量高清视频图像进行不间断的分析处理,正常情况下对资源要求已经很高,如遇到应急指挥、事后分析、热点回溯、施工检修等多方集中调看的情形,所需资源会瞬时激增,波动很大,这就要求能对k8s中的业务pod资源进行自动的监测判断,实现按需的动态扩容,否则就会导致视频业务响应缓慢甚至中断;
4、(2)之前版本的k8s中,即使进行了静态扩容,新增的资源也不能立即被使用,必须重启业务pod后才能正式生效,这必然会引起业务的中断(连续扩容时甚至是多次频繁中断);
5、而,铁路综合视频监控系统的资源扩容往往是突发,无规律、不定时的,且现场无专业的k8s和业务值守人员,无法进行正确、有效、及时的扩容及重启业务pod等人工操作,因此要求pod资源扩展必须是在无人干预的情况下自动进行的,且无需重启相关pod,否则资源扩容就没有实际意义;
6、(3)一个pod调度到哪个node节点上运行,是由k8s的scheduler组件根据一定的条件和内部算法计算出来的,这个过程不受人为控制。pod调度完成后,在没有人为参与重新调度或节点故障的前提下,是无法根据节点的资源实时使用情况重新进行调度。这会导致集群中各个node节点的资源使用率变的很不均衡,不仅会造成资源浪费,还有可能会使部分node的资源使用率飙升,从而导致其上承载的所有服务卡顿甚至完全无法响应;
7、为避免这种“首次即终生”模式带来的问题,承载铁路综合视频监控系统的k8s平台不仅要实现pod层面的资源动态扩展能力,还要实现更高层次的node物理节点间的自动重调度功能,使pod可以从重负载的node节点迁移到轻负载的node节点上,进而均衡优化整个集群的资源负载情况。
8、为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种基于k8s的pod资源动态平滑扩展及重负载时重调度方法,使pod资源能够进行动态平滑扩展,同时使集群中各节点的资源使用率更为均衡,达到提高业务pod稳定性和集群可靠性的目的。
2、为了实现上述目的,本发明第一方面提供一种基于k8s的pod资源动态平滑扩展方法,其包括:预先部署业务微服务pod和应用管理程序;其中,所述业务微服务pod用于安装视频监控管理软件;
3、预先配置所述业务微服务pod对应的原内存门限值、内存扩展阈值、内存最大值门限、原cpu门限值、cpu扩展阈值及cpu内核数最大值门限;其中,所述原内存门限值和所述原cpu门限值均为pod资源动态参数;
4、在业务微服务pod的运行过程中,利用预先部署的应用管理程序监测业务微服务pod的实时内存占用量和实时cpu内核数量;
5、基于所述业务微服务pod对应的内存扩展阈值、实时内存占用量、原内存门限值及内存最大值门限,判断是否对所述原内存门限值进行更新;
6、若是,则所述应用管理程序基于预设步长ⅰ和所述原内存门限值获得新内存门限值,并基于所述新内存门限值对所述原内存门限值进行更新;其中,所述新内存门限值>所述原内存门限值;
7、基于所述业务微服务pod对应的cpu扩展阈值、实时cpu内核数量、原cpu门限值及cpu内核数最大值门限,判断是否对所述原cpu门限值进行更新;
8、若是,则所述应用管理程序基于预设步长ⅱ和所述原cpu门限值获得新cpu门限值,并基于所述新cpu门限值对所述原cpu门限值进行更新;其中,所述新cpu门限值>所述原cpu门限值。
9、为了实现上述目的,本发明第二方面提供一种基于k8s的pod重负载时的重调度方法,其包括:将部署业务微服务pod的node节点设置目标物理节点,并预先配置所述目标物理节点的重调度阈值;
10、在执行权利要求上述的基于k8s的pod资源动态平滑扩展方法的过程中,利用所述应用管理程序监测所述目标物理节点,基于所述重调度阈值判断所述目标物理节点是否处于重负载状态;
11、若所述目标物理节点处于重负载状态,则将所述node节点上的业务微服务pod重新调度到k8s集群中其它可用节点上。
12、为了实现上述目的,本发明第三方面提供一种k8s集群,其包括n个master节点和m个node节点,所述master节点上编译安装有负载代理组件nginx;其中,所述负载代理组件nginx的配置文件中包括n个master节点的代理信息;
13、在k8s集群上预先部署业务微服务pod;其中,所述业务微服务pod用于安装视频监控管理软件;
14、在k8s集群上预先安装应用管理程序;其中,所述应用管理程序用于监测所述业务微服务pod的实时内存占用量和实时cpu内核数量;
15、预先配置所述业务微服务pod对应的原内存门限值、内存扩展阈值、内存最大值门限、原cpu门限值、cpu扩展阈值及cpu内核数最大值门限;其中,所述原内存门限值和所述原cpu门限值均为pod资源动态参数;
16、在业务微服务pod的运行过程中,利用预先安装的应用管理程序监测业务微服务pod的实时内存占用量和实时cpu内核数量;
17、基于所述业务微服务pod对应的内存扩展阈值、实时内存占用量、原内存门限值及内存最大值门限,判断是否对所述原内存门限值进行更新;
18、若是,则所述应用管理程序基于预设步长ⅰ和所述原内存门限值获得新内存门限值,并基于所述新内存门限值对所述原内存门限值进行更新;其中,所述新内存门限值>所述原内存门限值;
19、基于所述业务微服务pod对应的cpu扩展阈值、实时cpu内核数量、原cpu门限值及cpu内核数最大值门限,判断是否对所述原cpu门限值进行更新;
20、若是,则所述应用管理程序基于预设步长ⅱ和所述原cpu门限值获得新cpu门限值,并基于所述新cpu门限值对所述原cpu门限值进行更新;其中,所述新cpu门限值>所述原cpu门限值。
21、本发明的有益效果为:
22、1)本发明通过在k8s集群上预先安装监测业务微服务pod的应用管理程序,将原内存门限值和原cpu门限值设置为pod资源动态参数,基于原内存门限值、内存扩展阈值、内存最大值门限、原cpu门限值、cpu扩展阈值、cpu内核数最大值门限、实时内存占用量和实时cpu内核数量判断pod资源动态平滑扩展的时机,应用管理程序利用预设步长对pod资源进行动态平滑扩展;
23、2)本发明在pod资源扩展动态过程中,k8s集群上部署的业务微服务pod无需重启,确保业务不中断;
24、3)本发明通过预先配置目标物理节点的重调度阈值,利用应用管理程序监测目标物理节点是否处于重负载状态,并在目标物理节点处于重负载状态时将业务微服务pod重新调度到k8s集群中其它可用节点上,达到pod重负载时的重调度的目的;
25、同时使集群中各节点的资源使用率更为均衡,达到提高业务pod稳定性和集群可靠性的目的。
本文地址:https://www.jishuxx.com/zhuanli/20240919/298961.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表