定义实验范围
本篇文档描述如何为单个混沌实验定义实验范围,帮助你准确地控制故障爆炸半径。
简介
在 Chaos Mesh 中,你可以通过指定选择器 (Selectors) 的方式定义单个混沌实验的作用范围。
不同类型的 Selector 对应着不同的过滤规则。你可以在一个混沌实验中指定一个或多个 Selector 来定义你的实验范围。如果同时指定多个 Selector,代表当前实验目标需要同时满足所有指定的 Selectors 的规则。
在创建混沌实验时,Chaos Mesh 支持以下两种定义混沌实验范围的方式。你可以按需选择以下任一方式:
- 在 YAML 配置文件中定义实验范围
- 在 Dashboard 上定义实验范围
在 YAML 配置文件中定义实验范围
本小节提供了不同类型的 Selectors 的含义、用法、在 YAML 文件中的配置示例。在 YAML 配置文件中定义实验范围时,你可以按照实验范围的过滤需求指定一个或多个 Selectors。
Namespace Selectors
- 指定实验目标 Pod 所属的命名空间。
- 数据类型:字符串数组类型。
- 如果此 Selector 为空或者不指定此 Selector,Chaos Mesh 会将其设置为当前混沌实验所属的命名空间。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
namespaces:
- 'app-ns'
Label Selector
- 指定实验目标 Pod 需要带有的 Labels。
- 数据类型:键值对类型。
- 如果指定了多个 Labels,代表实验目标需要带有此 Selector 指定的所有 Labels。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
labelSelectors:
'app.kubernetes.io/component': 'tikv'
Expression Selector
- 指定一组定义 Label 规则的表达式用来限定实验目标 Pod。
- 你可以通过此 Selector 设置不满足某些 Labels 的实验目标 Pod。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
expressionSelectors:
- { key: tier, operator: In, values: [cache] }
- { key: environment, operator: NotIn, values: [dev] }
Annotation Selector
- 指定实验目标 Pod 需要带有的 Annotations。
- 数据类型:键值对类型。
- 如果指定了多个 Annotations,代表实验目标需要带有此 Selector 指定的所有 Annotations。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
annotationSelectors:
'example-annotation': 'group-a'
Field Selector
- 指定实验目标 Pod 的 Fields。
- 数据类型:键值对类型。
- 如果指定了多个 Fields 字段,代表实验目标需要带有此 Selector 设置的所有 Fields。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
fieldSelectors:
'metadata.name': 'my-pod'
PodPhase Selector
- 指定实验目标 Pod 的 Phase。
- 数据类型:字符串数组类型。
- 支持的 Phase 有:Pending、Running、Succeeded、Failed、Unknown。
- 此选项默认为空,意味不限制目标 Pod 的 Phase。
当使用 YAML 文件创建实验时,示例配置如下:
spec:
selector:
podPhaseSelectors:
- 'Running'
Node Selector
- 指定实验目标 Pod 所属的 Node 的 Labels。
- 数据类型:键值对类型。
- 如果指定了多个 Node Labels,代表实验目标 Pod 所属的 Node 需要带有此 Selector 指定的所有 Labels。