PV:
由管理员在集群中提供的存储
PVC:
用户对存储的请求
PV 和 PVC 的交换过程
供应(Provisioning):创建PV
绑定(Binding):将PV分配给PVC
使用(Using):Pod通过PVC使用该PV
释放(Releasing):Pod释放Volume并删除PVC,删除后根据策略进行PVC的数据处理
回收(Reclaiming):回收PV,可以保留PV以便下次使用,也可以直接从云存储中删除,策略包括保留、回收、删除
保留(Retained):此策略允许手工回收,PVC删除,PV将仍然存储,存储卷被认为处于已释放状态,但对于其他PVC是不可用的,因为之前数据 仍然保留在数据卷中,可通过以下步骤手工回收存储卷
1)删除PV:在PV被删除后,在外部设施中相关的存储资产仍然存在;
2)手工删除遗留在外部存储中的数据;
循环(Recycled):此策略未来会被遗弃,建议后续使用动态供应的模式
循环回收会在存储卷上执行基本擦除命令:rm -rf /thevolume/*, 使数据对于新的PVC可用
删除(Deleted):即从kubernetes中移除PV,也会从相关外部设施中删除存储资产.
存储卷状态
Available:可用状态,表示PV已经准备就绪,可以被PVC使用
Bound:绑定状态,表明PV已被分配给了PVC
Released:释放状态,表明PVC解绑PV,但还未执行回收策略
Failed:错误状态,表明PV发生错误
示例:
NFS服务器
IP :172.17.66.208
目录: /data/mysql_slave_pv
NFS服务器配置完成后检查没有问题进行PV、PVC和pod使用PVC操作
创建PV
# cat mysql-slave-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-slave-pv
namespace: codeus #PV和PVC的命名空间不同可能无法绑定
labels:
release: stable ###标签,下面的pvc也需要指定此标签
spec:
capacity:
storage: 5Gi ###空间5个G
accessModes:
- ReadWriteOnce ###权限,可读可写
persistentVolumeReclaimPolicy: Recycle ###持久卷回收策略
nfs: ###nfs信息
path: /data/mysql_slave_pv
server: 172.17.66.208
创建PVC
# cat mysql-slave-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-slave-pvc
namespace: codeus
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
selector:
matchLabels:
release: stable ###指定PV标签
Pod使用PVC
# cat mysql-slave-rc.yaml
............中间省略
volumeMounts:
- mountPath: "/var/lib/mysql/"
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: myclaim-1
查看PV、PVC状态
# kubectl -n codeus get pv,pvc ##可以看到状态都是Bound绑定状态