写点什么

Kubernetes 上的混沌工程:Chaos Mesh 1.0 GA 发布

  • 2020 年 10 月 31 日
  • 本文字数:1343 字

    阅读完需:约 4 分钟

Kubernetes上的混沌工程:Chaos Mesh 1.0 GA发布

Chaos Mesh 1.0 于 2020 年 7 月成为 CNCF 沙箱项目,随后,Chaos Mesh 团队宣布了其通用可用性(GA)。Chaos Mesh 是一个用于在 Kubernetes 应用程序上进行混沌工程实验的工具。


Chaos Mesh 使用标准的 CDR 进行对象定义,还提供了一个用于管理和监控混沌工程实验的仪表盘。仪表盘可用于“定义混沌实验的范围、指定混沌注入的类型、定义调度规则,并观察混沌实验的结果”。Chaos Mesh 还提供了一个 Grafana 插件,可以查看混沌工程实验的实时指标。这个工具涵盖了“Pod、网络、系统 I/O 和内核”的故障注入。


InfoQ 采访了 Chaos Mesh 的维护者和全职开发人员 Keao Yang,了解更多的信息。


混沌实验可以在 Chaos Mesh 中使用 YAML 来指定。可以注入的故障类型包括 Pod 故障、网络分区故障、虚拟内存压力源、通过系统调用修改系统时间以及 I/O 延迟。Chaos Mesh 还可以用于模拟跨多个数据中心的网络延迟。Chaos Mesh 主要包含了两个运行组件——一个中央控制器管理器和一个 DaemonSet,它在每个节点上运行一个 Pod,作为代理。为了限制测试中受影响的应用程序,并防止混沌实验影响关键应用程序,它提供了名称空间级别的权限和受保护的名称空间。



图像来源:https://raw.githubusercontent.com/chaos-mesh/chaos-mesh/master/static/chaos-mesh.svg


Chaos Mesh 是从一个针对分布式数据库TiDB的测试框架发展而来的。Yang 解释说:“我们相信我们以前的经验(关于 TiDB 测试)不仅让 TiDB 更加稳定,这也是我们创建 Chaos Mesh 的原因。Chaos Mesh 生来就是通用的,被设计成可以在任何一个云平台上运行,也可以用来测试云端的任何一个软件。”


Yang 说,Chaos Mesh 不依赖特定的云特性。它“只使用了 Kubernetes API 和 Linux 内核的基本功能”,并补充道:


根据用户的报告,Chaos Mesh 可以很自然地在裸机集群和大多数云平台上运行。但是,对于一些云平台(如 OpenShift),需要特殊的特权设置。我们正在编写文档来记录这些配置。


在回答 Chaos Mesh 如何在内部注入故障时,Yang 解释说:


具体实现取决于“故障”类型。有一些很简单,例如,Chaos Mesh 使用 Kubernetes API 来杀死 Pod 并实现 PodChaos。对于其他一些类型的故障,Chaos Mesh 会向相关节点上的守护进程发送 grpc 请求,守护进程会进入相应的 network/pid/mnt/…命名空间和 cgroup,并运行一些命令(如 iptables)来注入故障。


此外,Yang 还说,“在运行时注入故障和限制混沌的范围可能是一个挑战。例如,在 Linux 5.6 之前没有时间名称空间这样的东西,而且每个进程都共享同一个时钟。对于这种混沌,实现并不是那么简单,而且真的很难用一句话说清楚”。另一篇文章描述了 TimeChaos 的实现——它模拟时钟偏差。


关于 Chaos Mesh 的近期路线图,Yang 说:


我们正试图将 Chaos Mesh 扩展为一个“平台”,这意味着它有望能够编排混沌实验,定义复杂的混沌场景,并为混沌生成报告。另一个重要的特性是支持仪表盘的访问控制。


Kubernetes 上的其他混沌工程框架有LitmusGremlinKubeInvaders。在写这篇文章时,Chaos Mesh 需要 Kubernetes v 1.12 或更高版本,可以使用提供的 shell 脚本或 Helm Chart 来安装。Chaos Mesh 的源代码可以在GitHub上找到。


原文链接


Chaos Engineering on Kubernetes : Chaos Mesh Generally Available with v1.0


2020 年 10 月 31 日 08:001395

评论

发布
暂无评论
发现更多内容

Sentinel 常用流控算法

Z

sentinel 流控算法 服务监控 服务降级 流控

17. 关于超人工智能来临,霍金的忧虑

数据与智能

人工智能

MySQL事务学习笔记

六维

MySQL 9月日更

JavaScript 进阶(下)

Augus

JavaScript 9月日更

架构实战营模块三作业

michael

#架构实战营

“妈我不想去上课!”“不行你是老师!”

梦想橡皮擦

9月日更

链路压测中如何记录每一个耗时的请求

FunTester

性能测试 接口测试 测试框架 FunTester 链路压测

hutool如何实现数据导出到Excel

卢卡多多

hutool 数据导出 9月日更

网络攻防学习笔记 Day136

穿过生命散发芬芳

vpn 9月日更 恶意代码

Supervisor 基础配置

耳东@Erdong

Supervisor 9月日更

命令行如何执行jar包里面的方法

FunTester

性能测试 反射 接口测试 测试框架 FunTester

推荐一个Mac端的截图工具

IT蜗壳-Tango

9月日更

linux系列之:告诉他,他根本不懂kill

程序那些事

Linux 命令 程序那些事 kill

测试需求分析

刘帅强

在线JSON转sarcastic工具

入门小站

工具

枚举在 Golang 中的实现

baiyutang

Go 语言 9月日更

【LeetCode】寻找峰值Java题解

Albert

算法 LeetCode 9月日更

【Flutter 专题】46 图解新的状态管理 Provider (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

雪花算法,什么情况下发生 ID 冲突?

是龙台呀

Java lua redis 雪花算法

镜子-或许我们也和Pod一样生活在虚拟世界

Lance

从特岗教师的需求金字塔,重新理解乡村、教育和科技

脑极体

XLSX海量数据复杂填充解决方案

九叔(高翔龙)

中间件 EasyExcel Apache POI java核心

怎样才能写好前端页面,css书写顺序和布局真的有那么重要吗

前端史塔克

CSS html 大前端 结构

算法裁员,释放出了哪些“恶之花”?

脑极体

linux之iconv命令

入门小站

Linux

架构实战训练营|作业|模块3

Frode

架构实战

产品设计的几个原则

石云升

产品思维 产品思考 9月日更

WEB全屏API简介及示例

devpoint

web api 9月日更

聊一聊芯片上电复位和掉电检测

不脱发的程序猿

嵌入式 硬件开发 芯片上电 上电复位 掉电检测

针对各种指标数据如何选择合适的算法?

云智慧AIOps社区

技术 算法 数据 智能运维 指标

微前端拆分实践

Teobler

大前端 服务拆分

Kubernetes上的混沌工程:Chaos Mesh 1.0 GA发布_容器_Hrishikesh Barua_InfoQ精选文章