Kubernetes同一Pod多容器共享卷:debian写入的文件为何在Nginx目录
核心原理说明
这个现象是Kubernetes Pod的共享Volume机制决定的,和Pod、Volume、容器挂载的逻辑直接相关:
- 首先Volume是Pod级别的存储资源,生命周期和所属Pod完全一致,独立于单个容器的生命周期,容器销毁重建不会影响Volume内的内容。
- 同一个Pod内的任意容器,都可以将同一个Volume挂载到自身文件系统的任意路径,所有挂载了该Volume的容器,访问对应挂载路径时,实际读写的都是同一个存储实体的内容。
对应官方教程的场景拆解
你看到的教程示例里的Pod配置做了以下配置:
- 先声明了一个
shared-data类型为emptyDir的共享Volume - nginx容器将
shared-data挂载到了自身的/usr/share/nginx/html路径——这正是nginx默认的静态资源服务根目录 - debian容器将同一个
shared-data挂载到了自身的/pod-data路径
当你在debian容器内写入/pod-data/index.html时,本质是写入了两个容器共享的shared-dataVolume,而nginx的服务根目录正好挂载了同一个Volume,自然就能直接读到这个文件,看起来就像是内容直接写入了nginx的根目录。
你可以简单类比为:两个容器给同一个共享文件夹创建了不同的快捷方式,debian的快捷方式放在
/pod-data,nginx的快捷方式放在/usr/share/nginx/html,操作任意快捷方式内的文件,实际修改的都是背后同一个共享文件夹的内容。
内容的提问来源于stack exchange,提问作者KiddoDeveloper
相关产品推荐
相关产品推荐

