1、ChaosMesh的概念
ChaosMesh是一个开源的云原生混沌工程平台。它提供了多种错误模拟和巨大的编排错误场景的能力。使用CM,你能方便的模拟多种在真实的开发,测试和生产环境中不常见的场景从而找到系统的潜在问题。为了防混沌工程易用,CM提供了一个完美的可视化操作。你能轻松的通过图形化界面设计混乱场景并监控混乱实验的状态。
2、ChaosMesh架构介绍
工作原理:
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 操作。
3、工作流程
(1)、用户用yaml文件或k8s客户端创建更新Chaos对象。
(2)、Chaos-mesh通过watch api server中的chaos对象创建更新或删除事件,由controller-manager/chaos-daemon和sidecar协作提供注入能力。
(3)、admission-webhooks用来接收http回调,提供状态信息。
4、ChaosMesh 功能
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 错误