我已經刪除了 mediawiki kubernetes 部署上的 pvc,並且無法使部署恢復到運行狀態,因為它無法重新附加到現有的 pv。
如果我全新安裝它,它只會在新的 pv 中建立一個新的 pvc。我想在重新安裝時使用現有的光伏(其中包含我的所有數據)。
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: ""
我假設我可以只使用現有的聲明:參數並輸入 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>"
您可以在此找到更多信息部落格。