更改 PersistentVolume 的回收策略
本页面介绍如何更改 Kubernetes PersistentVolume 的回收策略。
准备工作
您需要拥有一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议在至少有两个节点且不充当控制平面主机的集群上运行本教程。如果您还没有集群,则可以使用 minikube 创建一个集群,或者可以使用以下 Kubernetes 游乐场之一
要检查版本,请输入kubectl version
。为什么要更改 PersistentVolume 的回收策略
PersistentVolume 可以具有各种回收策略,包括“保留”、“回收”和“删除”。对于动态配置的 PersistentVolume,默认回收策略为“删除”。这意味着当用户删除相应的 PersistentVolumeClaim 时,会自动删除动态配置的卷。如果卷包含宝贵数据,则此自动行为可能不合适。在这种情况下,更适合使用“保留”策略。使用“保留”策略,如果用户删除 PersistentVolumeClaim,则不会删除相应的 PersistentVolume。相反,它会被移动到“已释放”阶段,在此阶段可以手动恢复其所有数据。
更改 PersistentVolume 的回收策略
列出集群中的 PersistentVolume
kubectl get pv
输出类似于以下内容
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 10s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 6s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim3 manual 3s
此列表还包括绑定到每个卷的声明的名称,以便更轻松地识别动态配置的卷。
选择您的一个 PersistentVolume 并更改其回收策略
kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
其中
<your-pv-name>
是您选择的 PersistentVolume 的名称。注意
在 Windows 上,您必须对包含空格的任何 JSONPath 模板使用双引号(而不是如上所示针对 bash 使用单引号)。反过来,这意味着您必须在模板中的任何文字周围使用单引号或转义双引号。例如
kubectl patch pv <your-pv-name> -p "{\"spec\":{\"persistentVolumeReclaimPolicy\":\"Retain\"}}"
验证您选择的 PersistentVolume 是否具有正确的策略
kubectl get pv
输出类似于以下内容
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 40s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 36s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Retain Bound default/claim3 manual 33s
在前面的输出中,您可以看到绑定到声明
default/claim3
的卷的回收策略为Retain
。当用户删除声明default/claim3
时,它不会被自动删除。
下一步
- 详细了解 PersistentVolume。
- 详细了解 PersistentVolumeClaim。
参考
- PersistentVolume
- 请注意 PersistentVolume 的
.spec.persistentVolumeReclaimPolicy
字段。
- 请注意 PersistentVolume 的
- PersistentVolumeClaim