了解Kubernetes中的PV-PV如何存储数据?

问题描述

我学习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中的卷,持久卷和声明如何工作,我强烈建议仔细阅读有关以下内容的官方文档:

  1. Volumes

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

  1. Persistent Volumes

PersistentVolume(PV)是集群中的一块存储, 已由管理员设置或动态设置 使用存储类。它是集群中的一种资源,就像 节点是群集资源。 PV是像Volumes这样的批量插件,但是 具有独立于使用PV的任何单个Pod的生命周期。 这个API物件会撷取 存储,例如NFS,iSCSI或特定于云提供商的存储 系统。

  1. PersistentVolumeClaim(PVC):

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

掌握了它们的工作原理后,您可以看到detailed walkthrough with working examples

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...