kubernetes学习笔记17:pod volumn和pod volumn claim
pod volumn可以在容器重启之后,之前的数据不丢失,可以共享数据,有本地存储和网络存储(in-tree,out-of-tree),它是独立于pod之外的,volume是存在于pod里面的,pod volune将配置信息以卷的形式挂载在容器中,容器通过posix访问数据,但是它无法准备表达数据volumn复用和共享语义,新功能难扩展,优化点在于存储和计算分离,解藕pod和volumn生命周期,像java中到具体实现类,这时诞生了persistent pod,但是它不能职责分离,不能简化user对存储的需求,不是面向对象编程抽血出来的接口,只是接口的实现,这时诞生pvc,只是对pv对一个claim声明,不负责具体实现,像java中到接口,声明方式:
"volumes":[{ "name": "logs", "persistentVolumeClaim": { "claimName": "pvc-logs" } }]
然后挂在到容器的指定目录,挂载方式:
"volumeMounts": [{ "mountPath": "/data/logs", "name": "logs" }]
然后就是使用这个/data/logs了,使用方式:
s使用shell脚本, mkdir -pv /data/logs/nginx;
用户在PVC使用存储的时候只需关心存储大小和访问模式(存储被多个node level共享还是单个node level独占,注意不是pod level,读写模式)。
pv产生方式有动态和静态两种,静态不足是cluster admin需要提前规划存储需求,而user需求是多变的,动态产生解决这个问题,集群管理员不预分配pv,写模板文件,模板文件用来创建某一类型存储所需参数,这些参数用户不关心,用户关心自己提交存储需求,也就是PVC文件,并在PVC中指定模板。