kubernetes之卷

此博客借鉴了较多书中的内容,仅仅作为自己学习整理使用。该书为《kubernetes in action》,有兴趣的朋友可以读读这本书。

【卷的定义】
pod中的每个容器都有自己独立的文件系统,因为文件系统来自容器镜像。
每个容器都是通过在构建镜像时加入的详细配置文件来启动的。

在某些场景下,我们可能希望新的容器可以在之前容器结束的位置继续运行,
比如在物理机上重启进程。可能不需要整个文件系统被持久化,但又希望能保存实际数据的目录。

kubernetes通过定义存储卷来满足这个需求,它们不像pod这样的顶级资源,而是定义为pod的一部分,并和pod共享相同的生命周期。这意味着在pod启动时创建卷,并在删除pod时销毁卷。
因此,在容器重启期间,卷的内容不会变,新的容器可以识别前一个容器写入到卷中的所有文件。
另外,如果一个pod包含多个容器,多个容器可以共享一个卷。

pod中的所有容器都可以使用卷,但必须先将它挂载在每个需要访问它的容器中。在每个容器中,都可以在其文件系统的任意位置挂载卷。

在pod的规范中定义卷是不够的,如果我们希望容器能够访问它,还需要在容器的规范中定义一个VolumeMount。

卷被绑定到pod的lifecycle中,只有pod存在时才会存在,但取决于卷的类型,即使在pod和卷消失之后,卷的文件也可能保持原样,并可以挂载到新的卷中。

【卷的分类】
emptyDir:用于存储临时数据的简单空目录。
hostPath:用于将目录从工作节点的文件系统挂载到pod中。
nfs:挂载到pod中的NFS共享卷。

猜你喜欢

转载自blog.csdn.net/qq_25221835/article/details/103770224