Chaos Mesh是什么?它是一个云原生的混沌测试平台,它提供在 Kubernetes 平台上进行混沌测试的能力,最近在逛github的时候看见了混沌测试技术,自己本身也是一名测试工作者,好奇中就研究了一下混沌工程相关知识。
Chaos Mesh的整体架构如下:
我个人习惯学习新知识首先要知道它的工作原理,那么 接下来我们首先看一下Chaos Mesh 的工作原理
1.Controller-manager 目前 controller-manager 可以分为两部分,一部分 controllers 用于调度和管理 CRD 对象实例,另一部分为 admission-webhooks 动态的给 Pod 注入 sidecar 容器。
2.Chaos-daemon Chaos-daemon 以 daemonset 的方式运行,并具有 Privileged 权限,Chaos-daemon 可以操作具体 Node 节点上网络设备以及 Cgroup 等。
3.Sidecar Sidecar contianer 是一类特殊的容器,由 admission-webhooks 动态的注入到目标 Pod 中,目前在 Chaos Mesh 中实现了 chaosfs sidecar 容器,chaosfs 容器内会运行 fuse-daemon,用来劫持应用容器的 I/O 操作。
接着看一下Chaos Mesh的工作流程
1.用户通过 YAML 文件或是 Kubernetes 客户端往 Kubernetes API Server 创建或更新 Chaos 对象。
2.Chaos-mesh 通过 watch API Server 中的 Chaos 对象创建更新或删除事件,维护具体 Chaos 实验的运行以及生命周期,在这个过程中 controller-manager、chaos-daemon 以及 sidecar 容器协同工作,共同提供错误注入的能力。
3.Admission-webhooks 是用来接收准入请求的 HTTP 回调服务,当收到 Pod 创建请求,会动态修改待创建的 Pod 对象。
最后 我们来看一下Chaos Mesh能做什么
pod-kill:模拟 Kubernetes Pod 被 kill
pod-failure:模拟 Kubernetes Pod 持续不可用,可以用来模拟节点宕机不可用场景
network-delay:模拟网络延迟
network-loss:模拟网络丢包
network-duplication: 模拟网络包重复。
network-corrupt: 模拟网络包损坏
network-partition:模拟网络分区
I/O delay : 模拟文件系统 I/O 延迟
I/O errno:模拟文件系统 I/O 错误
总结:今天主要介绍了一下Chaos Mesh的工作原理,工作流程以及它能做的事情