Chaos Mesh 入门教程
文章插图
来源:微信公众号:k8s技术圈
作者:阳明
出处:;mid=2247486859 --tt-darkmode-bgcolor: #131313;">混沌工程是在分布式系统上进行实验的学科 , 目的是建立对系统抵御生产环境中失控条件的能力以及信心 。
大规模分布式软件系统的发展正在改变软件工程 , 作为一个行业 , 我们很快采用了提高开发灵活性和部署速度的实践 。 紧随着这些优点的一个迫切问题是:我们对投入生产的复杂系统有多少信心?
【Chaos Mesh 入门教程】即使分布式系统中的所有单个服务都正常运行, 这些服务之间的交互也会导致不可预知的结果 。 这些不可预知的结果, 由影响生产环境的罕见且破坏性的事件复合而成 , 令这些分布式系统存在内在的混沌 。
我们需要在异常行为出现之前 , 在整个系统内找出这些弱点 。 这些弱点包括以下形式:
- 当服务不可用时的不正确回滚设置;
- 不当的超时设置导致的重试风暴;
- 由于下游依赖的流量过载导致的服务中断;
- 单点故障时的级联失败等 。
我们采用基于经验和系统的方法解决了分布式系统在规模增长时引发的问题 , 并以此建立对系统抵御这些事件的能力和信心 , 通过在受控实验中观察分布式系统的行为来了解它的特性 , 我们称之为混沌工程 。
什么是 Chos Mesh?Chaos Mesh?是云原生计算基金会(CNCF)托管的项目 。
“
Chaos Mesh 是一个云原生混沌工程平台 , 提供了在 Kubernetes 平台上进行混沌测试的能力 。
”
Chaos Mesh 是一个通用的混沌工程解决方案 , 它的特点是对Kubernetes 上的复杂系统进行全方位的故障注入方法 , 涵盖了 Pod、网络、文件系统甚至内核的故障 。 Chaos Mesh 主要包括下面两个组件:
- Chaos Operator :混沌编排的核心组件 。
- Chaos Dashboard :用于管理、设计、监控混沌实验的 Web UI 。
文章插图
目前实现的 CRD 对象支持6种类型的故障注入 , 分别是 PodChaos、NetworkChaos、IOChaos、TimeChaos、StressChaos 和 KernelChaos , 对应的主要动作如下所示:
- pod-kill :模拟 Kubernetes Pod 被 kill 。
- pod-failure :模拟 Kubernetes Pod 持续不可用 , 可以用来模拟节点宕机不可用场景 。
- network-delay :模拟网络延迟 。
- network-loss :模拟网络丢包 。
- network-duplication : 模拟网络包重复 。
- network-corrupt : 模拟网络包损坏 。
- network-partition :模拟网络分区 。
- I/O delay : 模拟文件系统 I/O 延迟 。
- I/O errno :模拟文件系统 I/O 错误。
$ curl -sSL| bash
上面的命令会安装所有的 CRD、ServiceAccount 和所有组件 , 如果你使用的是 k3s 或 k3d , 需要指定 kind 参数 。$ curl -sSL| bash -s —-local kind
如果你已经安装了大于 0.7 版本的Kind , 那么脚本将继续 , 否则将安装一个新的版本 。 脚本运行后的输出结果如下所示:Install kubectl clientkubectl Version 1.18.8 has been installedInstall Kind toolKind Version 0.8.1 has been installedInstall local Kubernetes kindNo kind clusters found.Clean data dir: /Users/rbanka/kind/kind/datastart to create kubernetes cluster kindCreating cluster "kind" ...DEBUG: docker/images.go:58] Image: kindest/node:v1.17.2 present locally ? Ensuring node image (kindest/node:v1.17.2)? Preparing nodes :package: :package: :package: :package: ? Writing configuration :scroll: ? Starting control-plane? ? Installing CNI :electric_plug: ? Installing StorageClass :floppy_disk: ? Joining worker nodes :tractor:Set kubectl context to "kind-kind"You can now use your cluster with:kubectl cluster-info --context kind-kindThanks for using kind! :blush:Install Chaos Mesh chaos-meshcustomresourcedefinition.apiextensions.k8s.io/iochaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/kernelchaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/networkchaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/podchaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/podiochaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/podnetworkchaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/stresschaos.chaos-mesh.org createdcustomresourcedefinition.apiextensions.k8s.io/timechaos.chaos-mesh.org creatednamespace/chaos-testing createdserviceaccount/chaos-controller-manager createdsecret/chaos-mesh-webhook-certs createdclusterrole.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-target-namespace createdclusterrole.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-cluster-level createdclusterrolebinding.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-cluster-level createdclusterrolebinding.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-target-namespace createdrole.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-control-plane createdrolebinding.rbac.authorization.k8s.io/chaos-mesh:chaos-controller-manager-control-plane createdservice/chaos-dashboard createdservice/chaos-mesh-controller-manager createddaemonset.apps/chaos-daemon createddeployment.apps/chaos-dashboard createddeployment.apps/chaos-controller-manager createdmutatingwebhookconfiguration.admissionregistration.k8s.io/chaos-mesh-mutation createdvalidatingwebhookconfiguration.admissionregistration.k8s.io/chaos-mesh-validation createdWaiting for pod runningchaos-controller-manager-754d4f7585-h9p4c0/1ContainerCreating010sWaiting for pod runningchaos-controller-manager-754d4f7585-h9p4c0/1ContainerCreating021sWaiting for pod runningchaos-controller-manager-754d4f7585-h9p4c0/1ContainerCreating031sWaiting for pod runningChaos Mesh chaos-mesh is installed successfully
- 混沌实施工具ChaosBlade实践
- 别墅|Mesh路由器,让你的WiFi全方位覆盖!
- web 安全之 Spring Security 入门教程
- 多集群istio service mesh--共享控制平面
- 好看好用又不贵!灵耀魔方MESH路由京东开启预售
- 提高|vlookup入门教程,职场人必备函数,快速提高工作效率
- Mesh组网实战+信号测试+吞吐量测试,领势MX4200评测
- Mesh组网WiFi 6的网件Orbi RBK752路由分享
- 领势 MR8300+AC2600 Mesh 组网解决老屋 Wi-Fi 覆盖难题(含教程)
- 无线mesh分布式路由选购攻略,让家里随处有好的WiFi信号