kubernetes persistentVolumeClaim保留机制
1. 默认
StatefulSet删除以后,对应的pvc默认是会保存的。
2. 控制
在 1.23 以后,有可选 .spec.persistentVolumeClaimRetentionPolicy
字段控制在 StatefulSet 的生命周期中是否保留或者删除 PVC。
您必须启用 StatefulSetAutoDeletePVC feature gate 才能使用此字段。启用后,您可以为每个 StatefulSet 配置两个策略:
- whenDeleted:配置删除 StatefulSet 时应用的卷保留行为。
- whenScaled:配置当 StatefulSet 的副本数减少时应用的卷保留行为。
对于上面两个策略,可以将值设置为 Delete 或 Retain。
- Delete:对于受策略影响的每个Pod,将删除从 StatefulSet volumeClaimTemplate 创建的PVC。使用 whenDeleted 策略,volumeClaimTemplate 中的所有PVC 将在其 Pod 被删除后被删除。使用 whenScaled 策略,在删除 Pod 副本后,仅删除与正在缩小的 Pod 副本相对应的PVC。
- Retain(默认):volumeClaimTemplate 中的 PVC 在其 Pod 被删除时不受影响。1.23 之前版本也是这样的行为。
配置方式如下:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq
namespace: rabbitmq
spec:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Delete
whenScaled: Delete
没有测试过,仅记录一下。