Chaos Mesh 工作流示例解析:串行执行多种混沌实验
chaos-mesh 项目地址: https://gitcode.com/gh_mirrors/cha/chaos-mesh
工作流概念简介
Chaos Mesh 是一个开源的云原生混沌工程平台,它允许用户在 Kubernetes 环境中模拟各种故障场景。工作流(Workflow)是 Chaos Mesh 提供的一个强大功能,它能够将多个混沌实验按照特定顺序组织起来,形成一个完整的测试场景。
示例文件结构分析
这个示例展示了一个串行(Serial)工作流,其中包含了多种不同类型的混沌实验,它们将按照定义的顺序依次执行。让我们详细解析这个工作流的组成:
1. 工作流基本信息
apiVersion: chaos-mesh.org/v1alpha1
kind: Workflow
metadata:
name: try-workflow-serial
spec:
entry: the-entry
apiVersion
和kind
表明这是一个 Chaos Mesh 的工作流资源metadata.name
定义了工作流的名称spec.entry
指定了工作流的入口模板
2. 串行执行模板
templates:
- name: the-entry
templateType: Serial
deadline: 240s
children:
- workflow-stress-chaos
- prefix-suspending
- workflow-network-chaos
- suffix-suspending
- workflow-pod-chaos
templateType: Serial
表示这是一个串行执行模板deadline: 240s
设置整个工作流的超时时间为240秒children
列表定义了要按顺序执行的子模板
各子模板详解
1. CPU压力测试 (StressChaos)
- name: workflow-stress-chaos
templateType: StressChaos
deadline: 20s
stressChaos:
mode: one
selector:
labelSelectors:
"app": "hello-kubernetes"
stressors:
cpu:
workers: 1
load: 20
options: [ "--cpu 1", "--timeout 600" ]
- 对标签为
app: hello-kubernetes
的Pod施加CPU压力 - 使用1个工作线程,负载为20%
- 测试将持续20秒
2. 暂停阶段 (Suspend)
- name: prefix-suspending
templateType: Suspend
deadline: 10s
- 工作流将在此处暂停10秒
- 这种暂停可以用来观察系统在前一个混沌实验后的状态
3. 网络延迟实验 (NetworkChaos)
- name: workflow-network-chaos
templateType: NetworkChaos
deadline: 20s
networkChaos:
direction: to
action: delay
mode: all
selector:
labelSelectors:
"app": "hello-kubernetes"
delay:
latency: "90ms"
correlation: "25"
jitter: "90ms"
- 对目标Pod的所有入向网络流量添加延迟
- 基础延迟为90毫秒,抖动也是90毫秒
- 相关性设置为25%,意味着延迟变化不会完全随机
4. 再次暂停 (Suspend)
- name: suffix-suspending
templateType: Suspend
deadline: 5s
- 工作流将在此处短暂暂停5秒
5. Pod终止实验 (PodChaos)
- name: workflow-pod-chaos
templateType: Schedule
deadline: 40s
schedule:
schedule: "@every 2s"
concurrencyPolicy: Allow
type: PodChaos
podChaos:
action: pod-kill
mode: one
selector:
labelSelectors:
"app": "hello-kubernetes"
- 每2秒随机杀死一个匹配的Pod
- 实验将持续40秒
- 使用
mode: one
表示每次只影响一个Pod
工作流执行逻辑
这个工作流将按照以下顺序执行:
- 首先执行CPU压力测试,持续20秒
- 然后暂停10秒,用于观察系统状态
- 接着注入网络延迟,持续20秒
- 短暂暂停5秒
- 最后执行Pod终止实验,每2秒杀死一个Pod,持续40秒
整个工作流的总超时时间为240秒(4分钟),如果任何步骤超过了其各自的deadline,工作流将被终止。
实际应用场景
这种串行工作流特别适合模拟复杂的故障场景,例如:
- 先施加CPU压力,观察系统在高负载下的表现
- 然后引入网络延迟,模拟网络不稳定的情况
- 最后随机杀死Pod,测试系统的自愈能力
通过这种组合测试,可以全面验证系统的健壮性和容错能力。
总结
Chaos Mesh 的工作流功能提供了强大的编排能力,使得用户可以轻松构建复杂的混沌实验场景。这个串行工作流示例展示了如何将不同类型的混沌实验组合在一起,形成一个完整的测试流程。在实际生产环境中,可以根据具体需求调整各个实验的参数和执行顺序,以达到最佳的测试效果。
chaos-mesh 项目地址: https://gitcode.com/gh_mirrors/cha/chaos-mesh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考