重新挂载动态供给的永久卷(PV)到持久卷声明(PVC)。

3

我部署了一个PVC,它动态创建了一个PV。之后我删除了PVC,现在我的PV看起来像下面这样:

PS Kubernetes> kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM            STORAGECLASS   REASON   AGE
pvc-1b59942c-eb26-4603-b78e-7054d9418da6   2G         RWX            Retain           Released   default/db-pvc   hostpath                26h

当我重新创建我的 PVC 时,会创建一个新的 PV。有没有一种方法可以将现有的 PV 重新附加到我的 PVC 上?是否有自动执行的方法?
我尝试使用 "volumeName" 选项将 PV 与我的 PVC 相关联,但它没有起作用。
NAME      STATUS    VOLUME                                    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
db-pvc    Pending   pvc-1b59942c-eb26-4603-b78e-7054d9418da6   0                         hostpath       77s

尝试在名称中添加命名空间并检查。 - confused genius
您可以运行 k get pv <PVNAME> -o jsonpath="{.spec.claimRef}" 以获取更多有用的信息。persistentvolumeclaims 是一个命名空间资源,所以请确保它都是相同的。 - P....
2个回答

6

当 PVC 被删除时,PV 保持“已释放”状态,并且具有已删除 PVC 的 claimRef uid。

要重复使用 PV,您需要删除 claimRef 以使其进入“可用”状态。

您可以编辑 PV 并手动删除 claimRef 部分,或者运行以下 patch 命令:

kubectl patch pv pvc-1b59942c-eb26-4603-b78e-7054d9418da6 --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'

接下来,您需要重新创建PVC。


谢谢Rakesh。有没有自动完成的方法? - Sujeet Padhi

1
如果您在GKE上运行并且您的PV正常工作,您可以使用以下方式创建PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-1b59942c-eb26-4603-b78e-7054d9418da6
spec:
  storageClassName: default
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接