背景
容器节点(如 Kubernetes 集群中的工作节点)承载着容器资源,负责运行和管理容器实例。在节点业务 QPS 骤增或者服务内存泄露时,可能导致节点资源利用率增高,从而影响业务甚至导致业务进程被杀死。
为了提高容器服务的可靠性和稳定性,需进行节点故障演练。通过演练,可以验证系统在容器节点出现故障时能否正常运行,提前暴露此故障场景下的一系列问题,以便优化系统架构并做好应急预案。
演练实施
步骤一:演练准备
新建容器节点,添加实例,部署测试服务。若已有可以演练的容器节点,则直接创建演练。
进入探针管理页面为 CVM 节点安装探针,具体安装方式请参考 探针管理 进行操作。
步骤二:创建演练
1. 登录 云顾问 > 混沌演练控制台,进入演练管理页面,单击新建演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/967c991bb1506370c126a5c38cc53c8c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/967c991bb1506370c126a5c38cc53c8c.png)
2. 进入经验模板选择界面,点击跳过,创建空白演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/98833fb81d646b0b8f852c6da0c3a0fa.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/98833fb81d646b0b8f852c6da0c3a0fa.png)
3. 填写演练名称和演练描述,点击下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/818989f23f998851fd142ed754122048.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/818989f23f998851fd142ed754122048.png)
4. 填写动作组信息,选择资源类型为容器,资源对象选择标准集群普通节点。
![](https://qcloudimg.tencent-cloud.cn/image/document/2c5de9f9ad46731a7f91808fd61aefe6.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2c5de9f9ad46731a7f91808fd61aefe6.png)
5. 点击添加实例,在实例列表中选择参与演练的实例。![](https://qcloudimg.tencent-cloud.cn/image/document/2de214d37fb8c975c9e71542d61f2547.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2de214d37fb8c975c9e71542d61f2547.png)
6. 在演练动作处点击立即添加演练动作,分别在 CPU 资源、内存资源、磁盘资源选择动作。![](https://qcloudimg.tencent-cloud.cn/image/document/13c5398ff19cfc7fb5f3cc8beb5eeecc.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/13c5398ff19cfc7fb5f3cc8beb5eeecc.png)
7. 根据需要修改动作参数(该演示直接采用默认值进行演练)。
7.1 CPU 利用率高
![](https://qcloudimg.tencent-cloud.cn/image/document/29ff6200a56b13a2f25a8ba8657010e0.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/29ff6200a56b13a2f25a8ba8657010e0.png)
说明:
cpu 利用率:指定 CPU 负载百分比,取值在0 - 100之间。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
调度优先级:影响进程在 CPU 调度中的优先级。较低的 nice 值使进程更有可能获得 CPU 时间片,从而提高其执行优先级。仅当利用率为100%时生效。
7.2 内存利用率高
![](https://qcloudimg.tencent-cloud.cn/image/document/17dd4463b6ba2c2f7d25ee2e506a9907.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/17dd4463b6ba2c2f7d25ee2e506a9907.png)
说明:
内存使用率:指定内存负载百分比,取值在0 - 100之间。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
是否开启 OOM 保护:开启后会降低故障进程被 OOM-KILL 的可能性,优先 Kill 业务进程。
内存占用速率:每秒增加的内存使用量。
7.3 磁盘使用率高
![](https://qcloudimg.tencent-cloud.cn/image/document/b30b3881d0cba90ac93b50999503bac8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b30b3881d0cba90ac93b50999503bac8.png)
说明:
动作参数说明:
磁盘目录:需要进行填充的磁盘目录,即文件写入目录。
文件大小:填充的文件大小。
磁盘使用率:通过staf命令获取磁盘使用情况,计算出达到指定使用率所需的文件大小。
保留空间:剩余空间保留大小。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
如果文件大小、磁盘使用率、保留空间参数都存在,优先级计算逻辑为: 磁盘使用率 > 保留空间 > 文件大小。
7.4 磁盘 IO 负载
![](https://qcloudimg.tencent-cloud.cn/image/document/6ce030950135491f45c2df85396f89f6.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6ce030950135491f45c2df85396f89f6.png)
说明:
磁盘目录:指定提升磁盘 IO 的目录,会作用于其所在的磁盘上。
模式:提供读、写两种方式实施高负载。
块大小:指定每次读取或写入的块大小。
块个数:指定复制的块个数。
持续时间:故障动作持续时间,达到该时间探针会自动将故障恢复。
8. 完成动作组编辑,点击下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/d9fd3ee9baf21f46c4fc9d317898af3c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d9fd3ee9baf21f46c4fc9d317898af3c.png)
9. 点击添加监控指标。![](https://qcloudimg.tencent-cloud.cn/image/document/7edca91c0cafa5d7e1c33231ac162c68.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/7edca91c0cafa5d7e1c33231ac162c68.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e4d12f3b4178526be7ce0e95600ac7c3.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e4d12f3b4178526be7ce0e95600ac7c3.png)
10. 点击提交完成演练创建。![](https://qcloudimg.tencent-cloud.cn/image/document/c948a2289527fc40fb2f49728b09e797.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c948a2289527fc40fb2f49728b09e797.png)
步骤三:执行演练
1. 通过预检查看节点探针状态,将未安装的节点按照预检结果提示内容进行安装。![](https://qcloudimg.tencent-cloud.cn/image/document/72375abf3ecf95ab9aea56a664cbbf16.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/72375abf3ecf95ab9aea56a664cbbf16.png)
2. 点击执行开始注入 CPU 高负载故障。![](https://qcloudimg.tencent-cloud.cn/image/document/bf4cdb4e46ccfef01637ba2ef81dd1e8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/bf4cdb4e46ccfef01637ba2ef81dd1e8.png)
3. 观察节点监控指标,CPU 利用率达到预设值,并且在到指定时间完成恢复。
![](https://qcloudimg.tencent-cloud.cn/image/document/c269460af32c5e321f2b0297ed44298a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c269460af32c5e321f2b0297ed44298a.png)
4. 执行内存利用率高动作,观察监控指标。
![](https://qcloudimg.tencent-cloud.cn/image/document/a2cc70a8f3d037f53630d8d1992cf653.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a2cc70a8f3d037f53630d8d1992cf653.png)
5. 执行磁盘利用率高动作,进入终端使用 df 命令查看使用率。
![](https://qcloudimg.tencent-cloud.cn/image/document/6a9bf8f0f4875c7f84c671a4f370506d.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6a9bf8f0f4875c7f84c671a4f370506d.png)
6. 执行磁盘IO高负载动作,进入终端使用 iostat 命令观察。![](https://qcloudimg.tencent-cloud.cn/image/document/d3fb48753c07d2f1f0cc21a07d7a9b98.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d3fb48753c07d2f1f0cc21a07d7a9b98.png)
说明:
iostat -x 可查看块设备运行状态的详细信息,该动作主要查看 %util 参数,表示设备发出 I/O 请求所用时间的百分比,当接近100%时表示设备带宽利用率几乎达到了其最大容量,使整个磁盘性能下降,严重影响处理其他读写请求。