Chaos Mesh 是一个云原生的混沌工程(Chaos Engineering)平台,可在 Kubernetes 环境中进行混沌测试。
Chaos Mesh 主要包含两大组件:
- Chaos Operator:核心组件
- Chaos Dashboard:可视化面板,显示混沌实验对系统在线服务的影响
Chaos Operator 以一种可管理的方式将故障注入到应用程序和 Kubernetes 基础结构中,从而为混沌实验和自动编排提供了简单的自定义场景。主要包含三个组成部分:
- Controller-manager:用于计划和管理 CRD 对象的生命周期
- Chaos-daemon:在特定节点上以特权系统权限作为守护进程运行网络与 Cgroup 等
- Sidecar:一种特殊类型的容器,它由 webhook-server 动态注入到目标 Pod 中,可用于劫持应用程序容器的 I/O。
Chaos Operator 使用自定义资源定义(Custom Resource Definition,CRD)定义混沌对象。当前实现支持用于故障注入的 CRD 对象 PodChaos、NetworkChaos、IOChaos 和 TimeChaos,它们对应于以下主要操作:
- 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 错误 。
来源: 开源中国