在Kubernetes里,Volume存在明确的生命周期(与包含该数据卷的容器组相同)。因此,Volume的生命周期比同一容器组中任意容器的生命周期要更长,不管容器重启了多少次,数据都能被保留下来。当然,如果容器组退出了,数据卷也就自然退出了。此时,根据容器组所使用的Volume型不同,数据可能随数据卷的退出而删除,也可能被真正持久化,并在下次容器组重启时仍然可以使用。
从根本上来说,一个Volume仅仅是一个可被容器组中的容器访问的文件目录(也许其中包含一些数据文件)。这个目录是怎么来的,取决于该数据卷的类型(不同类型的数据卷使用不同的存储介质)。
容器中的一个进程所看到(可访问)的文件系统是由容器的Docker镜像和容器所挂载的数据卷共同组成的。Docker镜像将被首先加载到该容器的文件系统,任何数据卷都被在此之后挂载到指定的路径上。Volume不能被挂载到其他数据卷上,或者通过引用其他数据卷。同一个容器组的不同容器各自独立地挂载数据卷,即同一个容器组中的两个容器可以将同一个数据卷挂载到各自不同的路径上(我好像对这个挂载原理还是不太理解)。
(我之前没有从这些角度看过Volume)