Jupyter AI

19 Kubernetes入门教程:持久化存储之持久卷(PV)与持久卷声明(PVC)

📅 发表日期: 2024年8月15日

分类: ☸️Kubernetes 入门

👁️阅读: --

在上一篇中,我们讨论了如何在 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 作为后端存储。

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 文件,我们可以通过以下命令创建持久卷:

kubectl apply -f my-pv.yaml

持久卷声明(PVC)的创建

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

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

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

kubectl apply -f my-pvc.yaml

查看 PV 和 PVC

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

kubectl get pv
kubectl get pvc

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

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 目录中:

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 的命令如下:

kubectl apply -f my-pod.yaml

总结

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