首页 > 其他分享 >混沌工程之ChaosMesh使用之一模拟CPU使用率

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

时间:2023-04-04 10:09:16浏览次数:36  
标签:0.0 chaos Chaos ChaosMesh 使用率 root CPU

今天来玩一下混沌工程的开源工具之一的ChaosMesh。ChaosMesh的目标是要做一个通用的混沌测试工具。

ChaosMesh是要和k8s结合使用的,其中用了云原生的能力。


 Chaos Mesh 的基本工作流原理图:

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

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

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


 Chaos Mesh 功能点

混沌工程之ChaosMesh使用之一模拟CPU使用率_原理图_02

知道这些大概的内容之后,我们来具体使用一下。


前提条件:k8s集群(包括helm3)

 Chaos Mesh 安装

Chaos Mesh的安装比较简单,步骤如下:

[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

检查一下安装结果:

[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]#

正常生成了几个pod。


你要是有兴趣也可以安装ChaosMesh提供的一个简单的试验示例。直接执行如下命令即可。

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


请注意:这个示例默认安装到default的namespace。

 Chaos Mesh 访问

  1. 查看chaosmesh dashboard的nodeport端口,然后访问ip:port如下:

混沌工程之ChaosMesh使用之一模拟CPU使用率_原理图_03

这里是提供token生成的步骤。你如果要对整个k8s进行操作,可以选择cluster scoped,并且role可以选择manager,在下面就会生成 对应的RBAC内容,然后直接按步骤apply就行了。


2. 登录之后看到如下界面:

混沌工程之ChaosMesh使用之一模拟CPU使用率_原理图_04


 Chaos Mesh 使用之一模拟CPU负载

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

混沌工程之ChaosMesh使用之一模拟CPU使用率_原理图_05

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

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

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

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

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

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消耗掉。


本篇就写到这里吧,后面没事接着整理,在整理这些东西的过程中,我觉得需要的技术栈比性能工程要小很多,所以轻松+愉快地就可以做到了。可见技术的基础知识体系是多么重要。


给你留两个思考题:


1. 在混沌工程中,用这样的逻辑模拟CPU使用率,可以覆盖什么样的生产场景?又不能覆盖什么样的生产场景?

2. 在能覆盖的场景中,由于是新启动了一个进程,那在系统级的异常反应,有什么特点?


标签:0.0,chaos,Chaos,ChaosMesh,使用率,root,CPU
From: https://blog.51cto.com/u_15181572/6167895

相关文章

  • 19c 和11g临时表空间使用率
    19c临时表空间使用率(实际正在使用的)selecttotal_extents,free_extents,used_extents,added_extentsfromv$sort_segment;  selectcasewhenexists(select*fromv$tempseg_usage)thenround((selectsum(a.blocks)*8192/sum(b.bytes)fromv$tempseg_usagea,dba_tem......
  • 为什么是至强Xeon处理器当做服务器CPU?他和普通台式CPU的区别
    为什么是至强Xeon处理器当做服务器CPU?他和普通台式CPU的区别相同的普通台式机CPU架构,Xeon处理器是高度受欢迎由于一些高级特性,比如更高的核心价值,支持更多的RAM,大的缓存内存和机器检查体系结构能够提供企业级的可靠性,可用性和可服务性特征负责处理硬件异常。现在,我们将回答......
  • 性能分析之dubbo性能参数导致单cpu高
    今天记录一个小问题。问题不大,也没什么分析的逻辑可以讲的。但是想着比较典型,所以就写一写。某年某月的某一天,就像一张破碎的脸......不对,串台了。这一日,一个朋友发来个问题。听起来是个问题。一个线程忙,这种情况应该比较好处理吧。再看一下CPU的状态是什么样,记住这一步是看进程......
  • Python 多线程死循环挂服务器时CPU占用过高问题
    我的某个程序里有这样一段代码,把程序挂在服务器爬取信息,因此用到死循环,同时又需要进行三个任务,于是使用了多线程。刚开始在死循环部分并没有加time.sleep(60),于是它一直在for循环,同时会进行.is_alive()(不确定这个消耗大不大),但总之这使得CPU占用过高。而加上sleep之后,直接就降下......
  • 《程序是怎样跑起来的》读书笔记1——对程序员来说CPU是什么
    一丶什么是程序程序是指令和数组的组合体,如:print("你好世界"),其中print是指令,你好世界是数据。CPU能直接识别和执行的只有机器语言,使用C,java这种高级语言编写的程序需要编译转换后才可以运行。二丶CPU的内部结构CPU即中央处理器,相当于计算机的大脑,内部由许多晶体管构成,负责解......
  • 一个循环采集CPU的etl日志的脚本
    一个循环采集CPU的etl日志的脚本mdD:\\tempsetTargetDriveEtl=D:\\temp@echooffSET/A"index=1"SET/A"count=10":whileif%index%leq%count%(echoThevalueofindexis%index%wmicprocesswherename="wprui.exe"......
  • Windows 环境以 CPU 运行 stable diffusion
    前言 stable-diffusion-webui要求的Python版本是3.10.6,本机还是几年前装的3.10.0,为了避免处理更多幺蛾子,直接升级到3.10.6,还好之前就是3.10,可以直接升级。还有一个好处就是不用安装conda或者miniconda,Python虚拟环境直接就是3.10.6。其实3.10其他小版本的环......
  • CPU内部的奥秘:代码是如何被执行的?
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:景明我们以一段C代码为例,来看一下代码被编译成二进制可执行程序之后,是如何被CPU执行的。在这段代码中,只是做了非常简单的加法操作,......
  • [百度贴吧]部分CPU的SPEC2006int 结果
    这些测试成绩基本上是本人自己测试的结果。下表中有来自spec官网的两个成绩,因为测试年份较早,系统环境和编译器都较老,测试成绩本人实测的还差,所以仅作为参考。部分测试启用......
  • cpu 优先级
    Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是CPU在一个时钟周期内只能运算一条指令(现在的CPU采用了多线程、多核心技术,所以在一个时钟周......