2 月 16 日,CNCF 技术监督委员会 (TOC) 宣布 Kubernetes 混沌工程平台 Chaos Mesh 成为 CNCF 的孵化项目。
Chaos Mesh 最初是为开源分布式数据库 TiDB 的测试平台创建的,作为通用的混沌工程平台,在 Kubernetes 环境中协调混沌实验。该平台通过帮助识别潜在的故障点,有助于确保 Kubernetes 基础设施能够承受意外的中断。目前,Chaos Mesh 已经在 GitHub 上开源,拥有 4.5K stars,项目地址为:https://github.com/pingcap/chaos-mesh。
据悉,自 2020 年 7 月被 CNCF 沙箱接受以来,Chaos Mesh 已经发布了两个主要版本(v1.0 和 v2.0)和 30 个小版本,在可观察性、功能和安全性方面带来了显著的改进。
Chaos Mesh 的基本工作流原理图
据官方介绍,Chaos Mesh 的亮点功能包括:
混沌仪表板,通过 Web UI 管理和监控混沌实验的可视化工具。
原生的工作流引擎,定义混沌场景来管理一组混沌实验和应用程序的状态检查。
更强大和全面的混沌模拟,具体包括 StressChaos、DNSChaos、JVMChaos、AWSChaos、GCPChaos、HTTPChaos 等。
基于 Kubernetes RBAC 权限策略的授权机制。
根据 Chaos Mesh 维护者殷成文的介绍,Chaos Mesh 的整体工作流如下:
用户通过 YAML 文件或是 Kubernetes 客户端往 Kubernetes API Server 创建或更新 Chaos 对象。
Chaos-mesh 通过 watch API Server 中的 Chaos 对象创建更新或删除事件,维护具体 Chaos 实验的运行以及生命周期,在这个过程中 controller-manager、chaos-daemon 以及 sidecar 容器协同工作,共同提供错误注入的能力。
Admission-webhooks 是用来接收准入请求的 HTTP 回调服务,当收到 Pod 创建请求,会动态修改待创建的 Pod 对象,例如注入 sidecar 容器到 Pod 中。第 3 步也可以发生在第 2 步之前,在应用创建的时候运行。
Chaos Mesh 采用 Kubernetes 架构,使用 Kubernetes 的 Custom Resource Definitions (CRD) 来定义混沌对象。它还可以与 Argo、Grafana 和 Prometheus 等其他云原生项目紧密集成,使混沌体验更易于管理、可定制和可观察。
评论