跳至主内容
版本:下一版本

定义混沌实验的作用范围

非官方测试版翻译

本页面由 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 范围。

Dashboard 选择器
Dashboard 选择器

兼容性矩阵

TypeSupport KubernetesSupport physical machine
Namespace SelectorsYesYes
Label SelectorsYesYes
Expression SelectorsYesYes
Annotation SelectorsYesYes
Field SelectorsYesYes
PodPhase SelectorsYesNo
Node SelectorsYesNo
Node List SelectorsYesNo
Pod List SelectorsYesNo
PhysicalMachine List SelectorsNoYes