[kube 022] 混沌测试框架 -Litmus
![[kube 022] 混沌测试框架-Litmus](https://static001.geekbang.org/infoq/7e/7e6352d11c86467f4cd2bf65dbf7555f.png)
[kube 022] 混沌测试框架-Litmus
Litmus是进行云原生混沌工程的开源工具集。Litmus提供了一些工具来协调Kubernetes上的混乱情况,以帮助SRE发现其部署中的弱点。SRE最初在staging环境中使用Litmus进行混乱的实验,最终在production中使用它们来发现错误和漏洞。修复弱点可提高系统的弹性。
Litmus采用云原生方法来创建,管理和监视混乱。使用以下Kubernetes Custom Resource Definitions (CRDs)编排混沌:
ChaosEngine:将
Kubernetes应用程序或Kubernetes节点链接到ChaosExperiment的资源。Litmus的Chaos-Operator监视ChaosEngine,然后调用Chaos-ExperimentsChaosExperiment:用于分组混沌实验的配置参数的资源。当
ChaosEngine调用实验时,ChaosExperiment CR由operator创建。ChaosResult:用于保存混沌实验结果的资源。
Chaos-exporter读取结果并将度量导出到已配置的Prometheus服务器中。
混沌实验位于hub.litmuschaos.io上。它是应用程序开发人员和云厂商共享混乱实验的中央枢纽,以便他们的用户可以使用它们来提高应用程序在生产中的弹性。
在本文中,我们将运行一些混乱的实验来验证系统的弹性。
准备工作
请准备好一个Kubernetes集群以及链接该集群的kubectl和helm。
操作记录
主要分为以下过程:
安装Litmus Operator
使用Chaos Charts
创建Pod删除混沌实验
查看混沌的实验结果
查看混沌的实验日志
安装 Litmus Operator
让我们执行以下步骤在集群中安装Litmus:
安装 litmus-operator-latest:
确认 Litmus Chaos Operator 的 pod 运行状态:
确认 chaos CRDs:
确认 chaos api resources:
确认 chaos clusterrole 和 chaos clusterrolebinding:
现在,我们在集群中已经正常运行了Litmus Chaos Operator。接下来,我们需要部署混乱的实验来测试集群资源的弹性。
使用 Chaos Charts
Litmus Chaos Charts用于安装混沌实验包。混沌实验包含实际的混沌细节。让我们执行以下步骤为Litmus Operator安装Litmus Chaos Charts:
在浏览器上打开
https://hub.litmuschaos.io上的Chaos Charts for Kubernetes,然后在搜索字段中搜索generic, 并点击Generic Chaos chart。点击
Install All Experiments按钮。复制下载安装链接。
先创建一个测试的命令空间,如
nginx
安装
chaos experiment:
确认
chaos experiments状态:
通用混沌图表下提供了混沌实验方案,如Pod删除,网络延迟,网络丢失和容器销毁。也可以安装或构建自己的特定于应用程序的混沌图以运行特定于应用程序的混沌。
创建 Pod 删除混沌实验
我们将部署一个示例应用程序nginx,并对该应用程序进行Kubernetes混沌实验。让我们执行以下步骤来测试pod删除对集群的影响:
创建
nginx.yaml并使用kubectl部署:
确认
Pod的运行状态:
添加注释,应用程序必须带有注释
litmuschaos.io/chaos="true"。作为安全措施,以及作为减小爆炸半径的一种方法,chaos operator会在应用程序上调用混沌实验之前检查此注释。
注意:
Litmus
支持对deployments,statefulsets和daemonsets进行混乱。
设置
Service Account和rbac:
查看实验
CRs和chaos参数:
运行
Chaos
查看混沌的实验结果
混沌实验是作为Kubernetes作业执行的,受影响的豆荚将由混沌执行者根据实验定义删除。
让我们执行以下步骤来回顾我们的混沌实验的结果:
观看正在进行的实验:
获取结果列表:
查看
nginx-chaos-pod-delete实验结果:
查看混沌的实验事件
可以查看指定命名空间nginx下的events来了解和还原我们的混沌实验:
更多内容
Litmus documentation: https://docs.litmuschaos.io/
Chaos Charts for Kubernetes: https://hub.litmuschaos.io/
Chaoskube project: https://github.com/linki/chaoskube
Pumba project: https://github.com/alexei-led/pumba
版权声明: 本文为 InfoQ 作者【zbyufei】的原创文章。
原文链接:【http://xie.infoq.cn/article/a79f029f0a0f6888fda73bb11】。文章转载请联系作者。











评论