Kubernetes Volume 类型:
- 本地存储:emptydir/hostpath …
- 网络存储:
in-tree: awsElasticBlockStore/gcePersistentDisk/nfs …
out-of-tree: flexvolume/csi等网络存储volume plugins - Projected Volume:secret/configmap/downwardAPI/serviceAccountToken
- PVC与PV体系
静态存储与动态存储
静态 Provisioning:由集群管理员事先预分配一些存储,也就是预先创建一些 PV;然后用户在提交自己的存储需求(也就是 PVC)的时候,K8s 内部相关组件(PersistentVolumeController)会帮助它把 PVC 和 PV 做绑定;之后用户再通过 pod 去使用存储的时候,就可以通过 PVC 找到相应的 PV,Static Volume Provisioning的不足:Cluster Admin需要提前规化或预测存储需
求,而User的需求是多样化的,很容易导致User提交的PVC找不到合适的PV
静态存储使用:
创建PV对象,将NAS文件系统大小,挂载点,以及PV的access mode,reclaim policy等信
息添加到PV对象中。
User:
- 创建PVC对象,声明存储需求。
- 创建应用pod并通过在.spec.volumes 中通过PVC声明volume, 通过.spec.containers.volumeMounts声明container挂载使用该volume。
集群管理员不预分配 PV,只写了一个模板文件(StorageClass就是创建PV的模板),这个模板文件是用来表示创建某一类型存储(块存储,文件存储等)所需的一些参数,这些参数是用户不关心的,用户只需要提交自身的存储需求,也就是PVC文件,并在 PVC 中指定使用的存储模板(StorageClass)
动态存储使用例子
Pod 使用Volumes