hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

面向云原生的浑沌工程东西-ChaosBlade

2019-11-18杂谈搜奇网32°c
A+ A-

作者 | 肖长军(穹谷)阿里云智能奇迹群手艺专家  

导读:跟着云原生体系的演进,怎样保障体系的稳固性遭到很大的应战,浑沌工程经由过程反软弱头脑,对体系注入毛病,提早发明体系题目,提拔体系的容错才能。ChaosBlade 东西能够经由过程声明式设置实行浑沌试验,简朴高效。本文将会重点引见 ChaosBlade 以及云原生相干的试验场景实践。

ChaosBlade 引见

ChaosBlade 是阿里巴巴开源的一款遵照浑沌试验模子的浑沌试验实行东西,具有场景雄厚度高、简朴易用等特性,而且能够很轻易的扩大试验场景,开源后不久就被到场到 CNCF Landspace 中,成为主流的一款浑沌东西。

试验场景

现在支撑的试验场景以下:

  • 基本资本场景:CPU 负载、内存占用、磁盘 IO 负载、磁盘占用、收集耽误、收集丢包、收集屏障、域名不可接见、shell 剧本改动、杀历程、历程 Hang、机械重启等;

  • 运用效劳场景:支撑 Java 运用和 C++ 运用内的试验场景。Java 的场景组件雄厚,比方支撑 Dubbo、RocketMQ、HttpClient、Servlet、Druid等,而且支撑编写 Java 或 Groovy 剧本完成庞杂的试验场景;

  • 容器效劳场景:支撑 Kubernetes 和 Docker 效劳,包括 node、pod 和 container 三种资本的试验场景,比方 Pod 收集耽误、丢包等。

浑沌试验模子

以上一切的试验场景都遵照浑沌试验模子,此模子共分为四层,包括:

  • Target:试验靶点。指试验发作的组件,如容器、运用框架(Dubbo、Redis)等;
  • Scope:试验实行的局限。指详细触发试验的机械或许集群等;
  • Matcher:试验划定规矩婚配器。依据所设置的 Target,定义相干的试验婚配划定规矩,能够设置多个。因为每一个 Target 可能有各自特别的婚配前提,比方 RPC 范畴的 Dubbo,能够依据效劳供应者供应的效劳和效劳消费者挪用的效劳举行婚配,缓存范畴的 Redis,能够依据 set、get 操纵举行婚配;
  • Action:指试验模仿的详细场景,Target 差别,实行的场景也不一样,比方磁盘,能够练习训练磁盘满,磁盘 IO 读写高级。假如是运用,能够笼统出耽误、异常、返回指定值(错误码、大对象等)、参数改动、反复挪用等试验场景。

比方一台 IP 是 10.0.0.1 机械上的运用,挪用 com.example.HelloService@1.0.0 Dubbo 效劳耽误 3s,基于此模子能够形貌为对 Dubbo 组件(Target)举行试验,试验实行的局限是 10.0.0.1 主机(Scope),挪用 com.example.HelloService@1.0.0 (Matcher)效劳耽误 3s(Action),对应的 chaosblade 敕令为:

blade create dubbo delay --time 3000 --service com.example.HelloService --version 1.0.0

所以此模子很简朴清楚的表达出试验场景,易于明白。下文中的云原生试验场景也基于此模子定义。

面向云原生的试验场景

完成计划

将浑沌试验场景根据上述的试验模子,定义为 Kubernetes 中的资本,并经由过程自定义掌握器来治理,能够经由过程 Yaml 设置或许直接实行 blade 敕令实行。

ChaosBlade Operator 定义了资本掌握器,并且会以 daemonset 的体式格局,在每一个节点上布置一个 chaosblade-tool pod 来实行浑沌试验。差别的试验场景内部完成体式格局差别,比方 Node 试验场景,其上面布置的 chaosblade-tool 内部实行即可,而 Container 内的试验场景,掌握器会将 chaosblade 包拷贝到目的 Container 中实行。

运用体式格局

装置必要组件

装置 ChaosBlade Operator,可经由过程地点下载 chaosblade-operator-0.0.1.tgz,运用以下敕令装置:

helm install --namespace kube-system --name chaosblade-operator chaosblade-operator-0.0.1.tgz

装置在 kube-system 敕令空间下。ChaosBlade Operator 启动后会在每一个节点布置 chaosblade-tool Pod 和一个 chaosblade-operator Pod。可经由过程以下敕令检察装置效果:

kubectl get pod -n kube-system -o wide | grep chaosblade

实行试验

实行体式格局有两种:

  • 一种是经由过程设置 yaml 体式格局,运用 kubectl 实行;
  • 另一种是直接运用 chaosblade 包中的 blade 敕令实行。

下面以指定一台节点,做 CPU 负载 80% 试验举例。

yaml 设置体式格局

apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
  name: cpu-load
spec:
  experiments:
  - scope: node
    target: cpu
    action: fullload
    desc: "increase node cpu load by names"
    matchers:
    - name: names
      value:
      - "cn-hangzhou.192.168.0.205"
    - name: cpu-percent
      value:
      - "80"

如上所示,设置好文件后,保存为 chaosblade_cpu_load.yaml,运用以下敕令实行试验场景:

kubectl apply -f chaosblade_cpu_load.yaml

可经由过程以下敕令检察每一个试验的实行状况:

kubectl get blade cpu-load -o json

检察更多试验场景设置事例。

blade 敕令实行体式格局

下载 chaosblade 东西包,解压即可运用。照样上述例子,运用 blade 敕令实行以下:

blade create k8s node-cpu fullload --names cn-hangzhou.192.168.0.205 --cpu-percent 80 --kubeconfig ~/.kube/config

运用 blade 敕令实行,会返回试验的实行效果。

修正试验

yaml 设置文件的体式格局支撑场景动态修正,比方将上述的 cpu 负载调解为 60%,则只需将上述 value 的值从 80 改成 60 即可,比方:

apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
  name: cpu-load
spec:
  experiments:
  - scope: node
    target: cpu
    action: load
    desc: "cpu load"
    flags:
    - name: cpu-percent
      value: "60"
    - name: ip
      value: 192.168.0.34

然后运用 kubeclt apply -f chaosblade_cpu_load.yaml 敕令实行更新即可。

住手试验

能够经由过程以下三种体式格局住手试验:

依据试验资本名住手

比方上述 cpu-load 场景,能够实行以下敕令住手试验:

kubectl delete chaosblade cpu-load

经由过程 yaml 设置文件住手

指定上述建立好的 yaml 文件举行删除,敕令以下:

kubectl delete -f chaosblade_cpu_load.yaml

经由过程 blade 敕令住手

此体式格局仅限运用 blade 建立的试验,运用以下敕令住手:

blade destroy <UID>

是实行 blade create 敕令返回的效果,假如遗忘,可运用 blade status --type create 敕令查询。

卸载 chaosblade operator

实行 helm del --purge chaosblade-operator 卸载即可,将会住手悉数试验,删除一切建立的资本。

总结

ChaosBlade 基于浑沌试验模子,友爱地将 Kubernetes 资本掌握连系,布置简朴而且运用简约,试验可控。除此之外 ChaosBlade 基于试验模子完成了许多范畴场景实行器,能够很轻易的扩大试验场景,可详见附录中的项目列表。

社区共建

ChaosBlade 自开源以来,共有近 30 多位孝敬者到场和许多企业的关注及运用,异常感谢列位。同时异常迎接更多的人介入进来,使 ChaosBlade 变的越发壮大,掩盖更多的场景,成为各个企业稳固的、通用的浑沌工程东西。

孝敬的情势能够是提 bug、提交代码、编写文档、补充单元测试、介入题目议论等等。ChaosBlade 置信:开源天下中,任何协助都是孝敬。

附录

项目列表以下:

  • ChaosBlade CLI(挪用进口)
  • ChaosBlade 试验模子定义
  • 基本资本场景实行器
  • Docker 场景实行器
  • Kubernetes 场景实行器
  • Java 运用场景实行器
  • C++ 运用场景实行器

“ 阿里巴巴云原生微信民众号(ID:Alicloudnative)关注微效劳、Serverless、容器、Service Mesh等手艺范畴、聚焦云原生盛行手艺趋向、云原生大规模的落地实践,做最懂云原生开发者的手艺民众号。”

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
面向云原生的浑沌工程东西-ChaosBlade

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282336.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>