Amazon-Ebs

有沒有辦法將現有捲(我剛剛從快照恢復的捲)附加到 PVC?

  • September 12, 2018

我有一個使用 helm 圖表創建的 mongodb-replicaset。該圖表根據我提供的 StorageClass 創建 PVC。我使用對捲進行快照的 cron 作業拾取的標籤來註釋我的捲。

如果我需要從備份快照恢復,比如在另一個集群中,我知道我可以從快照創建一個卷,但我不知道如何將該卷轉換為 StatefulSet 期望的 PVC 並可以重新啟動從。

我了解到 aStatefulSet將尋找具有特定名稱的 PVC。我從https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#limitations的文件中發現了這一點:

給定 Pod 的儲存必須由 PersistentVolume Provisioner 基於請求的儲存類進行配置,或者由管理員預先配置。

通過實驗,我發現預配置只是意味著創建PersistentVolumeClaim具有預期名稱的 s。

我能夠將 EBS 快照恢復到卷,創建一個PersistentVolume直接引用恢復的捲 ID,然後PersistentVolumeClaim使用正確名稱創建一個。因此,例如,這個 mongo 安裝需要名為 like 的捲datadir-pii-mongodb-replicaset-[0-2],並且在將 EBS 快照恢復到卷之後,我使用以下 yaml:

apiVersion: v1
kind: PersistentVolume
metadata:
 labels:
   failure-domain.beta.kubernetes.io/region: us-west-2
   failure-domain.beta.kubernetes.io/zone: us-west-2a
 name: pv-a
 namespace: larksettings-pii
spec:
 accessModes:
 - ReadWriteOnce
 capacity:
   storage: 320Gi
 awsElasticBlockStore:
   fsType: xfs
   volumeID: aws://us-west-2a/vol-xxxxxxxxxxxxx
 storageClassName: mongo-xfs

---

apiVersion: v1
kind: PersistentVolumeClaim

metadata:
 labels:
   app: mongodb-replicaset
   release: pii
 name: datadir-pii-mongodb-replicaset-0
 namespace: larksettings-pii
spec:
   accessModes:
   - ReadWriteOnce
   resources:
     requests:
       storage: 320Gi
   storageClassName: mongo-xfs
   volumeName: pv-a

小心可用區。由於我跨越了 3 個區域,因此我需要將三個快照恢復到單獨的區域並確保PersistentVolume規範反映了這一點。

引用自:https://serverfault.com/questions/913656