运行混沌实验
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
本文档介绍如何在 Chaos Mesh 中创建、运行、查看、暂停、更新和删除混沌实验。
创建混沌实验
在 Chaos Mesh 中,您可以创建以下类型的混沌实验:
-
一次性混沌实验:混沌实验的最小执行单元。创建后,Chaos Mesh 会立即根据实验配置向目标测试机器注入故障。若配置了
duration参数,注入的故障将在duration指定时间后自动恢复。当混沌实验暂停或删除时,注入的故障会立即恢复。 -
定时或循环混沌实验:可按固定间隔或周期性运行的混沌实验。创建此类实验时,需要定义其调度规则。
一次性混沌实验
要创建一次性混沌实验,可采用以下任一方法:
-
使用 Chaos Dashboard 创建新混沌实验,点击 提交 运行实验。具体操作请参考各类混沌实验的文档说明。
-
通过 YAML 文件定义混沌实验,再使用
kubectl创建并运行实验。操作步骤如下:
-
创建新的 YAML 文件定义混沌实验,根据实验类型添加配置参数。
以 NetworkChaos 实验为例,将以下 YAML 文本保存为
network-delay.yaml:apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: network-delay
spec:
action: delay # the specific chaos action to inject
mode: one # the mode to run chaos action; supported modes are one/all/fixed/fixed-percent/random-max-percent
selector: # pods where to inject chaos actions
namespaces:
- default
labelSelectors:
'app': 'web-show' # the label of the pod for chaos injection
delay:
latency: '10ms'
duration: '12s'上述 YAML 示例定义了持续
12 seconds的网络延迟故障,目标为default命名空间下带"app": "web-show"标签的应用。有关 NetworkChaos 实验的更多配置信息,请参阅模拟 Kubernetes 网络混沌。 -
执行以下命令创建并运行混沌实验:
kubectl apply -f network-delay.yaml -
实验启动后,使用以下
kubectl describe命令查看混沌实验运行状态,检查实验对象的status或event:kubectl describe networkchaos network-delay查看混沌实验结果的详细步骤,请参考检查混沌实验。
定时或循环混沌实验
Chaos Mesh 提供 Schedule 对象来创建定时混沌实验和循环混沌实验。
创建此类混沌实验的操作步骤如下:
-
创建新的 YAML 文件定义混沌实验。您需要在 YAML 文件中配置
Schedule参数定义实验的具体调度规则,并根据要创建的混沌实验类型配置其他参数。以定时 NetworkChaos 实验为例。将以下 YAML 文本保存为
schedule-delay-example.yaml。apiVersion: chaos-mesh.org/v1alpha1
kind: Schedule
metadata:
name: schedule-delay-example
spec:
schedule: '5 * * * *'
historyLimit: 2
concurrencyPolicy: 'Allow'
type: 'NetworkChaos'
networkChaos:
action: delay
mode: one
selector:
namespaces:
- default
labelSelectors:
'app': 'web-show'
delay:
latency: '10ms'
duration: '12s'上述 YAML 示例定义了一个每小时第 5 分钟自动触发的网络延迟故障。关于调度规则的详细介绍,请参阅定义调度规则。
备注如果未设置
duration参数,故障行为将持续生效直至您暂停或删除该混沌实验。 -
执行以下命令创建并运行此混沌实验:
kubectl apply -f schedule-delay-example.yaml -
混沌实验开始运行后,可使用以下
kubectl describe命令查看该实验对象的status或event运行状态:kubectl describe networkchaos schedule-delay-example查看混沌实验结果的详细步骤,请参阅查看混沌实验。
暂停混沌实验
使用命令暂停/恢复混沌实验
对于运行中的混沌实验,可通过命令添加暂停注解来暂停实验。
例如,可使用以下命令暂停默认命名空间中名为 network-delay 的混沌实验:
kubectl annotate networkchaos network-delay experiment.chaos-mesh.org/pause=true
命令执行后,Chaos Mesh 会立即恢复已注入的故障。若要将混沌实验从暂停状态恢复到正常运行状态,请使用以下命令:
kubectl annotate networkchaos network-delay experiment.chaos-mesh.org/pause-
使用混沌仪表盘暂停/恢复混沌实验
如需通过混沌仪表盘暂停或恢复混沌实验,请在仪表盘中找到目标实验并点击 Pause(暂停)或 Start(启动)按钮。


更新混沌实验
使用命令更新混沌实验
混沌实验的 Spec 字段目前不允许更新。
详情请参阅相关 GitHub issue。
使用混沌仪表盘更新混沌实验
由于混沌实验的 Spec 字段不允许更新,混沌仪表盘目前不支持更新混沌实验。
删除混沌实验
使用命令删除混沌实验
混沌实验完成后,可通过以下 kubectl delete 命令删除实验。删除混沌实验后,已注入的故障会立即恢复:
kubectl delete -f network-delay.yaml
# or delete the chaos object directly
kubectl delete networkchaos network-delay
若删除操作被阻塞,表明目标对象的某些故障行为无法恢复。您可查看 Chaos Mesh 日志进行排查,或直接创建 GitHub issue 向 Chaos Mesh 团队报告问题。此外,也可通过以下命令强制删除混沌实验:
kubectl annotate networkchaos web-show-network-delay chaos-mesh.chaos-mesh.org/cleanFinalizer=forced
使用混沌仪表盘删除混沌实验
若要在 Chaos Dashboard 中删除混沌实验并将其归档至实验历史记录,请点击该混沌实验对应的归档按钮。
