定义混沌实验的作用范围
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
本文档介绍如何定义单个混沌实验的作用范围,帮助您精确控制故障爆炸半径。
实验范围概览
在 Chaos Mesh 中,您可以通过指定选择器(selector)来定义单个混沌实验的作用范围。
不同类型的选择器对应不同的过滤规则。您可以在混沌实验中指定一个或多个选择器来定义实验范围。若同时指定多个选择器,实验目标必须同时满足所有选择器的规则条件。
创建混沌实验时,Chaos Mesh 支持以下两种定义作用范围的方式,您可根据需求任选其一:
-
在 YAML 配置文件中定义实验范围
-
通过 Chaos Dashboard 界面定义实验范围
在 YAML 配置文件中定义实验范围
本节介绍不同选择器类型的含义及用法,并提供 YAML 文件配置示例。在 YAML 文件中定义实验范围时,您可根据范围过滤需求指定一个或多个选择器。
命名空间选择器
-
指定实验目标 Pod 所在的命名空间
-
数据类型:字符串数组类型。
-
若未指定或值为空,Chaos Mesh 会自动将其设为当前混沌实验所在的命名空间
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
namespaces:
- 'app-ns'
标签选择器
-
指定实验目标 Pod 必须具有的 标签
-
数据类型:键值对。
-
若指定多个标签,实验目标必须包含该选择器指定的所有标签
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
labelSelectors:
'app.kubernetes.io/component': 'tikv'
表达式选择器
-
通过一组表达式定义标签规则,指定实验目标 Pod
-
可用于设置不满足特定标签条件的实验目标 Pod
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
expressionSelectors:
- { key: tier, operator: In, values: [cache] }
- { key: environment, operator: NotIn, values: [dev] }
注解选择器
-
指定实验目标 Pod 必须具有的注解
-
数据类型:键值对。
-
若指定多个注解,实验目标必须包含该选择器指定的所有注解
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
annotationSelectors:
'example-annotation': 'group-a'
字段选择器
-
指定实验目标 Pod 的字段
-
数据类型:键值对。
-
若指定多个字段,实验目标必须满足该选择器设置的所有字段条件
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
fieldSelectors:
'metadata.name': 'my-pod'
Pod 阶段选择器
-
指定实验目标 Pod 的生命周期阶段
-
数据类型:字符串数组类型。
-
支持阶段:
Pending(挂起)、Running(运行中)、Succeeded(成功)、Failed(失败)、Unknown(未知) -
该选项默认为空,表示目标 Pod 的阶段不受限制。
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
podPhaseSelectors:
- 'Running'
节点选择器
-
指定实验目标 Pod 所属节点的节点标签。
-
数据类型:键值对。
-
如果指定了多个节点标签,则实验目标 Pod 所属节点必须具有此选择器指定的所有标签。
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
nodeSelectors:
'node-label': 'label-one'
节点列表选择器
-
指定实验目标 Pod 所属的节点。
-
数据类型:字符串数组类型。
-
目标 Pod 只能属于配置的节点列表中的一个节点。
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
nodes:
- node1
- node2
Pod 列表选择器
-
指定实验目标
Pods的命名空间和列表。 -
数据类型:键值对。其中"键"为目标
Pod的命名空间,"值"为目标Pod列表。 -
如果指定了此选择器,Chaos Mesh 将忽略其他已配置的选择器。
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
pods:
tidb-cluster: # namespace of the target pods
- basic-tidb-0
- basic-pd-0
- basic-tikv-0
- basic-tikv-1
物理机列表选择器
-
指定实验目标
PhysicalMachines的命名空间和列表。 -
数据类型:键值对。其中"键"为目标
PhysicalMachine的命名空间,"值"为目标PhysicalMachine列表。 -
如果指定了此选择器,Chaos Mesh 将忽略其他已配置的选择器。
PhysicalMachine 是一个表示物理机的 CRD(自定义资源定义)。要创建 PhysicalMachine,Chaos Mesh 使用 Chaosctl。
使用 YAML 文件创建实验时,您需要配置选择器。例如:
spec:
selector:
physicalMachines:
default: # namespace of the target PhysicalMachines
- physical-machine-a
- physical-machine-b
在 Chaos Dashboard 上定义实验范围
如果您使用 Chaos Dashboard 创建混沌实验,可以在填写实验信息时配置混沌实验范围。
Chaos Dashboard 当前提供以下选择器。您可以根据实验范围的过滤需求指定一个或多个选择器:
-
命名空间选择器
-
标签选择器
-
注解选择器
-
阶段选择器
设置选择器时,您还可以在 Dashboard 中实时查看实验目标的实际范围,并可以直接修改由选择器过滤出的目标 Pod 范围。

兼容性矩阵
| Type | Support Kubernetes | Support physical machine |
|---|---|---|
| Namespace Selectors | Yes | Yes |
| Label Selectors | Yes | Yes |
| Expression Selectors | Yes | Yes |
| Annotation Selectors | Yes | Yes |
| Field Selectors | Yes | Yes |
| PodPhase Selectors | Yes | No |
| Node Selectors | Yes | No |
| Node List Selectors | Yes | No |
| Pod List Selectors | Yes | No |
| PhysicalMachine List Selectors | No | Yes |