subPath的使用方法一共有两种:
1. 同一个pod中多容器挂载同一个卷时提供隔离
2. 将configMap和secret作为文件挂载到容器中而不覆盖挂载目录下的文件
本文主要解释第一点,按照k8s官网的解释,subPath在是挂载卷中的存储目录,不指定默认存储在卷的根目录
Screenshot from 2021-03-04 22-40-23.png
首先创建一个包含两个container的pod,对应的yaml文件如下,两个container挂载目录下的文件都会存储在卷的根目录下
Screenshot from 2021-03-04 22-31-12.png
接下来做一个简单的验证,首先进到test-container中在/etc/volume-file下创建一个a.txt的文件,退出之后进入test-container2的/etc/volume-file目录,因为未指定subPath,文件会直接存储在卷的根目录下,所以在test-container2下可以看见test-container刚刚新建的a.txt文件
Screenshot from 2021-03-04 22-37-11.png
接下来试着加入subPath,对应的yaml文件如下
Screenshot from 2021-03-04 22-35-22.png
同样进入两个容器的挂载目录下创建新文件,可以看到subPath起到了隔离的作用
Screenshot from 2021-03-04 22-36-32.png
网友评论