CN115168840A - 一种故障注入方法、装置及计算机可读存储介质 - Google Patents
一种故障注入方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115168840A CN115168840A CN202210909242.7A CN202210909242A CN115168840A CN 115168840 A CN115168840 A CN 115168840A CN 202210909242 A CN202210909242 A CN 202210909242A CN 115168840 A CN115168840 A CN 115168840A
- Authority
- CN
- China
- Prior art keywords
- fault
- cluster
- configuration template
- injection
- template file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000002347 injection Methods 0.000 title claims abstract description 147
- 239000007924 injection Substances 0.000 title claims abstract description 147
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 239000000243 solution Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Abstract
本申请公开了一种故障注入方法、装置及计算机可读存储介质,涉及分布式技术领域。故障注入方法应用于K8S集群;通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
Description
技术领域
本申请涉及分布式技术领域,特别是涉及一种故障注入方法、装置及计算机可读存储介质。
背景技术
传统的虚拟化技术利用虚拟机管理程序在物理机上实现多个隔离的虚拟环境,具有降低开销、方便移动和可扩展性高的优势。然而虚拟机是一种比较重量级的单元,在存储和迁移方面需要占用较多的资源。容器技术是一种新兴的轻量级虚拟技术,可以实现进程级别的隔离,具有启动速度快、占用额外系统资源少、运维方便快捷等优势。Kubernetes(K8S)作为一套全新的基于容器技术的分布式架构,从部署运维、服务部署、服务监控、应用扩容和故障处理方面,提供了优秀的解决方案。由于K8S技术与分布式微服务架构具有天然的亲和优势,大量的微服务应用系统构建于K8S之上。在对这些应用系统进行测试时,不仅在业务方面进行接口级别的测试,同样也需要在整体上对应用系统组件的鲁棒性等进行测试。因此实现针对K8S的注入故障显得也是很有必要的。
然而,现有的K8S集群的故障注入方式主要是手动注入故障或通过执行脚本进行故障注入,故障注入自动化程度低。
鉴于上述问题,设计一种故障注入方法,能够实现对K8S集群自动化的故障注入,是该领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种故障注入方法、装置及计算机可读存储介质,实现对K8S集群自动化的故障注入。
为解决上述技术问题,本申请提供一种故障注入方法,应用于K8S集群,所述方法包括:
获取目标K8S集群,并获取故障注入请求;
根据所述故障注入请求解析故障类型和故障参数;
根据所述故障类型和所述故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,所述故障数据库中包含多种所述故障类型对应的所述故障配置模板文件及对应的所述故障执行插件;
将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群,以实现故障注入。
优选地,所述将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群包括:
根据所述故障配置模板文件和所述故障参数构建K8S CRD对象;
调用K8S-client接口,在所述目标K8S集群中创建CRD资源对象;
根据所述CRD资源对象的controller执行调谐逻辑,以实现故障注入。
优选地,在所述获取目标K8S集群之前,还包括:
通过kubeConfig文件注册所述目标K8S集群。
优选地,还包括:
在所述故障数据库中添加新的故障类型,以用于对所述目标K8S集群进行所述新的故障类型的注入。
优选地,所述在所述故障数据库中添加新的故障类型包括:
编写新的故障配置模板文件,并将所述新的故障配置模板文件的状态置为未发布;
生成用于执行所述新的故障配置模板文件的新的故障执行插件;
判断所述新的故障配置模板文件与所述新的故障执行插件是否对应;
若是,则将所述新的故障配置模板文件的状态置为已发布,以完成新的故障类型的添加。
优选地,在所述根据所述CRD资源对象的controller执行调谐逻辑之后,还包括:
监控所述CRD资源对象的状态;
实时输出显示故障注入过程及故障注入结果。
优选地,在所述将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群之后,还包括:
输出故障执行结果。
为解决上述技术问题,本申请还提供一种故障注入装置,应用于K8S集群,所述装置包括:
第一获取模块,用于获取目标K8S集群,并获取故障注入请求;
解析模块,用于根据所述故障注入请求解析故障类型和故障参数;
第二获取模块,用于根据所述故障类型和所述故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,所述故障数据库中包含多种所述故障类型对应的所述故障配置模板文件及对应的所述故障执行插件;
部署模块,用于将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群,以实现故障注入。
优选地,所述部署模块包括:
K8S CRD对象构建模块,用于根据所述故障配置模板文件和所述故障参数构建K8SCRD对象;
CRD资源对象创建模块,用于调用K8S-client接口,在所述目标K8S集群中创建CRD资源对象;
执行模块,用于根据所述CRD资源对象的controller执行调谐逻辑,以实现故障注入。
优选地,还包括:
注册模块,用于通过kubeConfig文件注册所述目标K8S集群。
优选地,还包括:
故障添加模块,用于在所述故障数据库中添加新的故障类型,以用于对所述目标K8S集群进行所述新的故障类型的注入。
优选地,所述故障添加模块包括:
文件编写模块,用于编写新的故障配置模板文件,并将所述新的故障配置模板文件的状态置为未发布;
插件生成模块,用于生成用于执行所述新的故障配置模板文件的新的故障执行插件;
判断模块,用于判断所述新的故障配置模板文件与所述新的故障执行插件是否对应;若是,则将所述新的故障配置模板文件的状态置为已发布,以完成新的故障类型的添加。
优选地,还包括:
监控模块,用于监控所述CRD资源对象的状态;
显示模块,用于实时输出显示故障注入过程及故障注入结果。
优选地,还包括:
输出模块,用于输出故障执行结果。
为解决上述技术问题,本申请还提供一种故障注入装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述所述的故障注入方法的步骤。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的故障注入方法的步骤。
本申请所提供的故障注入方法,应用于K8S集群;通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
此外,本申请实施例还提供了一种故障注入装置及计算机可读存储介质,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种故障注入方法的流程图;
图2为本申请实施例提供的故障数据库的示意图;
图3为本申请实施例提供的一种故障注入装置的结构示意图;
图4为本申请实施例提供的另一种故障注入装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种故障注入方法、装置及计算机可读存储介质。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
K8S集群是用K8S部署的容器集群,可以对容器化应用进行管理。为实现对K8S集群的故障注入,以测试K8S应用的稳定性,本申请实施例提供了一种应用于K8S集群的故障注入方法。图1为本申请实施例提供的一种故障注入方法的流程图。方法应用于K8S集群,如图1所示,方法包括:
S10:获取目标K8S集群,并获取故障注入请求。
在具体实施中,首先获取目标K8S集群,目标K8S集群是多个K8S集群中需要进行故障注入的集群,在本实施例中对于目标K8S集群的选择不做限制,根据具体的实施情况而定。同时,目标K8S集群的数量也可以为多个,即同时对多个目标K8S集群进行故障注入,本实施例对于目标K8S集群的数量不做限制,根据具体的实施情况而定。
进一步地,还需要获取故障注入请求,获取故障注入请求即对目标K8S集群进行故障注入的请求。故障注入请求中包含着需要注入的故障类型以及相关的故障参数,通过故障注入请求能够确定对目标K8S集群需要注入何种故障以进行测试。
S11:根据故障注入请求解析故障类型和故障参数。
在得到故障注入请求后,解析故障注入请求,得到故障类型和故障参数,从而确定了对目标K8S集群进行故障注入的具体故障种类和参数。
S12:根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件。其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件。
图2为本申请实施例提供的故障数据库的示意图。如图2所示,故障数据库是Java系统中内置的包含多种故障类型对应的故障配置模板文件及对应的故障执行插件的数据库,其中故障配置模板文件存储于故障库中,故障执行插件存储于插件库中。在故障数据库中内置了常见的故障类型对应的故障配置模板文件及故障执行插件,故障配置模板文件及故障执行插件共同抽象为该故障类型的故障场景。以常见的故障,CPU负载过高为例,对应的故障执行插件为用于加压CPU的插件;对应的故障场景即为描述在CPU负载过高的景下,列举出加压时间、负载比例等参数。
具体地,根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件,故障配置模板文件和故障执行插件即为对目标K8S集群注入的故障文件。
S13:将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。
在得到故障配置模板文件及故障执行插件之后,将故障配置模板文件及故障执行插件部署至目标K8S集群,最终实现了故障注入。本实施例中,对于将故障配置模板文件及故障执行插件部署至目标K8S集群的具体过程不做限制,根据具体的实施情况而定。
本实施例中,故障注入方法应用于K8S集群;通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
在上述实施例的基础上:
作为一种优选的实施例,将故障配置模板文件及故障执行插件部署至目标K8S集群包括:
根据故障配置模板文件和故障参数构建K8S CRD对象;
调用K8S-client接口,在目标K8S集群中创建CRD资源对象;
根据CRD资源对象的controller执行调谐逻辑,以实现故障注入。
在上述实施例中,对于将故障配置模板文件及故障执行插件部署至目标K8S集群的具体过程不做限制,作为一种优选的实施例,本实施例中,首先根据故障配置模板文件和故障参数构建K8S CRD对象。
自定义资源定义(Custom Resource Definition,CRD)是一种无需编码就可以扩展原生K8S的应用程序编程接口(Application Programming Interface,API)的方式,适合扩展K8S的自定义接口和功能。通过此扩展可以向K8S API中增加新的资源类型。此外,K8S-client是K8S API的一个封装接口。
由于通过CRD资源可以将用户自定义资源类型转换为K8S上的资源类型,因此为了将故障配置模板文件及故障执行插件部署至目标K8S集群中,首先根据故障配置模板文件和故障参数构建K8S CRD对象;进一步调用K8S-client接口,在目标K8S集群中创建CRD资源对象。最后根据CRD资源对象的控制器controller执行调谐逻辑,从而实现了故障注入。
本实施例中,根据故障配置模板文件和故障参数构建K8S CRD对象;调用K8S-client接口,在目标K8S集群中创建CRD资源对象;根据CRD资源对象的controller执行调谐逻辑,最终实现了目标K8S集群的故障注入。
在上述实施例的基础上:
作为一种优选的实施例,在获取目标K8S集群之前,还包括:
通过kubeConfig文件注册目标K8S集群。
可以理解的是,用于配置K8S集群访问的文件称为kubeConfig文件,是引用配置文件的常用方法。在具体实施中,可以使用kubeConfig文件来组织有关集群、用户、命名空间和身份认证机制的信息。kubectl命令行根据使用kubeConfig文件来查找选择集群所需的信息,并与集群的API服务进行通信。其中,kubectl是操作K8S的一个客户端工具,只要为kubectl提供链接API服务的配置(kubeConfig),kubectl可以在任何地方操作该集群。因此,如图2所示,为实现对目标K8S集群的管理和故障注入,需要通过kubeConfig文件注册目标K8S集群,以接入K8S管理服务。
本实施例中,在获取目标K8S集群之前,通过kubeConfig文件注册目标K8S集群,实现了记录K8S集群的管理信息,接入了K8S管理服务。
故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件,但不一定包含目标K8S集群中可能发生的全部故障类型。而为了实现对目标K8S集群进行更完整的故障的注入,以便于进行全面的故障测试,作为一种优选的实施例,还包括:
在故障数据库中添加新的故障类型,以用于对目标K8S集群进行新的故障类型的注入。
具体地,如图2所示,进一步在故障数据库中添加新的故障类型,以便于对目标K8S集群进行新的故障类型的注入。需要注意的是,在添加新的故障类型过程中,Java系统不需要重启,可直接在故障数据库中进行新的故障类型的添加。本实施例中对于故障数据库中新的故障类型的添加过程不做限制,可直接将新的故障类型对应的故障配置模板文件及对应的故障执行插件添加至故障数据库中,还可根据新的故障类型的参数依次生成故障配置模板文件及对应的故障执行插件并添加至故障数据库中,根据具体的实施情况而定。
本实施例中,在故障数据库中添加新的故障类型,以用于对目标K8S集群进行新的故障类型的注入,实现了故障类型的扩展;同时在故障添加过程中Java系统不需要重启,热插拔的设计使得在进行故障注入的同时允许进行新的故障类型的扩展,具有更高的操作效率。
在上述实施例的基础上:
作为一种优选的实施例,在故障数据库中添加新的故障类型包括:
编写新的故障配置模板文件,并将新的故障配置模板文件的状态置为未发布;
生成用于执行新的故障配置模板文件的新的故障执行插件;
判断新的故障配置模板文件与新的故障执行插件是否对应;
若是,则将新的故障配置模板文件的状态置为已发布,以完成新的故障类型的添加。
具体地,在本实施例中首先编写新的故障配置模板文件。在编写过程中按照Java系统定义的格式规范进行编写,并将编写的新的故障配置模板文件上传至Java系统中,以对其进行解析并存放到故障数据库中;将该新的故障配置模板文件置为“未发布”,即标识对应的故障场景未添加完成。
进一步地,按照Java系统定义的格式规范开发用于执行新的故障配置模板文件的新的故障执行插件,并将插件上传到Java系统中。Java系统周期性扫描故障数据库,查看新导入的故障类型是否可用,即判断新的故障配置模板文件与新的故障执行插件是否对应,若是,则将新的故障配置模板文件的状态置为已发布,即标识对应的故障场景添加完成。
本实施例中,通过编写新的故障配置模板文件,并将新的故障配置模板文件的状态置为未发布;生成用于执行新的故障配置模板文件的新的故障执行插件;判断新的故障配置模板文件与新的故障执行插件是否对应;若是,则将新的故障配置模板文件的状态置为已发布,实现了新的故障类型的添加。
在上述实施例的基础上:
作为一种优选的实施例,在根据CRD资源对象的controller执行调谐逻辑之后,还包括:
监控CRD资源对象的状态;
实时输出显示故障注入过程及故障注入结果。
作为一种优选的实施例,在根据CRD资源对象的controller执行调谐逻辑之后,进一步监控CRD资源对象的状态;系统页面实时输出显示故障注入过程及故障注入结果,从而实现了故障注入的全程监控,以便于确认故障注入是否正常。
作为一种优选的实施例,在将故障配置模板文件及故障执行插件部署至目标K8S集群之后,还包括:
输出故障执行结果。
在具体实施中,在注入故障至目标K8S集群之后输出故障执行结果,以便于提示用户故障执行完成,并根据故障执行结果进行后续操作。
在上述实施例中,对于故障注入方法进行了详细描述,本申请还提供故障注入装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件结构的角度。
图3为本申请实施例提供的一种故障注入装置的结构示意图。装置应用于K8S集群,如图3所示,故障注入装置包括:
第一获取模块10,用于获取目标K8S集群,并获取故障注入请求。
解析模块11,用于根据故障注入请求解析故障类型和故障参数。
第二获取模块12,用于根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件。
其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件。
部署模块13,用于将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。
作为一种优选的实施例,所述部署模块包括:
K8S CRD对象构建模块,用于根据所述故障配置模板文件和所述故障参数构建K8SCRD对象;
CRD资源对象创建模块,用于调用K8S-client接口,在所述目标K8S集群中创建CRD资源对象;
执行模块,用于根据所述CRD资源对象的controller执行调谐逻辑,以实现故障注入。
作为一种优选的实施例,还包括:
注册模块,用于通过kubeConfig文件注册所述目标K8S集群。
作为一种优选的实施例,还包括:
故障添加模块,用于在所述故障数据库中添加新的故障类型,以用于对所述目标K8S集群进行所述新的故障类型的注入。
作为一种优选的实施例,所述故障添加模块包括:
文件编写模块,用于编写新的故障配置模板文件,并将所述新的故障配置模板文件的状态置为未发布;
插件生成模块,用于生成用于执行所述新的故障配置模板文件的新的故障执行插件;
判断模块,用于判断所述新的故障配置模板文件与所述新的故障执行插件是否对应;若是,则将所述新的故障配置模板文件的状态置为已发布,以完成新的故障类型的添加。
作为一种优选的实施例,还包括:
监控模块,用于监控所述CRD资源对象的状态;
显示模块,用于实时输出显示故障注入过程及故障注入结果。
作为一种优选的实施例,还包括:
输出模块,用于输出故障执行结果。
本实施例中,故障注入装置包括第一获取模块、解析模块、第二获取模块和部署模块。通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
图4为本申请实施例提供的另一种故障注入装置的结构示意图。如图4所示,故障注入装置包括:
存储器20,用于存储计算机程序。
处理器21,用于执行计算机程序时实现如上述实施例中所提到的故障注入的方法的步骤。
本实施例提供的故障注入装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的故障注入方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于故障注入方法涉及到的数据。
在一些实施例中,故障注入装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图4中示出的结构并不构成对故障注入装置的限定,可以包括比图示更多或更少的组件。
本实施例中,故障注入装置包括存储器和处理器。处理器用于执行计算机程序时实现如上述实施例中所提到的故障注入的方法的步骤。通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。通过获取目标K8S集群,并获取故障注入请求;根据故障注入请求解析故障类型和故障参数;根据故障类型和故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,故障数据库中包含多种故障类型对应的故障配置模板文件及对应的故障执行插件;将故障配置模板文件及故障执行插件部署至目标K8S集群,以实现故障注入。由此可知,上述方案通过在故障数据库中预先设置了多种故障类型,当接收到故障注入请求时,解析故障注入请求便能在故障数据库中选取对应的故障,从而实现对应故障的自动化注入。
以上对本申请所提供的一种故障注入方法、装置及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种故障注入方法,其特征在于,应用于K8S集群,所述方法包括:
获取目标K8S集群,并获取故障注入请求;
根据所述故障注入请求解析故障类型和故障参数;
根据所述故障类型和所述故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,所述故障数据库中包含多种所述故障类型对应的所述故障配置模板文件及对应的所述故障执行插件;
将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群,以实现故障注入。
2.根据权利要求1所述的故障注入方法,其特征在于,所述将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群包括:
根据所述故障配置模板文件和所述故障参数构建K8S CRD对象;
调用K8S-client接口,在所述目标K8S集群中创建CRD资源对象;
根据所述CRD资源对象的controller执行调谐逻辑,以实现故障注入。
3.根据权利要求1所述的故障注入方法,其特征在于,在所述获取目标K8S集群之前,还包括:
通过kubeConfig文件注册所述目标K8S集群。
4.根据权利要求1所述的故障注入方法,其特征在于,还包括:
在所述故障数据库中添加新的故障类型,以用于对所述目标K8S集群进行所述新的故障类型的注入。
5.根据权利要求4所述的故障注入方法,其特征在于,所述在所述故障数据库中添加新的故障类型包括:
编写新的故障配置模板文件,并将所述新的故障配置模板文件的状态置为未发布;
生成用于执行所述新的故障配置模板文件的新的故障执行插件;
判断所述新的故障配置模板文件与所述新的故障执行插件是否对应;
若是,则将所述新的故障配置模板文件的状态置为已发布,以完成新的故障类型的添加。
6.根据权利要求2所述的故障注入方法,其特征在于,在所述根据所述CRD资源对象的controller执行调谐逻辑之后,还包括:
监控所述CRD资源对象的状态;
实时输出显示故障注入过程及故障注入结果。
7.根据权利要求1至6任意一项所述的故障注入方法,其特征在于,在所述将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群之后,还包括:
输出故障执行结果。
8.一种故障注入装置,其特征在于,应用于K8S集群,所述装置包括:
第一获取模块,用于获取目标K8S集群,并获取故障注入请求;
解析模块,用于根据所述故障注入请求解析故障类型和故障参数;
第二获取模块,用于根据所述故障类型和所述故障参数获取故障数据库中对应的故障配置模板文件及故障执行插件;其中,所述故障数据库中包含多种所述故障类型对应的所述故障配置模板文件及对应的所述故障执行插件;
部署模块,用于将所述故障配置模板文件及所述故障执行插件部署至所述目标K8S集群,以实现故障注入。
9.一种故障注入装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的故障注入方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的故障注入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210909242.7A CN115168840A (zh) | 2022-07-29 | 2022-07-29 | 一种故障注入方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210909242.7A CN115168840A (zh) | 2022-07-29 | 2022-07-29 | 一种故障注入方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115168840A true CN115168840A (zh) | 2022-10-11 |
Family
ID=83477593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210909242.7A Pending CN115168840A (zh) | 2022-07-29 | 2022-07-29 | 一种故障注入方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168840A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794529A (zh) * | 2022-12-06 | 2023-03-14 | 安超云软件有限公司 | 云环境下的存储故障模拟方法、装置、设备及存储介质 |
-
2022
- 2022-07-29 CN CN202210909242.7A patent/CN115168840A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794529A (zh) * | 2022-12-06 | 2023-03-14 | 安超云软件有限公司 | 云环境下的存储故障模拟方法、装置、设备及存储介质 |
CN115794529B (zh) * | 2022-12-06 | 2023-09-05 | 安超云软件有限公司 | 云环境下的存储故障模拟方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046101B (zh) | 页面自动化测试方法、装置及计算机存储介质 | |
CN111274512A (zh) | 一种页面加载方法、装置及介质 | |
CN111695827B (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN110750415B (zh) | 接口服务配置方法、装置、介质和计算机设备 | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN103631573A (zh) | 可迁移函数执行时间的获得方法及系统 | |
CN111309734A (zh) | 自动生成表数据的方法及系统 | |
CN111694733A (zh) | 一种软件开发工具包sdk的api测试方法以及测试装置 | |
CN107066377A (zh) | 基于Android系统的页面元素获取方法及终端设备 | |
CN115168840A (zh) | 一种故障注入方法、装置及计算机可读存储介质 | |
CN114003451B (zh) | 一种接口测试方法、装置、系统及介质 | |
CN114912897A (zh) | 工作流执行方法、工作流编排方法及电子设备 | |
CN108170602B (zh) | 一种测试用例生成方法、装置、终端及计算机可读介质 | |
CN112241373A (zh) | 自动化测试方法、测试装置、处理器和测试系统 | |
CN105279074A (zh) | 一种通过NSLog在终端上展示日志信息的方法和装置 | |
CN114328196A (zh) | 数据防泄漏系统的测试方法、装置、设备及存储介质 | |
CN114968225A (zh) | 微服务统一构建方法、环境生成方法及相关设备 | |
CN114143235A (zh) | Nfv自动测试方法、装置、设备及存储介质 | |
CN113127369A (zh) | 一种执行脚本的处理方法以及装置 | |
CN113037582A (zh) | 网络功能虚拟化nfv测试方法、装置和系统 | |
CN115016898A (zh) | 一种集群文件系统稳定性测试方法、装置、介质 | |
CN115328799A (zh) | 数据库操作测试方法、装置、存储介质及计算机设备 | |
CN116382718A (zh) | 代码离线部署方法、装置、计算机设备及存储介质 | |
CN115934109A (zh) | 流水线的部署方法、装置、电子设备及存储介质 | |
CN117453223A (zh) | 操作系统的镜像文件生成方法、装置、计算机设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |