ChaosBlade:从零开始的混沌工程(二)
前言
在上篇文章中,我们介绍了混沌工程以及 ChaosBlade。从本篇开始,从 ChaosBlade 的安装部署,到实验的创建销毁,在实践的角度,一步步的完成各种混沌实验,深入认识和使用混沌工程。
ChaosBlade-Operator
ChaosBlade-Operator[1] 是 ChaosBlade 的 Kubernetes 平台实验场景实现。将混沌实验通过 Kubernetes 标准的 CRD 方式定义,用户可以像定义 Deployment 或 StatefulSet 那样定义 ChaosBlade 实验,只要对 kubectl
和 Kubernetes 对象有所了解,就可以轻松的创建、更新和删除实验场景;同时也可以通过 chaosblade cli 工具来操作实验场景。
安装
ChaosBlade-Operator 需要使用 Helm 安装,进入 release 页面[2] 下载安装包(ChaosBlade 还提供了阿里云 OSS 的下载地址,提升国内下载速度)。
使用 Helm 3 安装:
ChaosBlade-Operator 启动后将会在每个节点部署一个 chaosblade-tool
Pod 和一个 chaosblade-operator
Pod,如果都运行正常,则安装成功。上面设置 --set webhook.enable=true
是为了 Pod 文件系统 I/O 故障实验,如果不需要进行该实验,则无需添加该设置。
快速开始
下面就以 Pod 网络延迟实验为例,展示如何使用 ChaosBlade-Operator。
实验准备
实验前需要先准备实验对象,这里使用 guestbook[3] 应用。
安装
同样使用 Helm 3
默认的 Service 类型为 LoadBalancer
,这里为了方便访问设置为了 NodePort
。
开始实验
实验目标:对 chaosblade 命名空间中,对 redis-master-68857cd57c-dzbs9
Pod 的本地 6379 端口添加 3000 毫秒访问延迟,延迟时间上下浮动 1000 毫秒。
实验 yaml 配置
将其保存为 delay_pod_network_by_names.yaml
并执行命令,开始实验:
查看实验状态
执行 kubectl get blade delay-pod-network-by-names -o json
命令,查看实验状态:
可以看到实验成功创建了。
观测结果
可以看到结果符合预期。
停止实验
执行命令:kubectl delete -f delay_pod_network_by_names.yaml
或者直接删除 blade 资源:kubectl delete blade delay-pod-network-by-names
结语
本篇我们讲解了如何部署 ChaosBlade-Operator 并进行了简单的实验,可以看到在云原生场景下,ChaosBlade 依旧有着简单的操作方式,多种实验场景,并对混沌实验模型进行了标准化实现。很友好的将混沌实验模型与 Kubernetes 声明式设计结合在一起,依靠混沌实验模型便捷开发场景的同时,又可以很好的结合 Kubernetes 设计理念。
引用链接
[1]
ChaosBlade-Operator: https://github.com/chaosblade-io/chaosblade-operator
[2]
release 页面: https://github.com/chaosblade-io/chaosblade-operator/releases
[3]
guestbook: https://github.com/cloudnativeapp/guestbook?spm=5176.2020520152.0.0.7c5f16ddH8myx6
版权声明: 本文为 InfoQ 作者【郭旭东】的原创文章。
原文链接:【http://xie.infoq.cn/article/30b66541344905a1f9bac079d】。文章转载请联系作者。
评论