我正在使用 Google Container Engine 为 MongoDB 副本集(3 个副本 pod)运行 StatefulSet。
这适用于持久存储的动态配置——即在创建有状态集时为每个 pod 配置新存储。
但是,如果我重新启动 StatefulSet,我似乎无法重新绑定旧的持久卷,因为将再次配置新的存储。这意味着数据丢失。理想情况下,持久性存储应该在 Kubernetes 集群本身被删除后仍然存在,数据会保留下来并准备好在新集群中再次使用。
有没有办法创建 GCE 持久磁盘并在 StatefulSet 的持久卷声明中使用它们?
[2017 年 9 月 20 日更新]
找到答案: 这就是解决方案(归功于@RahulKrishnan RA)
创建一个存储类,指定底层磁盘类型和区域
创建一个 PersistentVolume 指定上面创建的存储类,并引用您要挂载的永久磁盘
- 创建一个 PersistentVolumeClaim。命名 PVC 很重要
<pvc template name>-<statefulset name>-<ordinal number>
。(正确的名称是诀窍!)将volumeName指定为上面创建的PV和存储类。 - 创建与具有正确名称的副本一样多的 PV 和 PVC。
- 使用 PVC 模板创建 statefulSet。