跳至主内容
版本:2.6.7

运行混沌实验

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

本文档介绍如何在 Chaos Mesh 中创建、运行、查看、暂停、更新和删除混沌实验。

创建混沌实验

在 Chaos Mesh 中,您可以创建以下类型的混沌实验:

  • 一次性混沌实验:混沌实验的最小执行单元。创建后,Chaos Mesh 会立即根据实验配置向目标测试机器注入故障。若配置了 duration 参数,注入的故障将在 duration 指定时间后自动恢复。当混沌实验暂停或删除时,注入的故障会立即恢复。

  • 定时或循环混沌实验:可按固定间隔或周期性运行的混沌实验。创建此类实验时,需要定义其调度规则。

一次性混沌实验

要创建一次性混沌实验,可采用以下任一方法:

  • 使用 Chaos Dashboard 创建新混沌实验,点击 提交 运行实验。具体操作请参考各类混沌实验的文档说明。

  • 通过 YAML 文件定义混沌实验,再使用 kubectl 创建并运行实验。操作步骤如下:

  1. 创建新的 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 网络混沌

  2. 执行以下命令创建并运行混沌实验:

    kubectl apply -f network-delay.yaml
  3. 实验启动后,使用以下 kubectl describe 命令查看混沌实验运行状态,检查实验对象的 statusevent

    kubectl describe networkchaos network-delay

    查看混沌实验结果的详细步骤,请参考检查混沌实验

定时或循环混沌实验

Chaos Mesh 提供 Schedule 对象来创建定时混沌实验和循环混沌实验。

创建此类混沌实验的操作步骤如下:

  1. 创建新的 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 参数,故障行为将持续生效直至您暂停或删除该混沌实验。

  2. 执行以下命令创建并运行此混沌实验:

    kubectl apply -f schedule-delay-example.yaml
  3. 混沌实验开始运行后,可使用以下 kubectl describe 命令查看该实验对象的 statusevent 运行状态:

    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 中删除混沌实验并将其归档至实验历史记录,请点击该混沌实验对应的归档按钮。

归档实验
归档实验