简单来说,持久卷 (PV) 和持久卷声明 (PVC) 有什么区别?

What is the difference between persistent volume (PV) and persistent volume claim (PVC) in simple terms?

参考文档,Kubernetes/Openshift中的持久卷(PV)和持久卷声明(PVC)有什么区别?

两者简单来说有什么区别?

来自docs

PVs are resources in the cluster. PVCs are requests for those resources and also act as claim checks to the resource.

因此,持久卷 (PV) 是主机上存储持久数据的 "physical" 卷。持久卷声明 (PVC) 是平台为您创建 PV 的请求,您通过 PVC 将 PV 附加到您的pods。

类似于

Pod -> PVC -> PV -> Host machine

PVC 是对存储需求的声明,可以在某个时候变得可用/满足 - 与某些实际的 PV 绑定.

有点像一个promise的异步编程概念。 PVC 承诺它会在某个时候 "translate" 进入您的应用程序将能够使用的存储卷,以及定义的特征之一,如 class、大小和访问模式(ROX、RWO 和 RWX) .

这是一种从 pods/deployments 中抽象出对特定存储实现的思考的方法。您的应用程序在大多数情况下不需要声明 "give me NFS storage from server X of size Y";它更像是 "I need persistent storage of default class and size Y".

有了这个,不同集群上的部署可以选择不同地满足该需求。一个可以 link EBS 设备,另一个可以配置 GlusterFS,两种情况下您的核心清单仍然相同。

此外,您可以在部署中定义 Volume Claim Templates,这样每个 pod 都会自动创建一个反映 PVC(即,支持 infrastructure-agnostic 一组可扩展 pods 的存储定义,其中每个都需要自己的专用存储空间)。

Persistent Volume Claim 告诉您在特定集群中您可以访问哪些选项,他们在这家名为 Smart Tech 的商店收到了这份通告,其中包含一些关于您的配置选项的广告,这些广告就是 Persistent Volume Claim。

在你的配置文件中,你写下你将在你的集群中拥有的不同的 Persistent Volume Claims,有点像你给圣诞老人的愿望清单,但你当然会把它带给销售人员完成后在 Smart Tech。

所以你写了一个配置文件,说应该有一个 600GB 的硬盘驱动器选项可供所有集群使用,还有一个 1TB 的硬盘驱动器选项。

当您选择 Persistent Volume Claim 的这些选项之一时,您会请求 Kubernetes(销售人员)去为您获取该选项,您选择的选项,Kubernetes 必须查看这些实例储藏室中随时可用的存储选项。这些硬盘驱动器实例可以立即使用,它们被认为是静态配置的,因为它们是提前创建的。

另一方面,当您向销售人员询问 Kubernetes 时,有动态创建的动态配置选项,有点像 just-in-time 生产,它在您立即提出要求时创建.

所以 Persistent Volume Claim 是选项的存储广告,无论你选择哪一个,Kubernetes 都会去获取它,一个在存储中,一个在运行中创建。

持久卷是您从 Kubernetes 获得的您要求的实际产品或选项。如果 Kubernetes 没有您要求的内容,它将尝试为您即时创建它。

所以 PVC 是 Smart Tech 宣传的,他们必须向您的集群提供销售人员将为您提供的 Kubernetes,而 PV 是交付给您的实际成品。

短:
- 这里有存储空间!持久卷 (PV)
- 真正需要的存储空间,您可以得到! PersistentVolumeClaim (PVC)

PersistentVolume(PV)和PersistentVolumeClaim(PVC)是Kubernetes提供的资源API。 PV 是一块应该由管理员预先分配的存储空间。而PVC是用户对一块存储的请求。

将PV和PVC与节点和pods进行比较,您可以找到一些共同点。 PV就像一个节点,它定义了存储。 像 pods 这样的 PVC 需要资源(Mem,CPU)并在节点有资源分配的情况下获取它们,在这种情况下它是一个存储。

  1. PersistentVolume (PV) 是集群或中央存储中的一块存储,比方说 100GB。

  2. PersistentVolumeClaim (PVC) 是用户请求应用程序使用 10GB 的存储空间。

在现实生活场景中,PV是整块蛋糕,PVC是小菜一碟(但如果没有其他人吃,你可以吃整块蛋糕(就像没有其他应用程序可以使用一样整个 PV )).

简短

持久卷 - 可用存储假设您有 100Gi

持久卷声明 - 您从持久卷请求,假设您请求 10Gi,您会得到它,但如果您请求 110Gi,您将不会得到它。

PersistentVolume (PV) 是集群中的一块存储,已由 server/storage/cluster 管理员配置或使用存储 类 动态配置。它是集群中的资源,就像节点一样。

PersistentVolumeClaim (PVC) 是用户对存储的请求,可以从 PV 获得。它类似于 Pod。 Pods消耗节点资源,PVC消耗PV资源。 Pods 可以请求特定级别的资源(CPU 和内存)。声明可以请求特定的大小和访问模式(例如,它们可以挂载为 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany。

持久卷——存储卷的低级表示。 Persistent Volume Claim——Pod 和 Persistent Volume 之间的绑定。 存储 Class — 允许动态配置持久卷。