【发布时间】:2019-05-17 21:15:01
【问题描述】:
我知道 pvc 在 k8s 中可以用作卷。我知道如何创建它们以及如何使用它们,但我不明白为什么有两个,PV 和 PVC。
谁能告诉我 PV/PVC 区别背后的架构原因?它试图解决什么样的问题(或者这背后的历史是什么)?
【问题讨论】:
标签: kubernetes
我知道 pvc 在 k8s 中可以用作卷。我知道如何创建它们以及如何使用它们,但我不明白为什么有两个,PV 和 PVC。
谁能告诉我 PV/PVC 区别背后的架构原因?它试图解决什么样的问题(或者这背后的历史是什么)?
【问题讨论】:
标签: kubernetes
很容易被名字抛出,但kubernetes documentation does have an explanation of the difference:
PersistentVolume (PV) 是集群中由管理员配置的一块存储。它是集群中的资源,就像节点是集群资源一样。 PV 是与 Volumes 类似的卷插件,但其生命周期独立于使用 PV 的任何单个 pod。
和
PersistentVolumeClaim (PVC) 是用户的存储请求。它类似于 pod。 Pod 消耗节点资源,PVC 消耗 PV 资源。 Pod 可以请求特定级别的资源(CPU 和内存)。声明可以请求特定的大小和访问模式(例如,可以安装一次读/写或多次只读)。
因此,PVC 将应用程序与特定存储分离。它允许应用程序说它需要一些满足某些要求的存储,而无需具体说明是哪一块存储。这也使得可以定义集群级别的规则来满足应用程序的存储要求。
【讨论】:
尽管名称不同,但它们有两个不同的用途:存储抽象 (PV) 和此类存储请求 (PVC)。它们一起实现了关注点的清晰分离(使用我们的Kubernetes Cookbook 中的图来说明这一点):
存储管理员专注于配置 PV(最好是通过定义存储类 dynamically),开发人员使用 PVC 获取 PV 并在 pod 中使用它。
【讨论】: