mon*_*ty0 5 amazon-ebs kubernetes
我有一个用舵图创建的 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 安装需要名为类似的卷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
Run Code Online (Sandbox Code Playgroud)
请注意可用区域。由于我跨越了 3 个区域,因此我需要将三个快照恢复到单独的区域中,并确保PersistentVolume规范反映了这一点。
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |