[转帖]没 K8s 用不了 Chaos Mesh?试试 Chaosd
https://cn.pingcap.com/blog/cannot-use-chaosmesh-without-k8s-then-try-chaosd
Chaosd 是什么?
相信大家对 Chaos Mesh 已经比较了解了:支持多种类型的混沌实验,有 Dashboard web 界面直接管理实验,TiDB 使用它保障产品质量,还有小鹏汽车、网易、某银行等众多用户。这么好的工具当然想亲手试一试,动手的时候发现:没有 K8s 环境用不了!
这是因为 Chaos Mesh 是云原生的混沌工程测试平台,专门为 K8s 设计的。然而你的应用还是用物理机环境部署的,太遗憾了,有故障的时候看告警邮件吧。
请留步,试试 Chaosd?
可能你还是第一次听说 Chaosd,它是 Chaos Mesh 提供的一款混沌工程测试工具,用于在物理机环境上注入故障,并提供故障恢复功能。看它的名子是不是和 Chaos Mesh 中的组件 chaos-daemon 比较相似?是的,它正是由 chaos-daemon 演化而来,并针对物理机的特点增加了一些专门的混沌实验功能。
Chaosd 有什么优势
Chaosd 具有以下这些优点:
易用性强:输入简单的 Chaosd 命令即可创建混沌实验,并对实验进行管理。
故障类型丰富:在物理机的不同层次、不同类型上都提供了故障注入的功能,包括进程、网络、JVM、压力、磁盘、主机等,且更多的功能在不断扩展中。
支持多种模式:Chaosd 既可作为命令行工具使用,也可以作为服务使用,满足不同场景的使用需求。
说了这么多,让我们来试一试。最近我们刚发布了 v1.0.1版本,就用这个版本来简单演示一下。
Chaosd 的使用
1. 下载
首先要下载 Chaosd,执行以下命令:
curl -fsSL -o chaosd-v1.0.1-linux-amd64.tar.gz https://mirrors.chaos-mesh.org/chaosd-v1.0.1-linux-amd64.tar.gz
解压这个文件,可以看到它包含一个 chaosd 文件和一个 tools 文件夹。chaosd 是工具的入口;tools 文件夹下面包含执行混沌实验所需要的一些工具,包括 stress-ng(压力场景)、byteman(JVM 故障)、PortOccupyTool(网络故障占用端口)等。
2. 创建实验
我们以创建一个网络类型的混沌实验为例,注入故障,使服务器无法访问 chaos-mesh.org,执行以下命令:
sudo ./chaosd attack network loss --percent 100 --hostname chaos-mesh.org --device ens33
Attack network successfully, uid: c55a84c5-c181-426b-ae31-99c8d4615dbe
简单来说,这个命令的作用是:通过 ens33 网卡向 chaos-mesh.org 发送或者接收的网络包会 100% 丢失。使用 sudo 是因为该实验会修改网络规则, 需要 root 权限。
此外,别忘了保存好这个实验的 uid,用于后续的实验恢复。
3. 检查实验效果
让我们通过 ping 命令来检查是否可以正常访问 chaos-mesh.org:
ping chaos-mesh.org
PING chaos-mesh.org (185.199.109.153) 56(84) bytes of data.
^C
--- chaos-mesh.org ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1021ms
执行命令后会卡住,迟迟得不到响应,按 CTRL C 退出后可以看到 ping 的统计信息:100% packet loss。说明我们的实验确实生效了。
4. 恢复实验
运行以下命令恢复实验:
sudo ./chaosd recover c55a84c5-c181-426b-ae31-99c8d4615dbe
Recover c55a84c5-c181-426b-ae31-99c8d4615dbe successfully
恢复实验时也会修改网络规则,因此也需要使用 sudo。在执行完成后,可以再 ping chaos-mesh.org 确认网络已经恢复。
后续的规划
提高易用性 & 平台化
从上面的使用示例中可以看到,Chaosd 用起来还是挺简单的,通过命令行就可以创建实验。但是肯定有些人还不太满意:有 Dashboard web 界面能用吗? 答案是:目前还没有,但是已经在着手开发了。
我们会继续加强它的易用性,提供 Dashboard web 管理功能,不仅可以管理物理机上 Chaosd 的实验,还可以管理 Chaos Mesh 上的实验,这样就把物理机环境和 K8s 环境的混沌实验统一管理起来。在去年的 TiDB Hackathon 中我们简单做了一个 demo,架构如下: 
详细介绍可以参考 Chaos Mesh 的 Chaos Engineering as a Service 探索之路。
更多的故障注入功能
目前 Chaosd 提供了进程、网络、JVM、压力、磁盘、主机总共六大故障注入功能,但是仍然需要继续拓展。后续我们计划将 Chaos Mesh 在 K8s 环境支持的一些故障注入功能在 Chaosd 中实现,包括 HTTP、IO 等。
大家可以通过 Chaosd 的 使用文档,尝试创建一些混沌实验来体验一下。在使用过程中遇到什么问题,或者有新的需求,都可以提 issue来反馈。
[转帖]没 K8s 用不了 Chaos Mesh?试试 Chaosd的更多相关文章
- 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...
- [转帖]springboot+k8s+抛弃springcloud.eureka
springboot+k8s+抛弃springcloud.eureka https://www.cnblogs.com/lori/p/12048743.html springboot开发微服务框架一般 ...
- [转帖]在 k8s 中通过 Ingress 配置域名访问
在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...
- [转帖]在 k8s 中自动为域名配置 https
在 k8s 中自动为域名配置 https https://juejin.im/post/5db8d94be51d4529f73e2833 随着 web 的发展,https 对于现代网站来说是必不可少的 ...
- [转帖]理解k8s 的 Ingress
理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...
- 【转帖】K8S Deployment 命令
K8S Deployment 命令 https://www.cnblogs.com/Tempted/p/7831604.html 今天学习了一下 kubectl scale deployment xx ...
- [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html 当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...
- 【转帖】k8s之Deployment与service
k8s之Deployment与service 2018年08月05日 18:11:00 xiyou_pen/pen 阅读数 5894 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...
- [转帖]解决K8S 安装只有 一直提示:kernel:unregister_netdevice: waiting for eth0 to become free. Usage count = 1 的方法
Centos7 终端报Message from syslogd :kernel:unregister_netdevice https://www.jianshu.com/p/96d7e2cd9e99 ...
- 腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用
Linkerd 是 Kubernetes 的服务网格. 它通过为您提供运行时调试(runtime debugging).可观察性(observability).可靠性(reliability)和安全性 ...
随机推荐
- 码农的转型之路-PLC异地组网与远程控制
PLC异地组网与远程控制,需求是基于园子认识的朋友提供,大体是实现PLC多个局域网异地组网,并实现远程控制.大屏展示.手机端控制.预警推送等功能.其他就是可以方便二次开发界面,以满足不同客户的需求. ...
- RocketMQ 的基本使用
RocketMQwiki是一个分布式消息和流数据平台,具有低延迟.高性能.高可靠性.万亿级容量和灵活的可扩展性.RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日 ...
- 18、Scaffold 布局组件
Scaffold 是一个非常重要的布局组件,它提供了一个常见的应用程序结构布局,包含了许多基础的 UI 元素和交互方式. Scaffold 组件主要由以下几个部分组成: AppBar:用于显示在页面顶 ...
- position的属性值
(fixed的父元素永远是浏览器窗口,不会根据页面滚动而改变位置:absolute的父元素是可以设置的,他会永远跟随父元素的位置的改变而改变.) 1.position: relative;相对定位 不 ...
- SVN工具基础知识
SVN工具基础知识 1.简介 1.全称Subversion,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现 在发展成为 Apache 软 ...
- 详解SQL优化必备:并行执行框架和执行计划
摘要:在关系型数据库中,优化器是数据库的核心组件之一,由于一些列因素都会影响语句的执行,优化器综合权衡各个因素,在众多的执行计划中选择认为是最佳的执行计划. 本文分享自华为云社区<华为云Gaus ...
- 移动应用中的第三方SDK隐私合规检测,早知道
摘要: 在移动应用隐私合规检测中,第三方SDK隐私声明由于其展现位置展现形式的多样性,自动化提取与解析是比较困难的任务. 本文分享自华为云社区<移动应用中的第三方SDK隐私合规检测>,作者 ...
- SQL优化老出错,那是你没弄明白MySQL解释计划
摘要:数据库的解释计划阐明了sql的执行过程,展示了执行的细节,只要根据数据库告诉我们的问题按图索骥的分析就可以. 本文分享自华为云社区<轻松搞懂mysql的执行计划,再也不怕sql优化了> ...
- 用 Java?试试国产轻量的 Solon v1.10.1
相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...
- Jmeter对各种接口类型的测试
JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...