当 PV 不再需要时,可通过删除 PVC 回收。
当 PVC
mypvc1
被删除后,我们发现 Kubernetes 启动了一个新 Pod
recycler-for-mypv1
,这个 Pod 的作用就是清除 PV
mypv1
的数据。此时
mypv1
的状态为
Released
,表示已经解除了与
mypvc1
的 Bound,正在清除数据,不过此时还不可用。
当数据清除完毕,
mypv1
的状态重新变为
Available
,此时则可以被新的 PVC 申请。
/nfsdata/pv1
中的
hello
文件已经被删除了。
因为 PV 的回收策略设置为
Recycle
,所以数据会被清除,但这可能不是我们想要的结果。如果我们希望保留数据,可以将策略设置为
Retain
。
通过
kubectl apply
更新 PV:
回收策略已经变为
Retain
,通过下面步骤验证其效果:
① 重新创建
mypvc1
。
② 在
mypv1
中创建文件
hello
。
③
mypv1
状态变为
Released
。
④ Kubernetes 并没有启动 Pod
recycler-for-mypv1
。
⑤ PV 中的数据被完整保留。
虽然
mypv1
中的数据得到了保留,但其 PV 状态会一直处于
Released
,不能被其他 PVC 申请。为了重新使用存储资源,可以删除并重新创建
mypv1
。删除操作只是删除了 PV 对象,存储空间中的数据并不会被删除。
新建的
mypv1
状态为
Available
,已经可以被 PVC 申请。
PV 还支持
Delete
的回收策略,会删除 PV 在 Storage Provider 上对应存储空间。NFS 的 PV 不支持
Delete
,支持
Delete
的 Provider 有 AWS EBS、GCE PD、Azure Disk、OpenStack Cinder Volume 等。
下一节我们学习 PV 的动态供给功能。
书籍:
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