如何使用现有的 pv 创建 pvc?

如何使用现有的 pv 创建 pvc?

我已经删除了 mediawiki kubernetes 部署上的 pvc,并且无法让部署恢复到运行状态,因为它无法重新连接到现有的 pv。

如果我重新安装它,它只会在新的 pv 中创建一个新的 pvc。我想在重新安装时使用现有的 pv(其中包含我的所有数据)。

  primary:
    ## Enable persistence using Persistent Volume Claims
    ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
    ## @param mariadb.primary.persistence.enabled Enable database persistence using PVC
    ## @param mariadb.primary.persistence.storageClass PVC Storage Class
    ## @param mariadb.primary.persistence.accessModes Persistent Volume Access Mode
    ## @param mariadb.primary.persistence.size Database Persistent Volume Size
    ## @param mariadb.primary.persistence.hostPath Host mount path for MariaDB volume
    ## @param mariadb.primary.persistence.existingClaim Enable persistence using an existing PVC
    ##
    persistence:
      enabled: true
      ## mariadb data Persistent Volume Storage Class
      ## If defined, storageClassName: <storageClass>
      ## If set to "-", storageClassName: "", which disables dynamic provisioning
      ## If undefined (the default) or set to null, no storageClassName spec is
      ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
      ##   GKE, AWS & OpenStack)
      ##
      storageClass: ""
      accessModes:
        - ReadWriteOnce
      size: 8Gi
      ## Set path in case you want to use local host path volumes (not recommended in production)
      ##
      hostPath: ""
      ## Use an existing PVC
      ##
      existingClaim: ""

我假设我可以使用existingClaim:参数并输入pvc名称。

但是,我不知道如何从头开始创建 pvc。

有人能帮我弄清楚如何使用当前未连接的现有 pv 创建 pvc 吗?只要我不删除该 pv,我希望我的数据是安全的。

如果重要的话,这是在 Linode Kubernetes 集群上。

答案1

我们可以使用现有的 pv 创建新的 pvc,而不会丢失任何数据(PV 必须存在,如果 storageclass 的回收策略为 Retain,则通常会存在)

步骤1 :确保 pv 已移至可用状态,该状态将在删除 PVC 后改变。

kubectl get pv <pv name>

您可以在那里看到 CLAIM 列中仍然有来自旧命名空间的引用。

编辑 PV ( kubectl edit pv <pv name>) 并删除 spec.claimRef 部分。PV 声明将取消设置,并且在声明栏中,您验证的将更改为空白

然后通过如下所示创建新的 PVC 来使用 PV。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name:test-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 16Gi
  volumeName: "<pv name>"

您可以在此处找到更多信息博客

相关内容