Volume 提供了很是好的数据持久化方案,不过在可管理性上还有不足。html
拿前面 AWS EBS 的例子来讲,要使用 Volume,Pod 必须事先知道以下信息:安全
当前 Volume 来自 AWS EBS。ide
EBS Volume 已经提早建立,而且知道确切的 volume-id。htm
Pod 一般是由应用的开发人员维护,而 Volume 则一般是由存储系统的管理员维护。开发人员要得到上面的信息:生命周期
要么询问管理员。资源
要么本身就是管理员。开发
这样就带来一个管理上的问题:应用开发人员和系统管理员的职责耦合在一块儿了。若是系统规模较小或者对于开发环境这样的状况还能够接受。但当集群规模变大,特别是对于生成环境,考虑到效率和安全性,这就成了必需要解决的问题。get
Kubernetes 给出的解决方案是 PersistentVolume 和 PersistentVolumeClaim。kubernetes
PersistentVolume (PV) 是外部存储系统中的一块存储空间,由管理员建立和维护。与 Volume 同样,PV 具备持久性,生命周期独立于 Pod。it
PersistentVolumeClaim (PVC) 是对 PV 的申请 (Claim)。PVC 一般由普通用户建立和维护。须要为 Pod 分配存储资源时,用户能够建立一个 PVC,指明存储资源的容量大小和访问模式(好比只读)等信息,Kubernetes 会查找并提供知足条件的 PV。
有了 PersistentVolumeClaim,用户只须要告诉 Kubernetes 须要什么样的存储资源,而没必要关心真正的空间从哪里分配,如何访问等底层细节信息。这些 Storage Provider 的底层信息交给管理员来处理,只有管理员才应该关心建立 PersistentVolume 的细节信息。
Kubernetes 支持多种类型的 PersistentVolume,好比 AWS EBS、Ceph、NFS 等,完整列表请参考 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes
下节咱们用 NFS 来体会 PersistentVolume 的使用方法。
书籍:
1.《天天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html
2.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
3.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html