一种按顺序启动和销毁云原生容器组中容器的方法技术

技术编号:35254440 阅读:17 留言:0更新日期:2022-10-19 10:10
本发明专利技术属于计算机技术领域,具体涉及一种按顺序启动和销毁云原生容器组中容器的方法。该方法包括用户传入通用的pod配置,在容器定义时指定容器的启动及销毁顺序;按照容器标识的启动顺序对容器进行排序,自动进行部署方案的调整,部署应用;应用按照指定的容器标识顺序自动进行开启和销毁。本发明专利技术设计并实现了一种根据指定容器的顺序进行部署使得容器可以按照指定顺序进行启动和销毁的机制,本方法自动进行部署方案的调整,部署应用,最终应用按照使用者指定顺序启动及销毁,可根据容器标识的顺序自动进行开启和销毁;一键部署,不须了解业务逻辑,不须手动更改容器部署信息;尽可能使容器的创建过程不是纯粹的串行化,提高创建效率。建效率。建效率。

【技术实现步骤摘要】
一种按顺序启动和销毁云原生容器组中容器的方法


[0001]本专利技术属于计算机
,具体涉及一种按顺序启动和销毁云原生容器组中容器的方法。

技术介绍

[0002]随着虚拟化技术的成熟和分布式框架的普及,在容器技术、持续交付、编排系统等
及开源社区的推动下,以及在微服务架构模式及开发理念的带动下,云原生概念应运而生。云原生(Cloud Native)是一个组合词,Cloud和Native,Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性及分布式优势。云原生带来了巨大的运行和运维优势,促使应用上云成为大势所趋。
[0003]容器是云原生应用部署及运行的基石。而容器的编排、调度、通信及服务注册发现等需要有一套完整的体系。Kubernetes作为目前主流的云原生操作系统提供了编排和管理功能,可以轻松完成大规模容器部署,用户可以构建跨多容器的应用服务,可实现跨集群调度,弹性扩展以及持续管理这些容器的健康状况等。并且kubernetes通过整合网络、存储、安全、监控以及其他服务,提供了全面的容器基础架构。
[0004]Kubernetes以容器组为最小部署及调度单位。容器组内的几个容器之间一般具有相互依赖或者调用的关系。在有状态的应用中,具有依赖关系的容器需要以严格的顺序进行启动和销毁,例如日志收集容器一定要先于业务容器启动后于业务容器销毁才能保证日志收集的完整性。
[0005]在kubernetes1.18版本中曾试图引入sidecar特性,即将特定容器标记为sidecar, 使它们在普通容器之前启动,并且在普通容器终止后关闭。然而该特性最终被废止,并未在任何kubernetes的发布版本中体现。目前kubernetes的1.18后非发布版本中的sidecar机制能够保证sidecar类型的容器在业务容器之前启动以及在业务容器销毁后销毁。但是在多个sidecar容器或者多个业务容器的时候,不能保证同种类别的容器之间的启动和销毁顺序。
[0006]目前kubernetes自有机制不能保证正常容器间的启动与销毁顺序,一度曾提出了sidecar特性也只能将容器区分为业务容器和sidecar容器两个类别,确保这两种类别之间的启动销毁顺序。但是在sidecar容器有多个或者业务容器有多个的情况下,不能保证同种类型的容器的启动和销毁顺序。而目前已有的设置容器启动顺序的方案都是根据容器的业务逻辑进行自定义修改,例如修改镜像、编写特定的脚本等,需要进行针对性的手动更改。

技术实现思路

[0007]为解决上述技术问题,本专利技术提供了一种按顺序启动和销毁云原生容器组中容器的方法,仅需指定各个容器的启动销毁顺序即可自动设置部署方案使得容器按照指定顺序启动和销毁,提供的应用部署方法可以根据容器的设定次序自动进行顺序启动和销毁方案
的部署,即根据容器标识的顺序自动进行开启和销毁。一键部署,不须了解业务逻辑,不须手动更改容器部署信息,尽可能使容器的创建过程不是纯粹的串行化,提高创建效率。
[0008]本专利技术采用以下技术方案实现:一种按顺序启动和销毁云原生容器组中容器的方法,包括:用户传入通用的pod配置,在容器定义时指定容器的启动及销毁顺序;按照容器标识的启动顺序对容器进行排序,自动进行部署方案的调整,部署应用;应用按照指定的容器标识顺序自动进行开启和销毁;其中,pod为容器组,是Kubernetes最小调度单位。
[0009]本专利技术中的一种按顺序启动和销毁云原生容器组中容器的方法,可根据容器标识的顺序自动进行开启和销毁;一键部署,不须了解业务逻辑,不须手动更改容器部署信息;尽可能使容器的创建过程不是纯粹的串行化,提高创建效率。
[0010]进一步的,应用按照指定的容器标识顺序自动进行开启的方法,包括以下步骤:按照容器标识的启动顺序对容器进行排序;按照顺序访问排序的容器,进行容器部署方案的调整,部署应用;获取当前访问容器的startup探针或者readiness探针函数;判断当前访问容器类型是否是exec类型;若当前访问容器类型是exec类型,则给当前容器添加或修改postStart函数,循环执行exec直至执行成功才退出的循环逻辑;若当前访问容器类型不是exec类型,则当前容器不是第一个启动的容器,且定义并修改当前容器的command,在执行当前容器的command之前等待上个容器的startup探针或者readiness探针函数执行成功之后退出;若当前访问容器没有command则修改上一个容器的postStart函数,使当前容器等待上一个容器的startup探针或者readiness探针函数成功之后再退出。
[0011]进一步的,若当前访问容器类型不是exec类型,则检测tcp/http探针中请求的端口赋值给port,并检查下一个容器是否存在,若不存在下一个容器,则完成容器的顺序启动。
[0012]进一步的,若存在下一个容器,则检查下一个容器的command是否存在,当下一个容器没有command,则给当前容器添加postStart函数,循环检测port状态,直到为监听状态退出循环,按顺序访问排序的下一个容器。
[0013]进一步的,若检查下一个容器的command存在时,则修改下一个容器的command定义,首先循环检测port状态,直到为监听状态退出循环,之后执行当前容器的command,然后按顺序访问排序的下一个容器。
[0014]进一步的,应用按照指定的容器标识顺序自动进行开启时,postStart函数为阻塞的,执行成功之后才能创建下一个容器。
[0015]进一步的,应用按照指定的容器标识顺序自动进行开启时,在定义command的情况下,在command内进行检测时,当前容器创建与上个容器执行并发运行。
[0016]进一步的,应用按照指定的容器标识顺序自动进行销毁,容器销毁顺序的实现机制依赖于liveness探针及生命周期的preStop函数,所述应用照指定的容器标识顺序自动进行销毁的方法,包括以下步骤:
与按照容器标识的启动顺序对容器进行排序相对应,获取当前容器的销毁次序,以及获取在当前容器之前销毁的容器定义;获取前一个容器的liveness探针函数,并判断前一个容器的liveness探针类型是否为exec类型;若前一个容器的liveness探针类型为exec类型,则更改前一个容器的liveness函数,并将前一个容器的执行结果同时写入到共享文件中;给当前容器添加preStop函数,循环检测前一个容器写入到共享文件中的结果,直至不为0退出循环;若前一个容器的liveness探针类型不为exec类型,前一个容器liveness探针是http/tcp类型,循环检测其请求的端口状态,等不再为监听状态退出循环。
[0017]进一步的,若前一个容器的liveness探针类型不为exec类型时,检测http/tcp探针本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种按顺序启动和销毁云原生容器组中容器的方法,包括:用户传入通用的pod配置,在容器定义时指定容器的启动及销毁顺序;按照容器标识的启动顺序对容器进行排序,自动进行部署方案的调整,部署应用;应用按照指定的容器标识顺序自动进行开启和销毁;其中,pod为容器组,是Kubernetes最小调度单位。2.如权利要求1所述的按顺序启动和销毁云原生容器组中容器的方法,其特征在于,应用按照指定的容器标识顺序自动进行开启的方法,包括以下步骤:按照容器标识的启动顺序对容器进行排序;按照顺序访问排序的容器,进行容器部署方案的调整,部署应用;获取当前访问容器的startup探针或者readiness探针函数;判断当前访问容器类型是否是exec类型;若当前访问容器类型是exec类型,则给当前容器添加或修改postStart函数,循环执行exec直至执行成功才退出的循环逻辑;若当前访问容器类型不是exec类型,则当前容器不是第一个启动的容器,且定义并修改当前容器的command,在执行当前容器的command之前等待上个容器的startup探针或者readiness探针函数执行成功之后退出;若当前访问容器没有command则修改上一个容器的postStart函数,使当前容器等待上一个容器的startup探针或者readiness探针函数成功之后再退出。3.如权利要求2所述的按顺序启动和销毁云原生容器组中容器的方法,其特征在于,若当前访问容器类型不是exec类型,则检测tcp/http探针中请求的端口赋值给port,并检查下一个容器是否存在,若不存在下一个容器,则完成容器的顺序启动。4.如权利要求3所述的按顺序启动和销毁云原生容器组中容器的方法,其特征在于,若存在下一个容器,则检查下一个容器的command是否存在,当下一个容器没有command,则给当前容器添加postStart函数,循环检测port状态,直到为监听状态退出循环,按顺序访问排序的下一个容器。5.如权利要求4所述的按顺序启动和销毁云原生容器组中容器的方法,其特征在于,若检查下一个容器的command存在时,则修改下一个容器的command定义,首先...

【专利技术属性】
技术研发人员:谭鑫张兆德
申请(专利权)人:浙江西图盟数字科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1