19 持久化存储之持久卷(PV)与持久卷声明(PVC)
在上一篇中,我们讨论了如何在 Kubernetes 中通过环境变量与挂载进行配置与密钥管理。本篇将继续深入 Kubernetes 的存储管理部分,主要关注于持久化存储如何通过持久卷(Persistent Volume,PV)和持久卷声明(Persistent Volume Claim,PVC)来实现。在下一篇中,我们将探讨存储类(Storage Class)的概念与配置,进一步增强我们的存储能力。
什么是持久卷(PV)和持久卷声明(PVC)
在 Kubernetes 中,存储管理的核心是 持久卷(PV)
和 持久卷声明(PVC)
。
持久卷(PV): 是集群中的一块物理存储,具有独立于 Pod 生命周期的特性。PV 可以是多种存储后端,例如物理硬盘、NFS、云存储等。它是管理员创建的一种资源,通过定义其存储能力、访问模式等来进行配置。
持久卷声明(PVC): 是用户对存储资源的请求,指定所需的存储大小和访问模式。PVC 是用户和 PV 之间的桥梁,当 PVC 被创建时,Kubernetes 会查找满足该 PVC 的 PV。
持久卷(PV)的创建
下面的 YAML 文件是一个持久卷的示例配置文件。假设我们要创建一个 5Gi 的存储,使用 NFS 作为后端存储。
1 | apiVersion: v1 |
使用以上 YAML 文件,我们可以通过以下命令创建持久卷:
1 | kubectl apply -f my-pv.yaml |
持久卷声明(PVC)的创建
在创建好持久卷之后,我们需要为应用程序创建对应的 PVC。以下是一个示例 PVC 的 YAML 配置文件。
1 | apiVersion: v1 |
执行以下命令创建持久卷声明:
1 | kubectl apply -f my-pvc.yaml |
查看 PV 和 PVC
在创建 PV 和 PVC 后,我们可以使用以下命令查看它们的状态:
1 | kubectl get pv |
你将看到类似以下的输出:
1 | NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE |
在这里,我们可以看到 STATUS
列标示了 PVC 是否已经成功绑定到对应的 PV。
使用 PVC 挂载到 Pod
在 Pod 中使用 PVC 也非常简单,以下是一个 Pod 示例,它将我们之前创建的 PVC 挂载到 /data
目录中:
1 | apiVersion: v1 |
创建 Pod 的命令如下:
1 | kubectl apply -f my-pod.yaml |
总结
在本篇中,我们详细讲解了 Kubernetes 中如何使用持久卷(PV)和持久卷声明(PVC)来管理持久化存储。这些资源的使用可确保数据在 Pod 重启或删除时仍然保持可用。在下一篇中,我们将探讨 存储类(Storage Class)
的概念,以及如何在 Kubernetes 中动态管理持久化存储。欢迎继续关注!
19 持久化存储之持久卷(PV)与持久卷声明(PVC)