容器 38:重启了,业务真的恢复了吗
先界定故障注入范围
仅在专用 kind 集群和自建 namespace 中注入四类故障:单容器内存上限的有界申请、明确终止自建容器进程、只阻断实验 Pod 之间的网络、停掉专门提供的测试节点。每次保留注入前的基线:镜像 digest、Pod UID、容器 ID、PID、网络路径、state 文本哈希与固定负载;注入后记录每次请求开始/结束、HTTP 状态/超时、相应事件及新的对象 ID。先定义恢复为“连续指定次数业务请求成功,且状态校验一致”,再测从第一条失败请求到恢复的时间。节点测试需有宿主控制台/VM 恢复路径,不能停止共享宿主上的 kubelet、daemon 或默认网络。
正常恢复例是一个受控容器被终止后由节点重新启动,新 PID 取得原有卷并在约定窗口内重新响应;边界例是 readiness 重新变绿,但自有测试卷上的状态未满足应用数据条件,因而不能称为完整恢复。内存事件还要结合27 的 cgroup/事件区分节点驱逐;网络阻断要分清插件策略拒绝与未就绪服务。四项实验和清理门槛、探针源码提供无界压力之外的材料。
云端没有独立测试节点、kind/CSI/CRI,四类故障、恢复时间和失败率一律 NOT_RUN;没有“看起来合理”的模拟数字。
| 现象 | 必留证据 | 排除误判 |
|---|---|---|
| Ready 重新为 true | 实际请求与数据状态 | Ready 不等于业务恢复 |
| Pod 被重新创建 | UID/容器 ID/PID 前后 | 不是原进程续跑 |
| 请求超时 | 两端网络/状态与时间窗 | 不等于一定被内存杀死 |
练习
- 先预测内存限制导致进程终止与节点整体压力驱逐的事件差异,专用 VM 分别观测、清理并核对卷状态。
- 先预测节点停机后旧 Pod UID、卷位置与业务状态会怎样,记录每条请求和存储能力边界,不把“另节点有 Pod”视作成功。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.


