我以前曾经使用过这两种类型,我还阅读了以下文档:
https://kubernetes.io/docs/concepts/storage/persistent-volumes/ https://kubernetes.io/docs/concepts/storage/volumes/
但是,仍然不清楚两者之间的区别是什么,两者似乎都支持相同的存储类型,唯一想到的是持久性卷似乎有一个“供应”方面。
实际区别是什么? 两者之间是否有优点/缺点-或者哪种情况比另一种情况更适合?
也许只是“合规糖”吗?
例如,NFS可以作为卷或永久卷安装。两者都需要NFS服务器,并且都将在安装之间“持久化”其数据。在这种情况下会有什么区别?
答案 0 :(得分:3)
据我了解,持久卷的概念是建立在一个卷的基础上的,不同之处在于,持久卷与使用它的Pod更加分离。或如关于持久卷的文档页面的介绍中所述:
PV是类似于Volumes的体积插件,但是其生命周期独立于使用PV的任何单个容器。
另一方面,卷的生命周期取决于使用它的Pod的生命周期:
Kubernetes卷具有明确的生命周期,与包含它的Pod相同。
NFS在这里并不重要。卷和持久卷都是Kubernetes资源。它们提供了数据存储设施的抽象。因此,对于使用群集,该抽象背后的具体操作系统资源并不重要。从某种意义上讲,这就是Kubernetes的重点。
请记住,Kubernetes及其API仍在发展中,这可能也很重要。 Kubernetes开发人员有时可能会选择引入新的概念/资源,这些概念/资源仅与现有的概念/资源有所不同。我认为这样做的原因之一是在保持向后兼容性的同时仍能够微调基本的API概念。另一个示例是复制控制器和副本集,它们在概念上很大程度上重叠,因此在某种程度上是冗余的。虽然,与卷/持久卷问题不同的是,现在已显式弃用了复制控制器。
答案 1 :(得分:2)
在容器的上下文中存在一个卷,也就是说,您不能单独创建一个卷。另一方面,持久卷是具有自己生命周期的一流对象,您可以手动或automatically对其进行管理。
答案 2 :(得分:1)
卷使存储与容器分离。它的生命周期与pod相连。它可以安全地重启容器并在容器中的容器之间共享数据。
Persistent Volume使存储与Pod分离。它的生命周期是独立的。它可以安全地重启Pod,并在Pod之间共享数据。
答案 3 :(得分:0)
这个问题使我发疯。通过我几次的理解和思考:
“幕后”没有区别,区别只是表现形式。同样,“文件”和“文件夹中的文件”之间没有区别。
明智的表达,您将获得模块化,因为您可以将存储属性定义(nfs / xyz / hostpath / etc)与存储请求分开。
可能还存在一个差异,即持久卷具有可以设置的存储限制,尽管我对此不确定。如果是这样,我仍然看不到为什么普通卷也不能同时具有此存储限制功能。
答案 4 :(得分:0)
它们是两种不同的实现,可以提供一些相似的通用功能(因此造成很多混乱)。
永久卷:
StorageClass
设置的支持存储emptyDir
卷类型(https://github.com/kubernetes/kubernetes/issues/75378)音量: