缩小后从 statefulset 中删除 Kubernetes 持久卷

问题描述

我将 statefulset 扩展到 4,当缩减到 1 时,我看到我仍然有 4 个持久卷,索引从 0 到 3。

我还看到他们的状态都是绑定 我猜是因为我将它用作有状态集,所以它在缩小后不会删除卷。

我尝试手动删除其中一个(索引为 2 的那个),因为我确信它会释放我的音量,所以我使用了:

kubectl delete persistentvolume <volume>

嗯,这没有帮助,它只是让这个卷永远处于终止状态......:/

我现在不知道如何删除这个和所有其他未使用的卷。

这里是 stateful set yaml 中的卷配置。

  volumeClaimTemplates:
    - Metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        storageClassName: "default"
        resources:
          requests:
            storage: 7Gi

如果我跑

kubectl get pvc --all-namespaces

我明白

NAMESPACE    NAME                      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
default      data-0         Bound    pvc-23af1aec-e385-4778-b0b0-56f1d1dfdfee   7Gi        RWO            default        4h5m
default      data-1         Bound    pvc-34625107-1352-4715-b12c-2fc6ff22ed08   7Gi        RWO            default        4h4m
default      data-2         Bound    pvc-15dbdb53-d951-465d-b9c3-ebadfcc3c725   7Gi        RWO            default        4h3m
default      data-3         Bound    pvc-d317657f-194a-4f4f-8c5f-dff2843b693f   7Gi        RWO            default        4h3m

如果我跑

kubectl get --no-headers persistentvolumes

我明白了:

pvc-15dbdb53-d951-465d-b9c3-ebadfcc3c725   7Gi   RWO   Delete   Terminating   default/data-2            default         4h4m
pvc-23af1aec-e385-4778-b0b0-56f1d1dfdfee   7Gi   RWO   Delete   Bound         default/data-0            default         4h6m
pvc-34625107-1352-4715-b12c-2fc6ff22ed08   7Gi   RWO   Delete   Bound         default/data-1            default         4h5m
pvc-d317657f-194a-4f4f-8c5f-dff2843b693f   7Gi   RWO   Delete   Bound         default/data-3            default         4h3m

解决方法

在 statefulset 中,K8s 不会在 pod 终止后自动删除 PVPVC,这是为了避免进一步的复杂化和数据安全。这就是为什么在缩小之后,我们需要手动进行。在 Pod 终止后删除 PVC 将触发删除相应的 Persistent Volume,具体取决于存储类别和回收策略。

请尝试删除 persistent volume claimPVC 而不是 persistent volume。如果您删除 pvc,它会自动删除相应的 pv

只需在您的 bash 中运行此命令:

kubectl delete pvc data-3

REF