基于K8s的原生应用选主方法、装置及存储介质制造方法及图纸

技术编号:32675664 阅读:55 留言:0更新日期:2022-03-17 11:31
本发明专利技术提供一种基于K8s的原生应用选主方法、装置及存储介质,方法包括根据获取到的针对目标应用的部署信息,基于Kubernetes平台将目标应用部署在目标数量的Pod中;部署信息包括目标应用部署的Pod数量、可同时运行的Pod的数量,Pod包括一个对应的应用容器,应用容器中存储有目标应用的代码;基于预设回调准入机制,在针对目标应用部署的每个Pod中注入选主容器信息;接收每个Pod发送的目标数据,将目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod;将接收到写入成功信息的Pod确定为原生应用的主Pod。本方案有效解决了云原生选主侵入性的问题。性的问题。性的问题。

【技术实现步骤摘要】
基于K8s的原生应用选主方法、装置及存储介质


[0001]本专利技术涉及集群部署
,尤涉及一种基于K8s的原生应用选主方法、装置及存储介质。

技术介绍

[0002]Kubernetes,简称K8s,Kubernetes是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构。综合了平台即服务(PAAS)的简单性以及基础架构即服务(IAAS)的灵活性,并促进跨基础设施供应商的可移植性。云原生(Cloud Native)是一种构建和运行应用程序的方法。随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势。
[0003]Kubernetes是容器编排系统,用于容器管理,容器间的负载均衡。云原生分布式应用系统为了保证其可靠性,一般都会多节点提供服务,各别节点的故障不会影响系统的可用性。目前通用的方案是使用多副本存储,这就会引入一个新的问题——多个副本间的数据一致性保障。所以就有了各种数据一致性协议。例如:Zookeeper的Zab、Etcd使用的Raft和无比复杂的Paxos等等。这些一致性协议都有一个共同的特点,那就是都有一个主节点(Leader)负责数据的同步。然而因业务需求,如一些有状态应用在某一时刻只能有一个应用实例使用,其他实例作为备份实例,因此针对以上这种使用场景需要对应用进行选主,确定对应的主应用实例。
[0004]在上述场景中,而现有的选主方式一般为基于中间件(Etcd)或第三方系统(如HAProxy)实现云原生分布式应用选主。例如,Etcd作为KV存储,会为每个key都保留历史版本,比如用于发布回滚、配置历史等,历史版本越多,存储空间越大,性能越差,直到Etcd到达空间配额限制的时候,Etcd的写入将会被禁止变为只读,影响线上服务。现有的基于中间件或第三方系统实现云原生分布式应用选主的方式,不能与云原生领域进行很好的结合;需要硬编码实现,对现有应用逻辑具有侵入性;运维成本较高,选主效率相对较低。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于K8s的原生应用选主方法、装置及存储介质,以解决现有技术中对云原生应用选主侵入性较高的技术问题。
[0006]第一方面,根据本专利技术实施例提供的一种基于K8s的原生应用选主方法,所述方法包括,
[0007]根据获取到的针对目标应用的部署信息,基于Kubernetes平台将所述目标应用部署在目标数量的Pod中;其中所述部署信息包括目标应用部署的Pod的数量,以及可同时运行的Pod的数量,每个Pod包括一个对应的应用容器,所述应用容器中存储有目标应用的代码;
[0008]基于预设回调准入机制,在针对目标应用部署的每个Pod中均注入选主容器信息;
[0009]接收每个Pod通过其选主容器发送的目标数据,将所述目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod;
[0010]将接收到写入成功信息的Pod确定为原生应用的主Pod。
[0011]在一个实施方式中,所述基于预设回调准入机制,在针对目标应用部署的每个Pod中均注入选主容器信息,包括:
[0012]接收到任一个Pod发送的选主容器需求信息后,将所述选主容器需求信息发送至每一个Pod,并通过预设插件在每个Pod中注册选主容器信息配置并注入选主容器。
[0013]在一个实施方式中,所述接收每个Pod通过其选主容器发送的目标数据,将所述目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod,包括:
[0014]将Lease资源反馈的针对一个Pod的写入成功信息反馈至对应的Pod,并将反馈的写入失败信息反馈给其他Pod;
[0015]其中,同一时刻向Lease资源写入目标数据成功的Pod最多为一个。
[0016]在一个实施方式中,所述方法还包括:
[0017]若任意一个Pod写入的目标数据时,若确定目标数据是否已经存在在Lease资源中、目标数据的数据状态为有效且写入目标数据的为其他Pod,则向本次写入目标数据的Pod反馈写入失败信息;
[0018]否则,则向写入成功的Pod反馈写入成功信息。
[0019]在一个实施方式中,所述方法还包括:
[0020]创建所述预先创建的Lease资源,若创建成功,则反馈创建成功消息;
[0021]否则,反馈创建失败消息。
[0022]在一个实施方式中,所述方法还包括:
[0023]当主Pod的应用容器发生异常时,则控制主Pod中的选主容器不再对对应的Lease资源续期,以从其他Pod中再次选取主Pod。
[0024]第二方面,根据本专利技术实施例提供的一种基于K8s的原生应用选主装置,所述装置包括:
[0025]部署模块,用于根据获取到的针对目标应用的部署信息,基于Kubernetes平台将所述目标应用部署在目标数量的Pod中;其中所述部署信息包括目标应用部署的Pod的数量,以及可同时运行的Pod的数量,每个Pod包括一个对应的应用容器,所述应用容器中存储有目标应用的代码;
[0026]注入模块,用于基于预设回调准入机制,在针对目标应用部署的每个Pod中均注入选主容器信息;
[0027]选主模块,用于接收每个Pod通过其选主容器发送的目标数据,将所述目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod;
[0028]确认模块,用于将接收到写入成功信息的Pod确定为原生应用的主Pod。
[0029]在一个实施方式中,所述基于K8s的原生应用选主装置还包括:
[0030]断续模块,用于当主Pod的应用容器发生异常时,则控制主Pod中的选主容器不再对对应的Lease资源续期,以从其他Pod中再次选取主Pod。
[0031]第三方面,根据本专利技术实施例提供的一种基于K8s的原生应用选主装置,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而实现第一方面中任一项所述的基于K8s的原生应用选主方法。
[0032]第四方面,根据本专利技术实施例提供的一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现第一方面中任一项所述的基于K8s的原生应用选主方法。
[0033]本专利技术实施例提供的基于Kubernetes的原生应用选主方法、装置及存储介质,至少具有如下有益效果:
[0034]本专利技术实施例提供的基于K8s的原生应用选主方法、装置及存储介质,可以在上述方式中,具体地,通过根据获取到的针对目标应用的部署信息,基于Kubernetes平台将所述目标应用部署在目标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于K8s的原生应用选主方法,其特征在于,所述方法包括:根据获取到的针对目标应用的部署信息,基于Kubernetes平台将所述目标应用部署在目标数量的Pod中;其中所述部署信息包括目标应用部署的Pod的数量,以及可同时运行的Pod的数量,每个Pod包括一个对应的应用容器,所述应用容器中存储有目标应用的代码;基于预设回调准入机制,在针对目标应用部署的每个Pod中均注入选主容器信息;接收每个Pod通过其选主容器发送的目标数据,将所述目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod;将接收到写入成功信息的Pod确定为原生应用的主Pod。2.根据权利要求1所述的基于K8s的原生应用选主方法,其特征在于,所述基于预设回调准入机制,在针对目标应用部署的每个Pod中均注入选主容器信息,包括:接收到任一个Pod发送的选主容器需求信息后,将所述选主容器需求信息发送至每一个Pod,并通过预设插件在每个Pod中注册选主容器信息配置并注入选主容器。3.根据权利要求2所述的基于K8s的原生应用选主方法,其特征在于,所述接收每个Pod通过其选主容器发送的目标数据,将所述目标数据写入预先创建的Lease资源,并将预先创建的Lease资源反馈的写入成败信息发送至对应的Pod,包括:将Lease资源反馈的针对一个Pod的写入成功信息反馈至对应的Pod,并将反馈的写入失败信息反馈给其他Pod;其中,同一时刻向Lease资源写入目标数据成功的Pod最多为一个。4.根据权利要求3所述的基于K8s的原生应用选主方法,其特征在于,所述方法还包括:若任意一个Pod写入的目标数据时,若确定目标数据是否已经存在在Lease资源中、目标数据的数据状态为有效且写入目标数据的为其他Pod,则向本次写入目标数据的Pod反馈写入失败信息;否则,则向写入成功的Pod反馈写入成功信息。5.根据权利要求4所述的基于K8s的原生应用选主方法,其特征在于,所述方法还...

【专利技术属性】
技术研发人员:顾欣杨波徐冬
申请(专利权)人:华云数据控股集团有限公司
类型:发明
国别省市:

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

1