Kubernetes 中 Persistent Volume 和 Persistent Volume Claim 的使用

阅读时长 4 分钟读完

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 通常需要两个步骤:

  1. 创建 PV
  2. 创建 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

纠错
反馈