k8s——pv(静态+动态storageclass)与pvc
PVC和PV
PV概念
- PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。集群中的资源就像一个节点是一个集群资源,可以从远程的NFS或分布式对象存储系统中创建得来(pv存储空间大小、访问方式)
- Pv是诸如卷之类的卷插件,但是只有独立于使用Pv的任何单个pod的生命周期。
- 该API对象捕获存储的实现细节,即NFS,isCSI或云提供商特定的存储系统
- PV就是从存储设备中的空间创建出一个存储资源
PVC概念
- PersistentVolumeClaim (Pvc)是用户存储的请求。Pvc的使用逻辑:在podt中定义一个存储卷(该存储卷类型为pvc),定义的时候直按指定大小,pvc必须与对应的pv建立关系,pvc会根据定义去pv申请,而pv是由存储空间创建出来的。pr和pvc是kubernetes抽象出来的一种存储资源
- 虽然PersistentVolumeClaims允许用户使用抽象存储资源,但是常见的需求是,用户需要根据不同的需求去创建v,用于不同的场景。而此时需要集群管理员提供不同需求的Pv,而不仅仅是Pv的大小和访问模式,但又不需要用户了解这些卷的实现细节
- 对于这样的需求,此时可以采用storageclass资源
PV与PVC之间的关系
PVv是集群中的资源。Pvc是对这些资源的请求,也是对资源的索引检查。PV和Pvc之间的相互作用遵循这个生命周期:Provisioning(配置)—> Binding(绑定)—>Using(使用)—>Releasing(释放)—>Recycling(回收)
两种PV的提供方式
1.这里有两种PV的提供方式:静态或者动态
2.静态-->直接固定存储空间:
集群管理员创建一些PV。它们携带可供集群用户使用的真实存储的详细信息。它们存在于Ktbernetes API中,可用于消费
3.动态-->通过存储类进行动态创建存储空间:
当管理员创建的静态PV都不匹配用户的 PvC时,集群可能会尝试动态地为 Pvc配置卷。此配置基于StorageClasses: PvC必须请求存储类,并且管理员必须已创建并配置该类才能进行动态配置。要求该类的声明有效地为自己禁用动态配置
基于nfs创建静态PV资源和PVC资源
配置nfs存储(192.168.80.14)
1.mkdir -p /data/v{
1..5}
chmod 777 -R /data/*
2.vim /etc/exports
/data/v1 192.168.10.0/24(rw,no_root_squash,sync)
/data/v2 192.168.10.0/24(rw,no_root_squash,sync)
/data/v3 192.168.10.0/24(rw,no_root_squash,sync)
/data/v4 192.168.10.0/24(rw,no_root_squash,sync)
/data/v5 192.168.10.0/24(rw,no_root_squash,sync)
3.systemctl start rpcbind
systemctl start nfs
4.showmount -e
5.hostnamectl set-hostname nfs01
su
6.echo '11111' > /data/v1/index.html
echo '22222' > /data/v2/index.html
echo '33333' > /data/v3/index.html
echo '44444' > /data/v4/index.html
echo '55555' > /data/v5/index.html
k8s的master节点定义PV
//这里定义5个Pv,并且定义挂载的路径以及访问模式,还有pv划分的大小
vim pv-demo.yaml
==========================================================
apiVersion