跳到主要内容

模拟压力场景

StressChaos 实验用于模拟容器内压力的场景。本文档介绍如何创建 StressChaos 实验。

参数说明默认值是否必填
--cpu-worker指定施加 CPU 压力的线程个数。必须指定 --cpu-worker--memory-worker 中的一个。
--cpu-load指定占据 CPU 的百分比。0 表示没有增加额外负载,100 表示满负载。总负载为 workers * load20
--memory-worker指定施加内存压力的线程个数。必须指定 --cpu-worker--memory-worker 中的一个。
--memory-size指定分配内存的大小或是占总内存的百分比,分配内存的总和为 size
--container指定容器名称,可以用于指定多个容器。如果未指定,则默认为 Pod 中的第一个容器。

使用 kbcli 模拟故障注入

执行以下命令,在默认命名空间的所有 Pod 的第一个容器中创建进程,并持续进行 CPU 和内存的分配、读取和写入,最多占用 100MB 的内存,持续 10 秒钟。在此过程中,有 2 个线程施加 CPU 压力,1 个线程施加内存压力。

kbcli fault stress --cpu-worker=2 --cpu-load=50 --memory-worker=1 --memory-size=100Mi

使用 YAML 文件模拟故障注入

本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 --dry-run 命令来查看 YAML 文件,还可以参考 Chaos Mesh 官方文档获取更详细的信息。

压力示例

  1. 将实验配置写入到 stress.yaml 文件中。

    在下例中,Chaos Mesh 在默认命名空间的所有 Pod 的第一个容器中创建了一个进程,并持续进行 CPU 和内存的分配、读取和写入,最多占用 100MB 的内存,持续 10 秒钟。在此过程中,有 2 个线程施加 CPU 压力,1 个线程施加内存压力。

    apiVersion: chaos-mesh.org/v1alpha1
    kind: StressChaos
    metadata:
    creationTimestamp: null
    generateName: stress-chaos-
    namespace: default
    spec:
    duration: 10s
    mode: all
    selector:
    namespaces:
    - default
    stressors:
    cpu:
    load: 50
    workers: 2
    memory:
    size: 100Mi
    workers: 1
  2. 使用 kubectl 创建实验。

    kubectl apply -f ./stress.yaml