一、概述
1、我们此前讲过根据应用本身是否需要持久存储数据以及某一次请求和之前的请求是否有联系,可以分为四类应用
a、有状态,要存储
b、有状态,无持久存储
c、无状态,要存储
d、无状态,无持久存储
其中,大多数和数据存储服务相关的应用和有状态应用几乎都是需要持久存储数据的。在docker中说过,容器有生命周期,为了使容器将来终结以后可以把其删除,甚至是编排到其它节点上去运行,意味着我们数据不能放在容器本地,不能放在容器自己的名称空间中。注意这是两套逻辑,以k8s为例,pod运行时应该是运行在某个节点上的,只要不出故障他就一直在这个节点上运行,节点故障它才会重新调度,只要节点不故障他就不会走,就一直重启重启,因此只要pod故障被删除,那么这个pod的生命周期也就结束了,其上面的数据也就随着结束一起消失,为了突破pod生命周期受限的现状,我们需要在pod自由文件系统之外的地方来存放数据。我们使用存储卷,相当于把pod内部某一目录与我们节点上某一目录建立关联关系,随后在容器内该目录存放的数据都被存放在节点上了,所以我们删除容器再重建容器只要卷不受影响那么数据都是没问题的,在一定程度上拥有了持久功能,但是在k8s中当pod生命周期结束后下一次启动有可能不会在相同的节点上,因此我们需要使用脱离节点而存在的存储设备,共享存储设备。为此,我们k8s就提供了能应付各种类型的存储卷来让我们使用或非持久,或半持久或一直持久的功能。
2、对k8s中的pod我们知道有这样一个特定,对同一个pod内的各个容器可共享访问同一组卷,因为对k8s来讲,存储卷不属于容器而属于pod,所以如果两个容器都挂载了就相当于两个容器共享数据了,而pod为什么能有存储卷和名称空间呢,我们此前讲过,pod底层有个基础容器但是默认不启动而且是靠一个基础镜像来创建的
原文地址:https://www.cnblogs.com/Presley-lpc/p/11038210.html