我已经删除了 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>"
您可以在此处找到更多信息博客。