跳到主要内容

模拟时间故障

TimeChaos 实验用于模拟时间发生偏移的场景。本文档将介绍如何创建 TimeChaos 实验。

备注

TimeChaos 只影响容器中 PID 命名空间的 PID 1 进程及其子进程,通过 kubectl exec 启动的进程不受其影响。

参数缩写说明默认值是否必填
--time-offset指定时间偏移的长度。
--clock-id指定时间偏移作用的时钟,详见 clock_gettime 文档CLOCK_REALTIME
--container-c指定注入故障的容器名称。

使用 kbcli 模拟故障注入

执行以下命令,向指定的 Pod 中注入时间故障,将该 Pod 中进程的时间向前推移 5 秒。一旦时间故障注入,该 Pod 就会处于不可用状态,并立即重启。

kbcli fault time --time-offset=-5s

使用 YAML 文件模拟故障注入

本节介绍如何使用 YAML 文件模拟故障注入。你可以参考 Chaos Mesh 官方文档获取更详细的信息。

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

    在下例中,Chaos Mesh 向指定的 Pod 中注入时间故障,将该 Pod 中进程的时间向前推移 5 秒。一旦时间故障注入,该 Pod 就会处于不可用状态,并立即重启。

    apiVersion: chaos-mesh.org/v1alpha1
    kind: TimeChaos
    metadata:
    creationTimestamp: null
    generateName: time-chaos-
    namespace: default
    spec:
    duration: 10s
    mode: all
    selector:
    namespaces:
    - default
    timeOffset: -5s
  2. 使用 kubectl 创建实验。

    kubectl apply -f ./time.yaml

字段说明

下表介绍以上 YAML 配置文件中的字段。

参数类型说明默认值是否必填
timeOffsetstring指定时间偏移的长度。
clockIds[]string指定时间偏移作用的时钟,详见 clock_gettime 文档["CLOCK_REALTIME"]
modestring指定实验的运行方式,可选项包括:one(表示随机选出一个符合条件的 Pod)、all(表示选出所有符合条件的 Pod)、fixed(表示选出指定数量且符合条件的 Pod)、fixed-percent(表示选出占符合条件的 Pod 中指定百分比的 Pod)和 random-max-percent(表示选出占符合条件的 Pod 中不超过指定百分比的 Pod)。
valuestring取决于 mode 的配置,为 mode 提供对应的参数。例如,当你将 mode 配置为 fixed-percent 时,value 用于指定 Pod 的百分比。
containerNames[]string指定注入故障的容器名称。
selectorstruct指定目标 Pod。