xk6-disruptor 工作原理
xk6-disruptor 由两个主要组件组成
- xk6-disruptor 扩展提供了 Javascript API,用于使用 xk6-disruptor-agent 作为后端将故障注入目标系统。此 API 围绕一组扰动器(disruptors)构建。每个扰动器针对系统中的一类组件(例如 Pod 或集群节点)。
- xk6-disruptor-agent 将故障注入其运行的目标系统中。它以 Docker 镜像的形式提供,您可以从 xk6-disruptor 仓库拉取。
xk6-disruptor 扩展在目标系统中安装代理,并发送命令以注入所需的故障。具体如何实现取决于扰动器的类型,如下所述。
PodDisruptor
下图展示了 PodDisruptor 的工作原理
- PodDisruptor 根据构造函数中定义的选择器属性选择目标 Pod
- PodDisruptor 将 xk6-disruptor-agent 附加到每个目标 Pod 上
- 注入故障时(例如调用injectHTTPFaults),PodDisruptor 向代理发送命令,使其在其各自的 Pod 中注入故障
ServiceDisruptor
ServiceDisruptor 作为 PodDisruptor 的包装器工作,它针对支持该服务的 Pod。
- ServiceDisruptor 使用在构造函数中定义的服务定义,创建一个 Pod 选择器,该选择器匹配支持该服务的 Pod。
- ServiceDisruptor 使用此 Pod 选择器创建一个 PodDisruptor。
- PodDisruptor 在目标 Pod 中安装代理。
从这一点开始,PodDisruptor 的工作原理如前所述。