混沌工程之ChaosMesh使用之一模拟CPU使用率

1.概述

混沌工程之springboot集成chaosmonkey
介绍了Spring工程集成混沌工程,这篇文章介绍使用混沌工具模拟CPU使用率异常测试。

2. Chaos Mesh原理介绍

2.1.工作原理

在这里插入图片描述

从原理图上可以看出大概的工作流程:

  • 1.用户用yaml文件或k8s客户端创建更新Chaos对象。
  • 2.Chaos-mesh通过watch api server中的chaos对象创建更新或删除事件,由controller-manager/chaos-daemon和sidecar协作提供注入能力。
  • 3.admission-webhooks用来接收http回调,提供状态信息。

2.2.Chaos Mesh 功能点

在这里插入图片描述

3. Chaos Mesh 安装

Chaos Mesh使用的前提条件是在K8s集群环境上,且包含helm3。

3.1.安装步骤

1.安装命令

[root@s5 ChaosMesh]# helm repo add chaos-mesh https://charts.chaos-mesh.org
[root@s5 ChaosMesh]# kubectl create ns chaos-testing
[root@s5 ChaosMesh]# helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing
2.检查安装结果

查看下面创建的几个pod全部status状态全部Running


[root@s5 ChaosMesh]#    kubectl get pods --namespace chaos-testing -l app.kubernetes.io/instance=chaos-mesh
NAME                                        READY   STATUS    RESTARTS   AGE
chaos-controller-manager-58bc5ff9d8-bvwht   1/1     Running   0          99s
chaos-daemon-5bzjd                          1/1     Running   0          99s
chaos-daemon-jjtnb                          1/1     Running   0          99s
chaos-dashboard-5878548c46-rnz47            1/1     Running   0          99s
[root@s5 ChaosMesh]#

3.2. Chaos Mesh提供的简单安装方式

你要是有兴趣也可以安装ChaosMesh提供的一个简单的试验示例。直接执行如下命令即可。
请注意:这个示例默认安装到default的namespace。


[root@s5 ChaosMesh]# curl -sSL https://mirrors.chaos-mesh.org/v1.2.1/web-show/deploy.sh | bash

3.3. Chaos Mesh 访问

  • 查看chaosmesh dashboard的nodeport端口,然后访问ip:port如下
    在这里插入图片描述
    这里是提供token生成的步骤。你如果要对整个k8s进行操作,可以选择cluster scoped,并且role可以选择manager,在下面就会生成 对应的RBAC内容,然后直接按步骤apply就行了。

  • 操作界面

在这里插入图片描述

4. Chaos Mesh 使用之一模拟CPU负载

  • 1.点击NEW EXPERIMENT,选择STRESS TEST(注意哦,这里可不是指的性能测试中的概念)。

在这里插入图片描述

  • 2.输入个CPU worker数量以及CPU负载百分比(注意,这里纯是指CPU使用率,和chaosblade/chaostoolkit的逻辑没有本质的区别)。然后点击提交。

  • 3.紧接着选择试验目标。这里也和其他的混沌工具一样,使用的是label_selector。然后点两次提交。

在这里插入图片描述

  • 4.然后到相应的POD所在的Worker上查看CPU使用率,即可得到如下结果。

在这里插入图片描述

  • 5.到相应的worker中查看进程,可以看到如下信息

top - 02:38:38 up 35 days, 12:33,  0 users,  load average: 5.07, 4.08, 2.55
Tasks:   7 total,   1 running,   6 sleeping,   0 stopped,   0 zombie
%Cpu0  : 29.2 us,  3.0 sy,  0.0 ni, 67.4 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu1  : 34.0 us,  4.4 sy,  0.0 ni, 61.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:   8008964 total,  7834456 used,   174508 free,    32984 buffers
KiB Swap:        0 total,        0 used,        0 free.  1203140 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                   
   11 root      20   0   59088   3980   1096 S  45.3  0.0   7:45.77 stress-ng-cpu                                                                                                                                                             
    1 root      20   0    4436    652    548 S   0.0  0.0   0:00.00 sh                                                                                                                                                                        
    6 root      20   0   17984   1448   1164 S   0.0  0.0   0:00.00 run.sh                                                                                                                                                                    
    7 root      20   0   41508   2500   1476 S   0.0  0.0   0:03.83 redis-server                                                                                                                                                              
   10 root      20   0   58444   3864   3512 S   0.0  0.0   0:00.00 stress-ng                                                                                                                                                                 
   12 root      20   0   19356   3148   1488 S   0.0  0.0   0:00.01 bash                                                                                                                                                                      
   34 root      20   0   19896   1396   1004 R   0.0  0.0   0:00.00 top  

可以看到这个工具是直接在worker中启动了一个叫stress-ng-cpu的进程。通过这个名字,我们就能理解,这就是用stress-ng这个工具启动一个进程。

这个逻辑和chaostoolkit、chaosblade也是一样的逻辑,无非就是在worker中启动一个新的进程,把CPU消耗掉。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐