工作原理
持久卷(PersistantVolume,简称 PV)是 Kubernetes 集群中一部分的存储,而持久卷声明(PersistantVolumeClaim,简称 PVC)是存储的请求。
在 Kubernetes 中有两种使用持久存储的方法:
- 使用现有的持久卷
- 配置新的动态存储持久卷
要使用现有的 PV,您的应用程序需要使用已经绑定到 PV 的 PVC,并且 PV 应该包含 PVC 所需的最少资源(容量)。例如,Kubernetes 集群已经绑定了一个 PV,它向 PV 发出了存储请求,需要存储的数据大小为 5GB,如果 PV 的剩余空间大于 5GB,就可以使用该 PV 存储数据;如果 PV 的剩余空间小于 5GB,PVC 所需的资源超过了 PV 能提供的资源,则用户需要配置新的动态存储持久卷。
对于动态存储的配置,您的应用程序需要使用已经绑定到存储类的 PVC,并且存储类应该包含创建新的持久卷的权限。
了解更多信息, 请参阅 Kubernetes 存储的官方文档。
#
持久卷声明简介持久卷声明(PVC)是向集群请求存储资源的对象。它们类似于您的部署应用可以兑换存储访问的凭证。PVC 作为卷挂载在工作负载中,以便工作负载可以声明其指定的持久化存储份额。
要访问持久化存储,容器必须具有作为卷挂载的 PVC。该 PVC 可让您将部署在 Pod 内的应用数据存储在 Pod 外,如果 Pod 发生故障,您可以启用新的 Pod ,访问外部存储的应用数据,避免应用中断。
Rancher 内每个项目都包含您创建的 PVC 列表,可从导航栏单击资源展开下拉菜单,单击工作负载 > 卷,查看已创建的 PVC(在早于 v2.3.0 的版本,PVC 位于卷页签中)。已经创建的 PVC 可以重复使用。
#
新的和现有的持久化存储都需要 PVCPVC 是 Pod 使用持久化存储的前提条件,无论是使用已有的存储还是配置新存储,都需要挂载 PVC。
如果要为工作负载设置现有存储,则该工作负载会挂载一个 PVC,该 PVC 指向现有 PV,与现有存储基础结构相对应。
如果要为作负载配置新的存储,则该工作负载将挂载 PVC,该 PVC 指的是存储类(StorageClass),该类具有创建 PV 及其基础存储基础结构的能力。
Rancher 允许您在项目中创建任意数量的 PVC。您可以在创建工作负载时将 PVC 挂载到工作负载中,也可以稍后在工作负载运行后将其挂载到工作负载中。
#
使用 PVC 和 PV 设置已存在的存储您的 Pod 可以将数据存储在卷中,但是如果 Pod 发生故障,该数据会丢失。为了解决此问题,Kubernetes 提供了持久卷(PV),PV 是与 Pod 可以访问的外部存储磁盘或文件系统相对应的 Kubernetes 资源,Pod 将应用数据存储在 Pod 外。如果正在运行 Pod 崩溃了,则用户可以使用新的 Pod 访问持久化存储中的数据,把 Pod 崩溃的影响降到最低。
PV 可以是您在内部托管的本地物理磁盘或文件系统,也可以是云供应商托管的存储资源,例如 Amazon EBS 或 Azure Disk。
在 Rancher 中,创建 PV 和创建存储卷是两个独立的过程,创建 PV 并不会创建存储卷,它只会创建一个 Kubernetes 资源,映射到现有的卷。因此,必须先配置存储,然后再创建 PV。
重要: PV 是在集群级别创建的,一个集群中可能存在多个项目和命名空间,在多租户集群中,多个用户可以访问同一个 PV。
#
将 PV 绑定到 PVC设置 Pod 的持久化存储时,会挂载一个持久性卷声明(PVC),该声明与其他 Kubernetes 卷的挂载方式相同。当创建 PVC 时,Kubernetes Master 将其视为存储请求,并将其绑定到与 PVC 的最低资源(容量)要求匹配的 PV。并非所有 PVC 都能保证绑定到 PV。根据Kubernetes 的文档:
如果不存在匹配的卷,则声明将一直保持未绑定的状态。声明变成已绑定状态仅当存在匹配的卷。比如,集群里有很多 50Gi 的 PV,但是无法匹配 100Gi 的声明。当将 100Gi 的 PV 加入集群后,声明将得到绑定。
您可以创建无限量的 PVC,但是只有当 Kubernetes 找到至少匹配其所需的磁盘空间量的 PV 时,它们才会绑定到 PV。
为了动态地提供新的存储,挂载在容器中的 PVC 必须与存储类相对应,而不是与 PV 相对应。
#
使用 PVC 和存储类型设置新存储存储类让您可以动态创建 PV,而不必先在基础设施中创建持久化存储。
例如,如果工作负载绑定到 PVC,并且 PVC 引用 Amazon EBS 的存储类,则该存储类可以动态创建 EBS 卷和相应的 PV。
然后 Kubernetes Master 将新创建的 PV 绑定到工作负载的 PVC,从而使您的工作负载可以使用持久化存储。