16已经表明容器内同一路径可能属于可写层、bind、volume 或 tmpfs;Kubernetes 加上声明、绑定与节点挂载流程,才使 Pod 能看到一份外部存储。PV/PVC、StorageClass、CSI 的对象关系见存储体系;这里专看“这次写入究竟落到了哪一个挂载对象”。

声明成功不等于目录可写

PVC 指明容量/访问模式等需求,通过绑定/动态供给关联 PV;具体 CSI 驱动与节点组件按存储类型准备卷,把它挂载进 Pod;进程最终看到的是自己的 mount namespace 中某个路径。不同驱动对动态供给、重挂载、跨节点恢复、备份一致性的承诺不同。即使 Pod Running,卷的所有者、只读设置或应用 UID 不匹配仍可导致写入失败;不能仅凭 PVC Bound 说业务数据已可恢复。

正例在专用 kind VM 且有明确 CSI 驱动能力时,用同一 probe-app 的 /state 写一段合成文本,记录 PVC UID、PV 名称、Pod UID、容器 ID、mountinfo、应用响应;分别重建容器、重建 Pod、换节点,区分每一步数据是否留在原卷。反例将自有卷作为只读或不匹配所有者挂入,在同一服务端点发写入请求,保存准确错误与事件;不得修改共享 PVC 或改权限绕过安全机制。实验步骤和探针包可独立获取。

本机无 kind/CSI/外部共享存储能力;即使旧文提到 CSI,也不能据此写入本篇的宿主 mountinfo 或持久化结果,完整实验 NOT_RUN。任何换节点案例先核查驱动是否支持所需访问模式,禁止把单节点路径模拟成跨节点存储。

现象 证据 不能推出
PVC Bound PV/驱动/节点 mount 应用有写权限
重建 Pod 数据仍在 相同卷 ID、文件内容 换节点也必然可用
写入成功 真实持久化/备份检查 fsync/备份一定完成

练习

  1. 先预测删除容器、重建同一 Pod 对卷内容和容器可写层各有什么影响;在专用 CSI 环境分别核对挂载 ID 与数据。
  2. 预测把原来可写的挂载改为只读后 /state 的 HTTP 行为,保存应用异常与节点事件,再还原自有卷配置。

上一篇:29:Service;下一篇开始按同一 Pod UID 关联应用延迟、cgroup 与请求日志。

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

参考资料