37建立了正常请求链路;故障实验只问这一条链断在何处、多久恢复、有没有损坏或丢失状态。容器重启、Pod 重建和节点恢复不是同一个操作;Pod 出现 Ready 也不等于所有请求成功、数据校验通过。

先界定故障注入范围

仅在专用 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 前后 不是原进程续跑
请求超时 两端网络/状态与时间窗 不等于一定被内存杀死

练习

  1. 先预测内存限制导致进程终止与节点整体压力驱逐的事件差异,专用 VM 分别观测、清理并核对卷状态。
  2. 先预测节点停机后旧 Pod UID、卷位置与业务状态会怎样,记录每条请求和存储能力边界,不把“另节点有 Pod”视作成功。

上一篇:37:全链路;下一篇:39:独立研究。

系列总目录:从进程隔离到运行时与编排。

参考资料