缩小后从 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终止后不会自动删除PV
或PVC
,这是为了避免进一步的复杂化和数据安全。这就是为什么在缩小规模后,我们需要这样做 manually.Deleting pods 终止后的 PVC
将根据存储 class 和回收政策。
请尝试删除 persistent volume claim
或 PVC
而不是 persistent volume
。如果你删除 pvc
它会自动删除相应的 pv
.
只需 运行 在您的 bash:
中执行此命令
kubectl delete pvc data-3
我将 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终止后不会自动删除PV
或PVC
,这是为了避免进一步的复杂化和数据安全。这就是为什么在缩小规模后,我们需要这样做 manually.Deleting pods 终止后的 PVC
将根据存储 class 和回收政策。
请尝试删除 persistent volume claim
或 PVC
而不是 persistent volume
。如果你删除 pvc
它会自动删除相应的 pv
.
只需 运行 在您的 bash:
中执行此命令kubectl delete pvc data-3