删除 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 清单中的声明条目,它就会再次变为“可用”,效果很好。
出于安全原因,这是一个
intended behavior
,因为如果我们不小心删除了 pod,那么当回收策略设置为保留时,意味着系统不应自动释放 PV
并使其可用。它表示可能需要用户执行从磁盘复制或清除数据的操作。因此,当用户准备好使磁盘再次可用时,由用户从 PV 中清除 ClaimRef
。所以没有删除 pod 后自动delete pvc
的功能。上面有很多 git 问题。
但是使用有状态集,您有一个
.spec.persistentVolumeClaimRetentionPolicy
字段,用于控制在 PVCs
的 lifecycle
期间是否以及如何删除 StatefulSet
。您可以在此文档中找到更多相关信息。