如何在持久卷发布后删除其声明?

问题描述 投票:0回答:1

删除 PVC 后,关联的 PV 仍显示声明。这可能是预期的行为,但对于我的用例,它必须再次变为“可用”状态。当我手动删除 PV 清单中的声明对象时,它可以再次被不同的 Pod 声明。这就是我想要的。

CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM
10Gi       RWO            Retain           Released   arc-runners/k8s-runner-set-5tsbc-runner-qpz97-runner-cache

CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM
10Gi       RWO            Retain           Available           

                                                       

是否可以选择以正确的 k8s 方式进行操作?

更多背景:

在 pod 规范中,我使用临时的volumeClaimTemplate。我被迫这样做是因为我需要将它集成到这个舵chart。这是 helm/values.yaml,可以在其中覆盖 pod 规范。

...
  volumes:
    - name: runner-cache
      ephemeral:
        volumeClaimTemplate:
          spec:
            accessModes: [ "ReadWriteOnce" ]
            storageClassName: "cache-dir-dispatcher"
            resources:
              requests:
                storage: 10Gi

我有多个这样的静态定义卷

apiVersion: v1
kind: PersistentVolume
metadata:
  name: github-runner-slot1-pv
  labels:
    type: local
spec:
  persistentVolumeReclaimPolicy: Retain
  storageClassName: cache-dir-dispatcher
  ...

正确声明直到每个PV都处于“已发布”状态。一旦我删除了 PV 清单中的声明条目,它就会再次变为“可用”,效果很好。

kubernetes kubectl
1个回答
0
投票

出于安全原因,这是一个

intended behavior
,因为如果我们不小心删除了 pod,那么当回收策略设置为保留时,意味着系统不应自动释放
PV
并使其可用。它表示可能需要用户执行从磁盘复制或清除数据的操作。因此,当用户准备好使磁盘再次可用时,由用户从 PV 中清除
ClaimRef
。所以没有删除 pod 后自动
delete pvc
的功能。上面有很多 git 问题。

但是使用有状态集,您有一个

.spec.persistentVolumeClaimRetentionPolicy
字段,用于控制在
PVCs
lifecycle
期间是否以及如何删除
StatefulSet
。您可以在此文档中找到更多相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.