【问题标题】:Understand PV in Kubernetes - How PV store data?了解 Kubernetes 中的 PV - PV 如何存储数据?
【发布时间】:2020-09-29 20:04:34
【问题描述】:

我学习k8s,理解PV有点问题。

例如,我想部署将数据存储在 /var/lib/postgresql/data 中的 PostgreSQL 我想将我的本地磁盘用于 PV,所以我创建了它并设置了我的路径:/mnt/ssd/Kubernetes/Postgres

我不明白 PV 和 PVC 将如何存储我的数据,因为我使用 PostgreSQL 创建了 pod1,创建了新数据库并杀死了这个 pod1。新的 pod2 仍然有我几秒钟前在 pod1 上创建的数据库,但在我的本地磁盘上 /mnt/ssd/Kubernetes/Postgres 我没有任何文件,所以

  1. 新的 pod2 如何知道创建的数据库? PV 如何存储有关我创建的数据库的数据?
  2. 如果 PV 上没有任何数据,为什么它需要我的磁盘?

【问题讨论】:

    标签: kubernetes kubernetes-pvc


    【解决方案1】:

    为了深入了解卷、持久卷和声明在 Kubernetes 中的工作原理,我强烈建议您阅读有关以下内容的官方文档:

    1. Volumes:

    容器中的磁盘文件是短暂的,这会呈现一些 在容器中运行时非平凡应用程序的问题。 首先,当一个 Container 崩溃时,kubelet 会重新启动它,但是 文件将丢失 - 容器以干净状态启动。第二, 在 Pod 中一起运行容器时,通常需要 在这些容器之间共享文件。 Kubernetes Volume 抽象解决了这两个问题。

    1. Persistent Volumes:

    PersistentVolume (PV) 是集群中的一块存储 已由管理员配置或动态配置 使用存储类。它是集群中的一个资源,就像一个 节点是集群资源。 PV 是像 Volumes 这样的卷插件,但是 具有独立于使用 PV 的任何单个 Pod 的生命周期。 这个 API 对象捕获了实现的细节 存储,无论是 NFS、iSCSI 还是特定于云提供商的存储 系统。

    1. PersistentVolumeClaim (PVC):

    是用户的存储请求。它类似于 Pod。豆荚 消耗节点资源,PVC消耗PV资源。 Pod 可以请求 特定级别的资源(CPU 和内存)。索赔可以要求 特定的尺寸和访问模式(例如,它们可以安装在 ReadWriteOnceReadOnlyManyReadWriteMany,见 AccessModes)。

    在对它们的工作原理有了扎实的理论掌握后,您可以查看detailed walkthrough with working examples

    此外,您的 PostgreSQL 是 stateful 应用程序的示例。 Here 您可以找到一个教程,向您展示如何使用 Persistent Volumes 部署数据库和应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      相关资源
      最近更新 更多