跳至主内容
版本:2.6.7

配置混沌实验的命名空间

非官方测试版翻译

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

本章将指导您如何配置混沌实验,使其仅在指定命名空间中生效,并保护其他未指定的命名空间免受故障注入影响。

控制混沌实验生效范围

Chaos Mesh 提供两种方式控制混沌实验的生效范围:

  • 要将混沌实验限制在指定命名空间生效,您需要启用 FilterNamespace 功能(默认关闭)。该功能具有全局作用域,启用后只需在允许混沌实验生效的命名空间上添加注解,未添加注解的命名空间将受到保护,免受故障注入。

  • 若需为单个混沌实验指定生效范围,请参考定义混沌实验范围

启用 FilterNamespace

若尚未安装 Chaos Mesh,可通过在 Helm 安装命令中添加 --set controllerManager.enableFilterNamespace=true 参数启用该功能。以下是在 Docker 容器中的命令示例:

备注

使用 Helm 安装时,不同容器的命令和参数存在差异。更多信息请参阅使用 Helm 安装 Chaos Mesh

若已通过 Helm 安装 Chaos Mesh,可使用 helm upgrade 命令升级配置来启用此功能,例如:

执行 helm upgrade 时,可通过添加多个 --set 参数设置多项配置,后设置的参数会覆盖先前的值。例如当命令中包含 --set controllerManager.enableFilterNamespace=false -set controllerManager.enableFilterNamespace=true 时,最终仍会启用该功能。

您也可通过 -f 参数指定 YAML 文件描述配置。更多信息请参考 Helm 升级文档

为混沌实验添加命名空间注解

启用 FilterNamespace 后,Chaos Mesh 仅会向包含 chaos-mesh.org/inject=enabled 注解的命名空间注入故障。因此开始混沌实验前,需在目标命名空间添加此注解,其他命名空间将自动获得故障注入保护。

可通过以下 kubectl 命令为 namespace 添加注解:

kubectl annotate ns $NAMESPACE chaos-mesh.org/inject=enabled

上述命令中 $NAMESPACE 为命名空间名称(例如 default)。注解添加成功时将显示:

namespace/$NAMESPACE annotated

如需删除此注解,可使用以下命令:

kubectl annotate ns $NAMESPACE chaos-mesh.org/inject-

注解删除成功时将显示:

namespace/$NAMESPACE annotated

查看混沌实验生效的命名空间

可通过以下命令列出所有允许混沌实验的命名空间:

kubectl get ns -o jsonpath='{.items[?(@.metadata.annotations.chaos-mesh\.org/inject=="enabled")].metadata.name}'

该命令会输出所有包含 chaos-mesh.org/inject=enabled 注解的命名空间,例如:

default