【问题标题】:Reattach a Dynamically Provisioned PV to a PVC将动态供应的 PV 重新附加到 PVC
【发布时间】:2021-07-12 19:13:31
【问题描述】:

我部署了一个 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

【问题讨论】:

  • 连同名称一起尝试添加名称空间并检查
  • 您可以运行k get pv <PVNAME> -o jsonpath="{.spec.claimRef}" 以获得更多有用的信息。 persistentvolumeclaims 是一个命名空间的资源。所以要确保它都是一样的。

标签: kubernetes persistent-volumes persistent-volume-claims


【解决方案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

【讨论】:

    【解决方案2】:

    当一个 PVC 被删除时,PV 保持在“Released”状态,并带有被删除 PVC 的 claimRef uid。

    要重用 PV,需要删除 claimRef 以使其进入“Available”状态

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

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

    随后,您重新创建 PVC。

    【讨论】:

    • 谢谢拉克什。有没有办法自动完成?
    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2022-11-09
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多