介绍
chaosblade 是一款简单易用、功能强大的混沌实验工具,阿里团队开源项目
OSCHINA 公布 2019 年度最受欢迎中国开源软件
安装部署
安装包下载地址:https://github.com/chaosblade-io/chaosblade/releases (chaosblade-0.4.0-linux-amd64.tar.gz)
解压后目录树:
├── bin
│ ├── chaosblade-cplus-spec.yaml
│ ├── chaosblade-docker-spec-0.4.0.yaml
│ ├── chaosblade-jvm-spec-0.4.0.yaml
│ ├── chaosblade-k8s-spec-0.4.0.yaml
│ ├── chaosblade-os-spec-0.4.0.yaml
│ ├── chaos_burncpu
│ ├── chaos_burnio
│ ├── chaos_burnmem
│ ├── chaos_changedns
│ ├── chaos_dlnetwork
│ ├── chaos_dropnetwork
│ ├── chaos_filldisk
│ ├── chaos_killprocess
│ ├── chaos_stopprocess
│ └── tools.jar
├── blade
└── lib
├── cplus
│ ├── chaosblade-exec-cplus.jar
│ └── script
│ ├── shell_break_and_return_attach.sh
│ ├── shell_break_and_return.sh
│ ├── shell_check_process_duplicate.sh
│ ├── shell_check_process_id.sh
│ ├── shell_initialization.sh
│ ├── shell_modify_variable_attch.sh
│ ├── shell_modify_variable.sh
│ ├── shell_remove_process.sh
│ ├── shell_response_delay_attach.sh
│ └── shell_response_delay.sh
└── sandbox
├── bin
│ └── sandbox.sh
├── cfg
│ ├── sandbox-logback.xml
│ ├── sandbox.properties
│ └── version
├── example
│ └── sandbox-debug-module.jar
├── install-local.sh
├── lib
│ ├── sandbox-agent.jar
│ ├── sandbox-core.jar
│ └── sandbox-spy.jar
├── module
│ ├── chaosblade-java-agent-0.4.0.jar
│ └── sandbox-mgr-module.jar
└── provider
└── sandbox-mgr-provider.jar
======
其中 blade 是可执行文件,即 chaosblade 工具的 cli,混沌实验执行的工具。执行 ./blade help 可以查看帮助
嫌麻烦可以设置全局命令: sudo ln -s
使用方法
1.CLI命令支持,直接执行balde命令即可
2.http服务接口支持,前提开启blade server模式,blade 程序会对外暴露 web 服务,上层可通过 http 请求调用,请求格式是 chaosblade?cmd=具体命令,例如执行 CPU 满载,则请求是 chaosblade?cmd=create%20cpu%20fullload
blade server start --port 8080
success, listening on 8080
blade server stop
{"code":200,"success":true,"result":"pid is 12619"}
具体使用场景,参见使用手册,写的非常详细
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/
避坑指南
基于公司内部的Paas基础服务上进行鲁棒性测试,需要 k8s组件包ChaosBlade Operator
安装包下载地址:https://github.com/chaosblade-io/chaosblade-operator/releases
注意我们的Paas服务helm版本v2版本,所以下载v2版本(不是后缀带v3的包)
安装命令
helm install --namespace kube-system --name chaosblade-operator chaosblade-operator-0.4.0.tgz
删除pod操作
#通过blade命令
blade create k8s pod-pod delete --names [pod名] --namespace [域名] --kubeconfig [config配置文件]#一般默认在目录~/.kube/config
#通过http接口操作
【GET】http://ip:port/chaosblade?cmd=create%20k8s%20pod-pod%20delete%20--names%20[pod名]%20--namespace%20[域名]%20--kubeconfig%20[config配置文件]
#注意接口调用的话需要把shell命令里面的空格全部转义成%20
#接口调用cmd后面参数不要加blade,直接复用blade后面的参数【新人经常遇到】