一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于kubernetes集群的应用故障演练方法及系统与流程

2023-02-04 17:24:21 来源:中国专利 TAG:

技术特征:
1.一种基于kubernetes集群的应用故障演练方法,其特征在于,包括:任务流控制器taskcontroller:控制演练任务的生命周期;控制器chaoscontroller:控制实验的生命周期,任务对象经过任务流控制器taskcontroller分解后,会成为chaoscontroller控制的单元;组件agent:用于对指定的应用注入相关的异常干扰;爆炸半径控制组件explosioncontroller:用于控制实验的爆炸半径,利用kubernetes原生的基于标签选择能力来选择目前对象;所述方法的实现流程包括:步骤s1:向apiserver服务器提交一个任务编排taskyml混沌实验数据,taskcontroller任务流控制器watch到事件后随即处理,并通过etcd对实验数据进行持久化;步骤s2:控制器chaoscontroller解析实验对象,根据所述实验对象的操作类型,选择对应的故障注入方式,管理实验的生命周期;步骤s3:根据故障注入类型,由模拟故障注入组件agent执行预定逻辑。2.根据权利要求1所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s1包括:步骤s1.1:任务流控制器taskcontroller根据提交的任务编排taskyml解析出task对象,并对task对象数据持久化存储,根据task对象的metadata中tasktype判断任务流类型,若是单实验任务流,执行步骤s1.2,多实验任务流执行步骤s1.3;步骤s1.2:根据task对象的chaostemplate封装单次实验chaosobject对象,然后提交给apiserver服务器,随后由控制器chaoscontroller监听chaos对象,执行具体的实验,通过reconcile机制反馈实验状态;步骤s1.3:多实验任务的执行,根据tasktype判断task对象是串行执行还是并行执行;步骤s1.4:通过所述chaostemplate中的schedule定义定时任务类型,如果是单次执行任务,则采用job方式来执行,如果是多次执行,则使用cronjob方式。3.根据权利要求2所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s1.3具体包括:若是串行执行,则对task对象解析出的单个实验chaosobject入队列taskqueue,然后依次出队列执行,chaos对象的执行仍由控制器chaoscontroller来控制并反馈结果,每执行完实验,则采用回调的方式通知任务流控制器taskcontroller,taskcontroller缓存已执行的实验数量,然后和该task对象总的数量作比较,以此来判定任务的执行状态;如果是并行执行,则使用步骤s1.2的方式执行。4.根据权利要求1所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s2包括:控制器chaoscontroller捕捉到chaosobject对象后,解析出该对象的主要数据,根据chaostype的值,决定注入的方式;对于非生命周期管理类的故障注入,根据tasktarget和action内容,组合agentobject对象,然后根据实验作用对象信息确认所在节点信息,从而将该实验数据发送给具体的agent程序;通过reconcile回调来监测agent执行结果,在实验结束之后发送恢复指令给
agent;对pod生命周期管理类的实验动作,通过调用api server的pod相关api的方式来实现故障注入,注入完成以后,通过对pod时间的监听来验证实验的完成状态,然后chaoscontroller更新本次任务的状态,一次任务完成。5.根据权利要求1所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s3包括:步骤s3.1:agent解析agentobject,获取实验数据,并对实验数据进行解析,判断是针对pod所在节点的实验还是针对pod本身的实验,再实现具体的实验;步骤s3.2:根据提交的不同的实验类型,agent执行相应的逻辑;步骤s3.3:在故障注入环节持续时间结束时,销毁agent混沌注入的程序,退出被注入故障的应用pod的namespaces,然后向控制器chaoscontroller发送实验结果。6.根据权利要求5所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s3.1还包括:如果是针对pod本身的,通过agent的attachns()函数进入pod的namespaces来操作实验对象,如果是针对节点nodes的,则直接在节点完成实验注入。7.根据权利要求5所述的基于kubernetes集群的应用故障演练方法,其特征在于,所述步骤s3.2还包括:根据实验对象和实验类型type,调用injectfault()函数注入实验,然后回调返回结果,injectfault()函数的注入方式根据type来确定。8.一种基于kubernetes集群的应用故障演练系统,其特征在于,包括:任务流控制器taskcontroller:控制演练任务的生命周期;控制器chaoscontroller:控制实验的生命周期,任务对象经过任务流控制器taskcontroller分解后,会成为chaoscontroller控制的单元;组件agent:用于对指定的应用注入相关的异常干扰;爆炸半径控制组件explosioncontroller:用于控制实验的爆炸半径,利用kubernetes原生的基于标签选择能力来选择目前对象;所述系统包括:模块m1:向apiserver服务器提交一个任务编排taskyml混沌实验数据,taskcontroller任务流控制器watch到事件后随即处理,并通过etcd对实验数据进行持久化;模块m2:控制器chaoscontroller解析实验对象,根据所述实验对象的操作类型,选择对应的故障注入方式,管理实验的生命周期;模块m3:根据故障注入类型,由模拟故障注入组件agent执行预定逻辑。9.根据权利要求8所述的基于kubernetes集群的应用故障演练系统,其特征在于,所述模块m1包括:模块m1.1:任务流控制器taskcontroller根据提交的任务编排taskyml解析出task对象,并对task对象数据持久化存储,根据task对象的metadata中tasktype判断任务流类型,若是单实验任务流,执行模块m1.2,多实验任务流执行模块m1.3;模块m1.2:根据task对象的chaostemplate封装单次实验chaosobject对象,然后提交给apiserver服务器,随后由控制器chaoscontroller监听chaos对象,执行具体的实验,通过reconcile机制反馈实验状态;
模块m1.3:多实验任务的执行,根据tasktype判断task对象是串行执行还是并行执行;模块m1.4:通过所述chaostemplate中的schedule定义定时任务类型,如果是单次执行任务,则采用job方式来执行,如果是多次执行,则使用cronjob方式;所述模块m1.3具体包括:若是串行执行,则对task对象解析出的单个实验chaosobject入队列taskqueue,然后依次出队列执行,chaos对象的执行仍由控制器chaoscontroller来控制并反馈结果,每执行完实验,则采用回调的方式通知任务流控制器taskcontroller,taskcontroller缓存已执行的实验数量,然后和该task对象总的数量作比较,以此来判定任务的执行状态;如果是并行执行,则使用模块m1.2的方式执行。10.根据权利要求8所述的基于kubernetes集群的应用故障演练系统,其特征在于,所述模块m2包括:控制器chaoscontroller捕捉到chaosobject对象后,解析出该对象的主要数据,根据chaostype的值,决定注入的方式;对于非生命周期管理类的故障注入,根据tasktarget和action内容,组合agentobject对象,然后根据实验作用对象信息确认所在节点信息,从而将该实验数据发送给具体的agent程序;通过reconcile回调来监测agent执行结果,在实验结束之后发送恢复指令给agent;对pod生命周期管理类的实验动作,通过调用api server的pod相关api的方式来实现故障注入,注入完成以后,通过对pod时间的监听来验证实验的完成状态,然后chaoscontroller更新本次任务的状态,一次任务完成;所述模块m3包括:模块m3.1:agent解析agentobject,获取实验数据,并对实验数据进行解析,判断是针对pod所在节点的实验还是针对pod本身的实验,再实现具体的实验;模块m3.2:根据提交的不同的实验类型,agent执行相应的逻辑;模块m3.3:在故障注入环节持续时间结束时,销毁agent混沌注入的程序,退出被注入故障的应用pod的namespaces,然后向控制器chaoscontroller发送实验结果;所述模块m3.1还包括:如果是针对pod本身的,通过agent的attachns()函数进入pod的namespaces来操作实验对象,如果是针对节点nodes的,则直接在节点完成实验注入;所述模块m3.2还包括:根据实验对象和实验类型type,调用injectfault()函数注入实验,然后回调返回结果,injectfault()函数的注入方式根据type来确定。

技术总结
本发明提供一种基于kubernetes集群的应用故障演练方法及系统,涉及云原生技术领域,包括:步骤S1:向APIserver服务器提交一个任务编排taskYml混沌实验数据,TaskController任务流控制器watch到事件后随即处理,并通过etcd对实验数据进行持久化;步骤S2:控制器ChaosController解析实验对象,根据所述实验对象的操作类型,选择对应的故障注入方式,管理实验的生命周期;步骤S3:根据故障注入类型,由模拟故障注入组件Agent执行预定逻辑。本发明能够实现对应用在一定压力下主动地注入一些软件或硬件方面的异常故障状态,模拟应用在实际生产运行过程中可能遇到的故障场景,定位影响系统稳定性的因素,提高分布式系统的韧性。性。性。


技术研发人员:梅金东 詹赵林 王畅 郭进 王鑫 孙佳明 谢瑒 梅洪彰 赵文川 黄文杰 刘金华 聂子璇 刘清 张绍兴 王汝珅 宫婷 侯宇 王浩文 鄢鹏 葛阳 刘小强
受保护的技术使用者:兴业数字金融服务(上海)股份有限公司
技术研发日:2022.10.31
技术公布日:2023/2/3
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献