Я удалил pvc из своего развертывания mediawiki kubernetes и не могу вернуть развертывание в рабочее состояние, поскольку оно не может повторно подключиться к существующему pv.
Если я установлю его заново, он просто создаст новый pvc внутри нового pv. Я хочу использовать существующий 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, который в настоящее время не подключен? Пока я не удалю этот pv, я надеюсь, что мои данные в безопасности.
Если это имеет значение, то это кластер Linode Kubernetes.
решение1
Мы можем создать новый pvc, используя существующий pv без потери данных (PV должен существовать, обычно существует, если политика возврата storageclass — Retain)
Шаг 1 :убедитесь, что pv переведен в состояние «Доступно», которое изменится после удаления PVC.
kubectl get pv <pv name>
Здесь вы можете увидеть, что в столбце CLAIM все еще есть ссылки из старого пространства имен.
Отредактируйте PV ( kubectl edit pv <pv name>
) и удалите часть spec.claimRef. Требование PV будет отменено, и в столбце требования, который вы проверяете, будет изменен на пустой
Затем используйте PV, создав новый PVC, как показано ниже.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name:test-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 16Gi
volumeName: "<pv name>"
Более подробную информацию вы можете найти здесьблог.