Wie erstelle ich PVC unter Verwendung von vorhandenem PV?

Wie erstelle ich PVC unter Verwendung von vorhandenem PV?

Ich habe das PVC in meiner MediaWiki-Kubernetes-Bereitstellung gelöscht und kann die Bereitstellung nicht wieder in einen laufenden Zustand versetzen, da sie sich nicht erneut mit dem vorhandenen PV verbinden lässt.

Wenn ich es neu installiere, wird einfach ein neues PVC innerhalb eines neuen PV erstellt. Ich möchte bei der Neuinstallation ein vorhandenes PV verwenden (das alle meine Daten enthält).

  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: ""

Ich gehe davon aus, dass ich einfach den Parameter „existingClaim:“ verwenden und den PVC-Namen eingeben kann.

Ich weiß jedoch nicht, wie man ein PVC von Grund auf neu erstellt.

Kann mir bitte jemand helfen, herauszufinden, wie ich ein PVC mit einem vorhandenen PV erstelle, das derzeit nicht verbunden ist? Solange ich dieses PV nicht lösche, hoffe ich, dass meine Daten sicher sind.

Falls das von Bedeutung ist, befindet es sich im Linode Kubernetes-Cluster.

Antwort1

Wir können ein neues PVC erstellen, indem wir das vorhandene PV verwenden, ohne dass Daten verloren gehen (das PV muss vorhanden sein und ist normalerweise vorhanden, wenn die Rückforderungsrichtlinie der Speicherklasse „Beibehalten“ lautet).

Schritt 1 :Stellen Sie sicher, dass der PV in den Status „Verfügbar“ versetzt wird, der nach dem Löschen des PVC geändert wird.

kubectl get pv <pv name>

Dort können Sie sehen, dass in der Spalte CLAIM immer noch Verweise aus dem alten Namespace vorhanden sind.

Bearbeiten Sie den PV ( kubectl edit pv <pv name>) und entfernen Sie den Teil spec.claimRef. Der PV-Anspruch wird aufgehoben und in der Spalte „Anspruch“ überprüfen Sie, ob er leer ist.

Verwenden Sie dann das PV, indem Sie das neue PVC wie unten beschrieben erstellen.

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

Weitere Informationen finden Sie in diesemBlog.

verwandte Informationen