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

기존Claim: 매개변수를 사용하고 PVC 이름을 입력하면 된다고 가정합니다.

그러나 처음부터 PVC를 만드는 방법을 모르겠습니다.

누군가 현재 연결되지 않은 기존 PV를 사용하여 PVC를 만드는 방법을 알아내도록 도와줄 수 있습니까? 해당 PV를 삭제하지 않는 한 내 데이터는 안전하기를 바랍니다.

중요한 경우 Linode Kubernetes 클러스터에 있습니다.

답변1

데이터 손실 없이 기존 pv를 사용하여 새 PVC를 생성할 수 있습니다(PV는 반드시 존재해야 하며 일반적으로 스토리지 클래스의 회수 정책이 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>"

자세한 내용은 여기에서 확인하실 수 있습니다.블로그.

관련 정보