串行或并行运行实验

    Chaos Mesh Workflow 提供了串行与并行两种实验编排方式。你可以依据实验需求,编排调度多个实验的运行方式。

    • 如果你想要按照顺序进行多个混沌实验,可以使用串行节点。
    • 如果你想要同时进行多个混沌实验,可以使用并行节点。

    在设计串行节点与并行节点时使用了组合模式,可以包含多个任意类型的节点,并以特定的模式执行这些被组合的节点。这也意味着你可以嵌套组合串行与并行节点来实现复杂的调度。

    在 Workflow 中创建 时,使用 templateType: Serial 便可以声明一个串行节点。

    串行节点中另一个必需的字段为 children,类型为 []string ,值为串行执行的其他 template 名称。例如:

    声明了一个串行节点,名为 serial-of-3-node,将按照顺序执行 workflow-stress-chaossuspendingworkflow-network-chaos。待所有任务完成后,串行节点被标记为完成。

    串行节点中的 deadline 为可选字段,目的是限制整个串行流程的最长执行时间。若达到了这个时间,其下属的子节点将会被停止,未执行的节点也不会再执行。若所有子节点先于 deadline 完成了行为,串行节点会立刻被标记为完成,deadline 没有任何影响。

    在 Workflow 中创建 templates 时,使用 templateType: Parallel 便可以声明一个并行节点。

    并行节点中另一个必需的字段为 children,类型为 []string,值为并行执行的其他 template 名称。例如:

    1. apiVersion: chaos-mesh.org/v1alpha1
    2. kind: Workflow
    3. metadata:
    4. name: try-workflow-parallel
    5. entry: parallel-of-2-chaos
    6. templates:
    7. templateType: Parallel
    8. deadline: 240s
    9. children:
    10. - workflow-stress-chaos
    11. - workflow-network-chaos
    12. - name: workflow-network-chaos
    13. templateType: NetworkChaos
    14. deadline: 20s
    15. networkChaos:
    16. direction: to
    17. action: delay
    18. mode: all
    19. selector:
    20. labelSelectors:
    21. 'app': 'hello-kubernetes'
    22. latency: '90ms'
    23. correlation: '25'
    24. - name: workflow-stress-chaos
    25. templateType: StressChaos
    26. deadline: 20s
    27. stressChaos:
    28. mode: one
    29. selector:
    30. labelSelectors:
    31. 'app': 'hello-kubernetes'
    32. stressors:
    33. cpu:
    34. workers: 1
    35. load: 20

    声明了一个并行节点,名为 parallel-of-2-chaos,将同时执行 workflow-stress-chaosworkflow-network-chaos。待所有任务完成后,并行节点被标记为完成。

    并行节点执行时,会同时执行 children 中所有声明的任务。

    Chaos Dashboard 会创建一个预定义的串行节点,名为 entry。因此,当在 Chaos Dashboard 中创建串行节点的 Workflow 时,默认会在 下创建流程。

    你可以在 Chaos Dashboard 中创建一个并行节点 Parallel,然后在该节点下创建子节点。

    Create Parallel Node on Dashboard

    你可以将串行与并行节点嵌套在一起,从而创建更复杂的流程。