System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及it与软件开发,是一种基于operator的k8s环境下redis自动化部署方法和系统。
技术介绍
1、redis目前支持三种常见的部署模式,分别是单机版、集群版本、高可用哨兵模式。三种模式都是分别应对不同业务场景,单机版更多是用于个人测试、开发联调;高可用哨兵模式用于高可用和读写分离场景;集群版本,主要是用于高并发吞吐量较大的场景。kubernetes作为当今容器编排技术的主流,在程序开发、devops等领域都体现出了优势;当业务逐渐通过docker部署在kubernetes集群中时,如何在kubernetes里高效运维和部署redis,为上层业务提供缓存服务,成为了一个难题。
2、在现有已公开的专利技术技术中,如申请公开号为cn110012088a的专利公开了一种基于kubernets的redis主从集群自动化部署方案,redis的配置文件通过文件流的方式,传入helm安装包中,并将helm配置及启动逻辑部署在configmap中,在redis-server-statefulset.yaml中,利用initcontainers将各类启动脚本,挂载到容器所需pv中,各类启动脚本通过文件流的方式,写入到configmap中,initcontainers通过command命令,启动启动脚本执行配置安装,进行redis的主从节点pod及sentinel节点在kubernets的部署。
3、上述专利中使用initcontainers启动各类启动脚本,并将启动脚本通过文件流的方式写入configma
技术实现思路
1、本部分的目的在于概述本专利技术的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和专利技术名称中可能会做些简化或省略以避免使本部分、说明书摘要和专利技术名称的目的模糊,而这种简化或省略不能用于限制本专利技术的范围。
2、本专利技术所要解决的技术问题是针对现有技术中,难以实现在kubernetes里高效运维和部署redis,并为上层业务提供缓存服务的难题,提出了一种基于operator的k8s环境下redis自动化部署方法和系统。
3、为了达到上述目的,本专利技术一种基于operator的k8s环境下redis自动化部署方法的技术方案包括如下步骤:
4、s1:采集用户通过yaml文件自定义并提交变更到k8sapiserver的资源对象;
5、s2:通过operator的事件监听机制,监听k8sapiserver的资源对象,并拓展redis三种部署模式为三种自定义crd;
6、s3:进行更新状态阈值判断,并开发部署redis-operator服务监听自定义crd事件;
7、s4:根据不同资源对象的当前状态和期望状态进行比较,管理redis的有状态服务。
8、具体地,所述三种部署模式包括:redis单机版、redis哨兵版、redis集群版。
9、具体地,所述redis单机版通过简单的kubernetes的单副本的statefulset来部署服务到k8s集群中;所述redis哨兵版通过官方的sentinel组件保持和master、slave节点心跳,当主节点发生宕机的时候,自动完成主从关系切换,并通过sentinel将读流量指向到slave节点;所述redis集群版通过2个k8s的statefulset对象保证2组实例的副本数,并完成redis集群的构建和分片主从复制的构建。
10、具体地,所述redis单机版的部署流程包括如下具体步骤:
11、s211:operator收到rediscluster事件通知;
12、s212:创建并更新leaderstatefulset;
13、s213:检查leaderstatefulset的节点ready数是否符合要求;否则,返回消息延时重新投递
14、s214:创建并更新followerstatefulset;
15、s215:检查master和followerpod的主从关系;否则构建主从关系;
16、s216:创建leader和follower的service,对外暴露访问入口;
17、s217:部署处理结束并退出。
18、具体地,所述redis哨兵版的部署流程包括如下具体步骤:
19、s221:operator收到redissentinel事件通知;
20、s222:创建并更新redisstatefulset;
21、s223:检查redisstatefulset的节点ready数是否符合要求;否则,返回消息延时重新投递;
22、s224:创建并更新sentinelstatefulset,检查sentinelstatefulset的节点ready数是否符合要求;否则,返回消息延时重新投递;
23、s225:检查redisstatefulset实例的主从关系;否则构建主从关系,确保只有一个master节点;
24、s226:创建sentinelstatefulset的serviceip,对外暴露访问入口;
25、s227:部署处理结束并退出。
26、具体地,所述redis集群版的部署流程包括如下具体步骤:
27、s231:operator收到rediscluster事件通知;
28、s232:创建并更新leaderstatefulset;
29、s233:检查leaderstatefulset的节点ready数是否符合要求;否则,返回消息延时重新投递;
30、s234:创建并更新followerstatefulset,检查followerstatefulset的节点ready数是否符合要求;否则,返回消息延时重新投递;
31、s235:检查master和followerpod的主从关系;否则构建主从关系;
32、s236:创建leader和follower的service,对外暴露访问入口;
33、s237:部署处理结束并退出。
34、具体地,s2中,所述三种自定义crd包括:三种模式的redis部署redis、rediscluster、redissentinel。
35、具体地,s3中,所述更新状态阈值判断逻辑包括:
36、s301:更新rediscluster和master-statefulset;
37、s302:计算更新节点系数;
38、s303:判断更新状态,并执行更新选项。
39、具体地,所述更新节点系数的计算策略如下:
40、
...【技术保护点】
1.一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于:所述方法包括如下具体步骤:
2.根据权利要求1所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述三种部署模式包括:Redis单机版、Redis哨兵版、Redis集群版。
3.根据权利要求2所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述Redis单机版通过简单的kubernetes的单副本的statefulset来部署服务到k8s集群中;所述Redis哨兵版通过官方的sentinel组件保持和master、slave节点心跳,当主节点发生宕机的时候,自动完成主从关系切换,并通过sentinel将读流量指向到slave节点;所述Redis集群版通过2个k8s的statefulset对象保证2组实例的副本数,并完成redis集群的构建和分片主从复制的构建。
4.根据权利要求3所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述Redis单机版的部署流程包括如下具体
5.根据权利要求3所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述Redis哨兵版的部署流程包括如下具体步骤:
6.根据权利要求3所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述Redis集群版的部署流程包括如下具体步骤:
7.根据权利要求3所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,S2中,所述三种自定义CRD包括:三种模式的redis部署redis、rediscluster、redissentinel。
8.根据权利要求1所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,S3中,所述更新状态阈值判断逻辑包括:
9.根据权利要求8所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,所述更新节点系数的计算策略如下:
10.根据权利要求8所述的一种基于Operator的k8s环境下Redis自动化部署方法,其特征在于,S303中,所述更新选项包括:
11.一种基于Operator的k8s环境下Redis自动化部署系统,其基于如权利要求1-10任一项所述的一种基于Operator的k8s环境下Redis自动化部署方法实现,其特征在于,所述系统包括以下模块:
...【技术特征摘要】
1.一种基于operator的k8s环境下redis自动化部署方法,其特征在于:所述方法包括如下具体步骤:
2.根据权利要求1所述的一种基于operator的k8s环境下redis自动化部署方法,其特征在于,所述三种部署模式包括:redis单机版、redis哨兵版、redis集群版。
3.根据权利要求2所述的一种基于operator的k8s环境下redis自动化部署方法,其特征在于,所述redis单机版通过简单的kubernetes的单副本的statefulset来部署服务到k8s集群中;所述redis哨兵版通过官方的sentinel组件保持和master、slave节点心跳,当主节点发生宕机的时候,自动完成主从关系切换,并通过sentinel将读流量指向到slave节点;所述redis集群版通过2个k8s的statefulset对象保证2组实例的副本数,并完成redis集群的构建和分片主从复制的构建。
4.根据权利要求3所述的一种基于operator的k8s环境下redis自动化部署方法,其特征在于,所述redis单机版的部署流程包括如下具体步骤:
5.根据权利要求3所述的一种基于operator的k8s环境下redis自动化部署方法,其特征在于,...
【专利技术属性】
技术研发人员:郑智辉,段云涌,黄俊炜,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。