在现实生活中, 汽车领域有一套安全, 性能测试平台和机构,在云原生领域PiingCAP公司在2019年12月31日开源了一个云原生的混沌测试平台Chaos Mesh
,Chaos Mesh
提供在 Kubernetes 平台上进行混沌测试的能力.在我们排查问题的过程中经常需要模拟各种场景,例如,podkil,网络延迟,丢包, cpu,内存压测,有了这个工具就可以非常方便的模拟各种场景 本篇文章主要给大家介绍下原理,在TKE中如何部署,以及简单的使用。目前支持以下类型的测试:
Chaos Mesh 中使用 CRD 来定义 chaos 对象,在 Kubernetes 生态中 CRD 是用来实现自定义资源的成熟方案,又有非常成熟的实现案例和工具集供我们使用,这样我们就可以借助于生态的力量,避免重复造轮子。并且可以更好的融合到 Kubernetes 生态中。
目前在 Chaos Mesh 中设计了三个 CRD 对象,分别是 PodChaos、NetworkChaos 以及 IOChaos,从命名上就可以很容易的区分这几个 CRD 对象分别对应的错误注入类型。
以 PodChaos 为例:
spec:
action: pod-kill
mode: one
selector:
namespaces:
- tidb-cluster-demo
labelSelectors:
"app.kubernetes.io/component": "tikv"
scheduler:
cron: "@every 2m"
架构图如下:
ChaosMesh 工作原理
基本工作流程:
首先要拥有一套腾讯云TKE环境, 然后获取到kube-config后通过helm或者shell脚本进行部署.
helm repo add chaos-mesh https://charts.chaos-mesh.org
成功添加仓库之后, 然后通过命令行查看
helm search repo chaos-mesh
第二步 创建自定义类型
curl -sSL https://mirrors.chaos-mesh.org/v1.0.1/crd.yaml | kubectl apply -f -
第三步 安装Chaos Mesh
kubectl create ns chaos-testing
helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set dashboard.create=true --set chaosDaemon.hostNetwork=true
注意: 1. dashboard.create=true 开启dashboard, 2. chaosDaemon.hostNetwork=true 如果不开启在执行任务的时候会报tcp连接被拒绝.
curl -sSL https://mirrors.chaos-mesh.org/v1.0.1/install.sh | bash -s -- --host-network
kubectl get pods --namespace chaos-testing -l app.kubernetes.io/instance=chaos-mesh
预期输出如下:
~ kubectl get pods --namespace chaos-testing -l app.kubernetes.io/instance=chaos-mesh 8s 四 11/ 5 12:35:06 2020
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-6f779f755f-kn6tg 1/1 Running 0 52m
chaos-daemon-6rz8m 1/1 Running 0 52m
chaos-daemon-cgktm 1/1 Running 0 52m
chaos-daemon-drvhz 1/1 Running 0 52m
chaos-daemon-llp5h 1/1 Running 0 52m
chaos-dashboard-86d489c8f-fkt66 1/1 Running 0 52m
~
端口为:2333
访问service 的公网ip:2333 端口:
选测命名空间和实例
正在执行
然后可以在TKE控制台或者命令行进入到pod中查看内存状态。
本片文章简单介绍了chaosmesh在TKE中的部署以及基本使用, 接下来的文章会使用这个工具去模拟场景进行测试介绍。
文中的部分图片和内容参考pingcap公司文档。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。