写点什么

Pod/Node CPU 故障注入

  • 2024-01-18
    广东
  • 本文字数:913 字

    阅读完需:约 3 分钟

Pod/Node CPU 故障注入

1. 介绍

在复杂的分布式系统中,为了验证服务质量、监控告警、流量调度、弹性伸缩等能力,我们需要模拟不同的故障场景。本文将介绍如何使用混沌工具对 Pod/Node 进行 CPU 负载故障注入,以达到指定的 CPU 负载百分比。

2. 参数

在进行 CPU 负载故障注入时,我们可以通过以下参数来控制:

  • nice:指定 CPU 负载进程的 nice 值(静态优先级),取值范围为[-20, 19]。仅当 cpuPercent 值为 100% 时生效。此参数为可选,>= v1.3.7 版本支持。

  • duration:自动恢复时长,到达时间后会自动销毁故障。单位是秒。通用参数,默认值为 60。

  • nice:指定 CPU 负载进程的 nice 值(静态优先级),取值范围为[-20, 19]。仅当 cpuPercent 值为 100% 时生效。此参数为可选。

  • duration:自动恢复时长,到达时间后会自动销毁故障。单位是秒。通用参数,默认值为 60。

3. 案例

3.1 使所有 CPU 核负载达到 80%

./chaos-executor attack --target cpu --action burn --flags "percent=80;duration=100"
复制代码

3.2 使指定的 CPU 核(如 1,3)负载达到 100%

./chaos-executor attack --target cpu --action burn --flags "core-list=1,3;duration=100"
复制代码

4. 实现原理

混沌工具在进行 CPU 负载故障注入时,主要通过以下方式实现:

  1. 启动 chaos_burncpu 进程,空跑 for 循环来消耗 CPU 时间片。

  2. 配置参数 core-list 时,对每个核绑定一个进程消耗 CPU 时间片。

  3. nice 参数(通过 man nice 了解 nice 意义)仅在 percent 参数设置为 100% 时生效,用于修改 chaos_burncpu 的调度优先级。当设置为负数时,表示会提升 chaos_burncpu 的调度优先级,从而实现模拟 CPU 抢占功能。

5. 验证故障生效

我们可以通过以下命令查看 CPU 负载情况,以验证故障是否生效:

  • 物理机:通过 top 命令查看 CPU 负载情况。CPU 使用率 = 100 - CPU 空闲比例(idle)。

  • 容器

docker stats:查看容器 CPU 使用情况。

crictl stats:查看容器 CPU 使用情况。

kubectl top:查看容器 CPU 使用情况。


通过以上方法,我们可以轻松地对 Pod/Node 进行 CPU 负载故障注入,从而验证系统在不同负载下的表现,以及监控告警、流量调度、弹性伸缩等能力。


使用腾讯云混沌演练平台实施 CPU 高负载。故障实现原理是预先在混沌演练平台探针管理处安装腾讯自研 Agent 探针。



用户头像

检验系统稳定,构建韧性业务 2023-10-16 加入

腾讯混沌演练平台提供高效便捷、安全可靠的故障演习服务,除可视化故障注入服务外,还提供行业经验模板,监控护栏等核心功能,助力用户及时发现业务容灾隐患、验证高可用预案的有效性,从而提高系统的可用性和韧性。

评论

发布
暂无评论
Pod/Node CPU 故障注入_k8s_腾讯云混沌演练平台_InfoQ写作社区