- 云原生
- 微服务
- 运维
- DevOps
【免费下载链接】meshery
Meshery, the cloud native manager
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) | 图标资源 | 能力说明 |
|---|---|---|
PodChaos | pod-chaos-color.svg | Pod 级故障:kill、failure、container-kill |
PodHttpChaos | pod-http-chaos-color.svg | 针对 Pod 的 HTTP 请求故障注入 |
PodIOChaos | pod-io-chaos-color.svg | 针对 Pod 的 I/O 故障注入 |
PodNetworkChaos | pod-network-chaos-color.svg | 针对 Pod 的网络故障注入 |
NetworkChaos | network-chaos-color.svg | 网络层故障:延迟、丢包、重复、损坏、分区、限速 |
StressChaos | stress-chaos-color.svg | CPU / 内存压力注入 |
TimeChaos | time-chaos-color.svg | 时钟偏移(时间跳变)注入 |
IOChaos | io-chaos-color.svg | I/O 延迟、读写错误注入 |
HTTPChaos | http-chaos-color.svg | HTTP 层故障注入 |
DNSChaos | dns-chaos-color.svg | DNS 错误注入 |
KernelChaos | kernel-chaos-color.svg | 内核故障注入 |
JVMChaos | jvm-chaos-color.svg | JVM 应用故障注入(抛异常、GC 等) |
BlockChaos | block-chaos-color.svg | 块设备故障注入 |
AWSChaos | aws-chaos-color.svg | AWS 云资源故障注入 |
AzureChaos | azure-chaos-color.svg | Azure 云资源故障注入 |
GCPChaos | gcp-chaos-color.svg | GCP 云资源故障注入 |
PhysicalMachineChaos | physical-machine-chaos-color.svg | 物理机故障注入 |
PhysicalMachine | physical-machine-color.svg | 物理机资源声明 |
RemoteCluster | remote-cluster-color.svg | 远程集群资源声明 |
Schedule | schedule-color.svg | 定时 / 周期调度实验 |
StatusCheck | status-check-color.svg | 实验后状态检查 |
Workflow | workflow-color.svg | 混沌实验编排工作流 |
WorkflowNode | workflow-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 Test | operator / perf-test | 发起性能测试并采集指标 |
| Workload Configuration | configuration / config | 配置工作负载级设置 |
| Labels and Annotations Configuration | configuration | 配置标签与注解 |
| Relationships | configuration / relationship | 查看组件关系 |
| Json Schema | configuration / definition | 查看组件定义 |
| Styling | style | 配置组件视觉样式 |
| Change Shape | style / shape | 改变画布图形形状 |
| Compound Drag And Drop | graph / 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 发布内置,可按以下路径上手:
- 定位模型:在 Meshery 的"Models / 集成"页面中按分类
Observability and Analysis → Chaos Engineering找到 Chaos Mesh(模型名chaos-mesh,版本2.8.4); - 可视化编排:将需要的组件(如 PodChaos、NetworkChaos、Schedule、Workflow)拖入设计画布,依据上文参数说明填写配置;
- 组合工作流:借助
Workflow/WorkflowNode编排多阶段实验,用Schedule设定周期执行,用StatusCheck注入故障后自动检查系统恢复状态; - 验证效果:模型文档所定义的 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
相关推荐
CTF-Wiki Windows 平台逆向:ESP 定律法脱壳实战指南
CTF Wiki Windows 平台逆向:ESP 定律法脱壳实战指南 ESP 定律法是 Windows PE 逆向脱壳中应用频率最高的经典手法之一,其核心是利
云原生微服务运维DevOpsschool-of-sre混沌工程平台搭建:Chaos Mesh与Kubernetes集成
school of sre混沌工程平台搭建:Chaos Mesh与Kubernetes集成 混沌工程是提升系统可靠性的关键实践,通过主动注入故障来验证系统韧性。
教程Chowdown 免费部署指南:一键发布食谱网站到 GitHub Pages
Chowdown 免费部署指南:一键发布食谱网站到 GitHub Pages 想把自己收藏的家常菜、烘焙方子整理成一个漂亮的食谱网站,又不想花一分钱买服务器?C
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考