☰
Meshery 中的 Chaos Mesh 集成模型:23 个混沌工程组件与完整配置指南
2026/10/10 12:12:55 网站建设 项目流程
  • 云原生
  • 微服务
  • 运维
  • DevOps

【免费下载链接】meshery

Meshery, the cloud native manager

项目地址:https://gitcode.com/GitHub_Trending/me/meshery
点击查看免费下载

Meshery 通过可插拔的模型(Model)体系将 Chaos Mesh 的混沌工程能力以可视化设计的形式接入云原生管理平台,用户无需编写原生 Kubernetes CRD,即可在画布上编排 Pod 故障、网络扰动、云资源故障等实验。本文以 Chaos Mesh 集成模型文档 为核心,结合仓库内 模型定义 与组件 JSON Schema,完整讲解其 23 个组件的能力边界、核心参数及实操用法,读完你将掌握在 Meshery 中声明式配置和部署 Chaos Mesh 混沌实验的完整方法。

模型定位:Meshery 注册表中的 Chaos Mesh

在 Meshery 的扩展体系中,每个被支持的云原生项目都以"模型"(Model)为单位打包。Chaos Mesh 模型被归类于Observability and Analysis(可观测性与分析)→ Chaos Engineering(混沌工程)分类下,由Artifact Hub作为注册源发现并收录,这一定位清晰地写在关联文档与 model.json 的category与registrant字段中。

该模型随每个 Meshery 版本打包进注册表,其元数据要点如下:

字段值
模型名(name)chaos-mesh
显示名(displayName)Chaos Mesh
模型版本2.8.4
Schema 版本v1beta2(models.meshery.io/v1beta2)
分类 / 子分类Observability and Analysis / Chaos Engineering
注册源Artifact Hub(artifacthub)
状态enabled
组件数量23

模型元数据中还包含主题色(primaryColor: #4ccaf8、secondaryColor: #ef5e80)与形状(shape: circle),这些信息驱动 Meshery 可视化画布上组件的图标渲染与样式呈现,让混沌组件与普通工作负载在视觉上形成区分。

23 个混沌组件全览

关联文档在components字段中完整列出了该模型的 23 个组件,每个组件都配有独立的 color / white 两套图标资源。对应 JSON 定义存放在 models/chaos-mesh/2.8.4/v1.0.0/components/ 目录下,下面按故障注入能力分组列出:

组件名(kind)图标资源能力说明
PodChaospod-chaos-color.svgPod 级故障:kill、failure、container-kill
PodHttpChaospod-http-chaos-color.svg针对 Pod 的 HTTP 请求故障注入
PodIOChaospod-io-chaos-color.svg针对 Pod 的 I/O 故障注入
PodNetworkChaospod-network-chaos-color.svg针对 Pod 的网络故障注入
NetworkChaosnetwork-chaos-color.svg网络层故障:延迟、丢包、重复、损坏、分区、限速
StressChaosstress-chaos-color.svgCPU / 内存压力注入
TimeChaostime-chaos-color.svg时钟偏移(时间跳变)注入
IOChaosio-chaos-color.svgI/O 延迟、读写错误注入
HTTPChaoshttp-chaos-color.svgHTTP 层故障注入
DNSChaosdns-chaos-color.svgDNS 错误注入
KernelChaoskernel-chaos-color.svg内核故障注入
JVMChaosjvm-chaos-color.svgJVM 应用故障注入(抛异常、GC 等)
BlockChaosblock-chaos-color.svg块设备故障注入
AWSChaosaws-chaos-color.svgAWS 云资源故障注入
AzureChaosazure-chaos-color.svgAzure 云资源故障注入
GCPChaosgcp-chaos-color.svgGCP 云资源故障注入
PhysicalMachineChaosphysical-machine-chaos-color.svg物理机故障注入
PhysicalMachinephysical-machine-color.svg物理机资源声明
RemoteClusterremote-cluster-color.svg远程集群资源声明
Scheduleschedule-color.svg定时 / 周期调度实验
StatusCheckstatus-check-color.svg实验后状态检查
Workflowworkflow-color.svg混沌实验编排工作流
WorkflowNodeworkflow-node-color.svg工作流中的单个执行节点

该模型覆盖了从应用层(Pod / HTTP / JVM)到网络层(Network / DNS)、再到基础设施层(IO / Kernel / Block / 云资源 / 物理机)的全栈故障注入面,这正是 Chaos Mesh 模型被归入"混沌工程"子分类的原因。关联文档中的howItWorks: "Integrates ChaosBlade experiments"也点明:该集成延续了 Chaos Mesh 通过底层混沌注入引擎(ChaosBlade 实验机制)向系统注入各类故障、模拟真实世界场景的设计思路,最终目标是"通过混沌测试提升系统韧性与容错能力"。

从 JSON Schema 到可视化:组件定义如何驱动画布

每个组件在 components/ 目录下都有一个独立的 JSON 文件,遵循components.meshery.io/v1beta2schema。以 PodChaos.json 为例,其核心结构包括:

  • component.version/component.kind:声明对应的 Kubernetes API 组与资源类型,如chaos-mesh.org/v1alpha1下的PodChaos;
  • component.schema:一份完整可校验的 JSON Schema,即该组件的配置表单与画布属性面板的"数据契约"——用户在 Meshery UI 中填写的每个字段都会被 schema 校验;
  • metadata.isNamespaced: true:标注该资源是命名空间级(Namespaced)资源;
  • metadata.source_uri:指向上游 Chart 源(https://charts.chaos-mesh.org/chaos-mesh-2.8.4.tgz),说明组件定义从该 Chart 版本自动发现生成。

此外,每个组件声明了 8 项通用capabilities(能力),例如:

capability类型说明
Performance Testoperator / perf-test发起性能测试并采集指标
Workload Configurationconfiguration / config配置工作负载级设置
Labels and Annotations Configurationconfiguration配置标签与注解
Relationshipsconfiguration / relationship查看组件关系
Json Schemaconfiguration / definition查看组件定义
Stylingstyle配置组件视觉样式
Change Shapestyle / shape改变画布图形形状
Compound Drag And Dropgraph / compoundDnd在图形视图中拖入父组件

这些能力定义了该组件在 Meshery 中"能做什么",是可视化设计器交互行为的实现依据。

实战一:用 PodChaos 注入 Pod 级故障

PodChaos.json 的 schema 完整描述了混沌实验清单(PodChaos 是 control script 的 spec)的字段。核心结构为spec,其中action、mode、selector三项为必填。

action:选择故障动作

action定义具体的 Pod 混沌动作,支持三个取值,默认pod-kill:

  • pod-kill:直接终止 Pod(会触发重建);
  • pod-failure:使 Pod 进入不可用状态(与 kill 不同,不触发重建);
  • container-kill:杀死 Pod 内的指定容器。

mode 与 value:控制故障作用范围

mode定义混沌动作的运行模式,可选值:

mode含义配合的value
one随机挑选 1 个目标不需要
all所有目标不需要
fixed固定数量目标整数,指定注入的 Pod 数量
fixed-percent固定百分比0-100 的数字,指定可执行动作的 Pod 百分比
random-max-percent随机最大百分比0-100 的数字,指定最大执行百分比

selector:精确定位注入目标

selector用于选择被注入故障的 Pod,支持以下匹配维度:

  • namespaces/nodes:按命名空间、节点名称圈定对象集合;
  • labelSelectors/annotationSelectors:按标签、注解键值对选择;
  • fieldSelectors:按字段选择;
  • expressionSelectors:基于集合式标签表达式(操作符支持In、NotIn、Exists、DoesNotExist,其中 In/NotIn 需非空 values,Exists/DoesNotExist 需空 values);
  • podPhaseSelectors:按 Pod 当前阶段(Pending/Running/Succeeded/Failed/Unknown)选择;
  • pods:以"命名空间 → Pod 名列表"的映射精确指定 Pod。

其他关键字段

  • duration:混沌动作持续时长(pod-failure时必填),格式为带单位的字符串,如"300ms"、"-1.5h"、"2h45m",合法时间单位为ns、us(或µs)、ms、s、m、h;
  • gracePeriod:仅pod-kill使用,表示删除 Pod 前的宽限期(秒),非负整数,默认0表示立即删除;
  • containerNames:受影响容器名称列表,未设置时默认注入第一个容器;
  • remoteCluster:混沌实验将被部署到的远程集群名。

一个完整的 PodChaos 配置示例

apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: kill-app-pods namespace: bookinfo spec: action: pod-kill # pod-kill / pod-failure / container-kill mode: fixed-percent # one / all / fixed / fixed-percent / random-max-percent value: "50" # fixed-percent 模式下注入 50% 的 Pod duration: "5m" # pod-failure 时必填;格式如 300ms / 2h45m gracePeriod: 0 # pod-kill 删除前的宽限期(秒) selector: namespaces: ["bookinfo"] labelSelectors: app: ratings podPhaseSelectors: ["Running"]

在 Meshery 画布中,将该组件从模型托盘拖入设计区后,右侧属性面板即由上述 schema 渲染而成,填入等价字段后即可部署为真正的 Kubernetes 混沌实验清单。

实战二:用 NetworkChaos 模拟网络故障

NetworkChaos.json 定义了网络混沌实验清单,spec.action、mode、selector同样必填,但动作集合完全不同:

action:七种网络故障

action含义配套参数对象
netem通用网络模拟(配合 delay/loss 等子参数)delay、duplicate、corrupt、loss
delay网络延迟delay(默认动作)
loss丢包loss
duplicate报文重复duplicate
corrupt报文损坏corrupt
partition网络分区(完全断连)direction、target
bandwidth带宽限制bandwidth

延迟、丢包、重复与损坏参数

  • delay 对象:必填latency(如10ms,正则^[0-9]+(\.[0-9]+)?(ns|us|ms|s|m|h)$),可选jitter(抖动)、correlation、reorder(报文重排,其中gap与reorder必填);
  • loss / duplicate / corrupt 对象:结构一致,必填各自的百分比字段(loss、duplicate、corrupt),可选correlation;
  • bandwidth 对象:必填buffer(令牌桶瞬时可用字节数,≥1)、limit(可排队等待令牌的字节数,≥1)、rate(速率旋钮,支持bit/kbit/mbit/gbit/tbit与bps/kbps/mbps/gbps/tbps,其中 bps 表示每秒字节数);可选minburst(峰值速率桶大小,建议设为接口 MTU)、peakrate(桶的最大消耗速率)。

direction / target / externalTargets:控制故障流向

  • direction:作用于 netem 与 partition 动作,取值to(入向,默认)、from(出向)、both;
  • target:目标端选择器,同样具备mode+selector结构,用于精确指定网络对端;
  • targetDevice:目标作用域内的受影响网络设备;
  • device:本端受影响网络设备;
  • externalTargets:Kubernetes 集群外的网络目标列表,用于对集群外主机/IP 注入网络故障。

一个完整的 NetworkChaos 配置示例

apiVersion: chaos-mesh.org/v1alpha1 kind: NetworkChaos metadata: name: network-delay-injection namespace: bookinfo spec: action: delay mode: one duration: "30s" selector: namespaces: ["bookinfo"] labelSelectors: app: productpage direction: both delay: latency: "50ms" jitter: "10ms" externalTargets: ["8.8.8.8"]

如需模拟断网,可将action改为partition并配合target选择器;如需压测带宽上限,则使用bandwidth并配置rate。

在 Meshery 中使用 Chaos Mesh 模型

关联文档及其配套注册表机制表明,该模型随 Meshery 发布内置,可按以下路径上手:

  1. 定位模型:在 Meshery 的"Models / 集成"页面中按分类Observability and Analysis → Chaos Engineering找到 Chaos Mesh(模型名chaos-mesh,版本2.8.4);
  2. 可视化编排:将需要的组件(如 PodChaos、NetworkChaos、Schedule、Workflow)拖入设计画布,依据上文参数说明填写配置;
  3. 组合工作流:借助Workflow/WorkflowNode编排多阶段实验,用Schedule设定周期执行,用StatusCheck注入故障后自动检查系统恢复状态;
  4. 验证效果:模型文档所定义的 featureList 明确其目标——"向系统注入多种故障、模拟真实世界场景、支持 Kubernetes 及其他平台",部署后通过 Meshery 的观测能力观察应用在故障下的表现,从而提升系统韧性与容错能力。

需要说明的是:所有组件定义均基于 Chaos Mesh2.8.4Chart 的v1alpha1API 组自动发现生成(见各组件 JSON 的source_uri),若你的集群中 Chaos Mesh Operator 版本与模型版本不匹配,请先在目标集群安装对应的 Chaos Mesh 部署清单 环境,再在 Meshery 中执行部署,以确保字段兼容。

小结

本文以 Meshery 中的 Chaos Mesh 集成模型为线索,完整梳理了其 23 个混沌工程组件:Pod 级故障(PodChaos 及其action/mode/selector/duration/gracePeriod参数体系)、网络层故障(NetworkChaos 的七种action及delay/loss/duplicate/corrupt/bandwidth参数对象)、以及覆盖云资源、物理机、调度与工作流编排的周边组件。所有字段说明均直接来自 model.json 与 组件 JSON Schema,你可以据此在 Meshery 画布中声明式地搭建属于自己的混沌实验,用可复现、可审计的故障注入验证系统的韧性边界。

  • 云原生
  • 微服务
  • 运维
  • DevOps

【免费下载链接】meshery

Meshery, the cloud native manager

项目地址:https://gitcode.com/GitHub_Trending/me/meshery
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询