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
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
path: /path/to/nfs
server: nfs-server.example.com

使用以上 YAML 文件,我们可以通过以下命令创建持久卷:

1
kubectl apply -f my-pv.yaml

持久卷声明(PVC)的创建

在创建好持久卷之后,我们需要为应用程序创建对应的 PVC。以下是一个示例 PVC 的 YAML 配置文件。

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi

执行以下命令创建持久卷声明:

1
kubectl apply -f my-pvc.yaml

查看 PV 和 PVC

在创建 PV 和 PVC 后,我们可以使用以下命令查看它们的状态:

1
2
kubectl get pv
kubectl get pvc

你将看到类似以下的输出:

1
2
3
4
5
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM         STORAGECLASS   REASON   AGE
my-pv 5Gi RWO Retain Bound default/my-pvc 1m

NAME STATUS PRIORITY VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
my-pvc Bound 0 my-pv 5Gi RWO 1m

在这里,我们可以看到 STATUS 列标示了 PVC 是否已经成功绑定到对应的 PV。

使用 PVC 挂载到 Pod

在 Pod 中使用 PVC 也非常简单,以下是一个 Pod 示例,它将我们之前创建的 PVC 挂载到 /data 目录中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: /data
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc

创建 Pod 的命令如下:

1
kubectl apply -f my-pod.yaml

总结

在本篇中,我们详细讲解了 Kubernetes 中如何使用持久卷(PV)和持久卷声明(PVC)来管理持久化存储。这些资源的使用可确保数据在 Pod 重启或删除时仍然保持可用。在下一篇中,我们将探讨 存储类(Storage Class) 的概念,以及如何在 Kubernetes 中动态管理持久化存储。欢迎继续关注!

19 持久化存储之持久卷(PV)与持久卷声明(PVC)

https://zglg.work/kubernetes-zero/19/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论