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

delete Kubernetes persistent volume from statefulset after scale down

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

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

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

kubectl delete persistentvolume <volume>

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

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

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

  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,这是为了避免进一步的复杂化和数据安全。这就是为什么在缩小规模后,我们需要这样做 manually.Deleting pods 终止后的 PVC 将根据存储 class 和回收政策。

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

只需 运行 在您的 bash:

中执行此命令

kubectl delete pvc data-3

REF