Kubernetes 是一个经典的容器管理系统,它拥有很多优秀的特性,其中之一就是持久化存储。在 Kubernetes 中,我们可以使用 Persistent Volume(PV)和 Persistent Volume Claim(PVC)来管理持久化存储和分配。
PV 和 PVC 的概念
PV
PV 是 Kubernetes 中的持久化存储资源。它是 Kubernetes 集群中的一部分,提供了多种不同类型的存储,例如云存储、NFS 和本地存储等。
在创建一个 PV 时需要指定一个存储类型、访问模式和存储容量等参数。这些参数会影响到后续使用这个 PV 的 Pod。
PVC
PVC 是一种请求 PV 资源的对象。在 Kubernetes 中,每个 PVC 都绑定到一个 PV,并请求一个特定大小的存储空间。PVC 可以通过指定存储类型、访问模式、存储容量等参数来选择要使用的 PV。
PVC 是 Kubernetes 应用程序和存储之间的接口。一个应用程序可以通过 PVC 请求容器存储,而无需关心底层的存储细节。
如何使用 PV 和 PVC?
使用 PV 和 PVC 通常需要两个步骤:
- 创建 PV
- 创建 PVC 并将其绑定到需要的 PV 上
创建 PV
下面是一个基本的 PV 示例:
-- -------------------- ---- ------- ----------- -- ----- ---------------- --------- ----- ------- ----- --------- -------- ---- ------------ - ------------- ------------------------------ ------ ----------------- ------ --------- ----- ---------
这个示例使用了 hostPath 存储类型,它将 PV 保存在节点上的本地目录中。
- capacity 定义了 PV 的存储容量,这里指定了 10Gi 的存储容量。
- accessModes 定义了 PV 的访问模式,这里指定了 ReadWriteOnce,表示 PV 可以被一个节点挂载为读写模式。
- persistentVolumeReclaimPolicy 定义了当有一个 PVC 与这个 PV 解绑定时,该 PV 被删除的策略,这里指定了 Retain,表示 PV 将保留并不会被删除。
- storageClassName 定义了存储的分类名称,在后面 PVC 的定义中需要使用到之前定义的分类名称进行存储的绑定。
- hostPath 定义了存储的路径,这里将其设置为
/mnt/data
。
创建 PVC
下面是一个基本的 PVC 示例:
-- -------------------- ---- ------- ----------- -- ----- --------------------- --------- ----- -------- ----- ------------ - ------------- ---------- --------- -------- --- ----------------- ------
这个 PVC 示例请求了一个 5Gi 的存储空间,并且使用的存储分类名称和之前创建的 PV 相同。
- accessModes 定义了 PVC 的访问模式,这里需要和之前定义的 PV 的访问模式一致。
- resources 定义了 PVC 的存储容量,这里请求了 5Gi 的空间。
- storageClassName 定义了 PVC 所需要的存储分类名称。
PVC 绑定 PV
PVC 和 PV 都成功创建后,需要将 PVC 绑定到 PV 上,这样 PV 才能被 Kubernetes 集群中的 Pod 使用。
这里演示将之前定义的 PVC 绑定到之前定义的 PV 上:
-- -------------------- ---- ------- ----------- -- ----- --- --------- ----- ----- ----- ----------- - ----- ----- ------ ------------ -------- ----------- ----- ----- ------ ----- ----------- - ------------------- -- ----- ------ ------------- - ----- ----- ---------- --------- -------- - ----- ----- ---------------------- ---------- --------
这个示例创建了一个 Pod,并将 PVC 名称为 pvc-demo
的 PVC 绑定到一个名为 mypvc
的卷上,由于绑定关系之前设置的分类名称相同,所以自动选择了与之前创建的 PV 绑定。
可以通过执行这个示例中的命令来向 PV 中写入文件。
总结
- PV 是 Kubernetes 的持久化存储解决方案之一,它提供了多种不同类型的存储。
- PVC 是在应用与存储之间充当接口的对象。
- PV 和 PVC 都需要指定存储类型、访问模式和存储容量等参数。
- PVC 可以通过指定存储分类名称来绑定到相应的 PV 上。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ddff96f6b2d6eab394b109