更改持久卷的回收策略
此页面展示了如何更改 Kubernetes 持久卷的回收策略。
开始之前
您需要有一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议您在至少有两个节点的集群上运行本教程,这些节点不充当控制平面主机。如果您还没有集群,可以使用 minikube 创建一个,或者您可以使用以下 Kubernetes 游乐场之一
要检查版本,请输入kubectl version
。为什么要更改持久卷的回收策略
持久卷可以有不同的回收策略,包括 "Retain"、"Recycle" 和 "Delete"。对于动态供应的持久卷,默认的回收策略是 "Delete"。这意味着当用户删除相应的持久卷声明时,动态供应的卷会自动删除。这种自动行为可能不适合卷包含宝贵数据的情况。在这种情况下,使用 "Retain" 策略更合适。使用 "Retain" 策略,如果用户删除了持久卷声明,则相应的持久卷不会被删除。相反,它将被移至已释放阶段,用户可以手动恢复所有数据。
更改持久卷的回收策略
列出集群中的持久卷
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
此列表还包括绑定到每个卷的声明的名称,便于识别动态供应的卷。
选择一个持久卷并更改其回收策略
kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
其中
<your-pv-name>
是您选择的持久卷的名称。注意
在 Windows 上,您必须对包含空格的任何 JSONPath 模板进行双重引号(而不是像上面为 bash 所示的单引号)。这反过来意味着您必须对模板中的任何文字使用单引号或转义的双引号。例如
kubectl patch pv <your-pv-name> -p "{\"spec\":{\"persistentVolumeReclaimPolicy\":\"Retain\"}}"
验证您选择的持久卷是否具有正确的策略
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
- 请注意持久卷的
.spec.persistentVolumeReclaimPolicy
字段。
- 请注意持久卷的
- PersistentVolumeClaim
上次修改时间:2023 年 1 月 11 日上午 11:12 PST:更新 /tasks/administer-cluster 部分中的页面权重 (b1202c78ff)