在 Bitnami 的 Values.yaml 里面,持久化的配置一般是下面几项:
persistence:
enabled: true
existingClaim:
storageClass: "-"
accessModes:
- ReadWriteOnce
size: 8Gi
annotations: {}
mountPath: /bitnami/mongodb
subPath: ""
那么对于多副本且需要使用同一个 PVC 的持久化部署,如何做到数据目录不同以隔离?这里提供的mountPath
应该也是对所有副本都作用的。我的意思是想知道如何让不同的副本挂载在不同的子目录下
这里的existingClaim
只能填一个 PVC 的名称,那么就只能所有副本都绑定一个已存在的 PVC ?
部署的 statefulset 在未指定已存在的 PVC 的情况下,是不是在自动匹配已经存在的 PVC 时,会根据 pvc 的名称与 statefulset 的名称根据某种规则进行匹配?
1
monsterxx03 2021-04-09 16:11:39 +08:00
如果你说的是 bitnami 的 mongodb chart 的话, 理解有点问题.
mountPath 都是每个容器单独的, 每个副本用自己的 mountPath, 为啥要挂载在不同子目录? 这个 chart 有 standalone 和 replicaset 两种部署模式, existingClaim 只在 standalone 模式下有效, 此时只有一个 mongo 实例. replicaset 模式下,多个 statefulset 的实例是用 volumeClaimTemplate 动态 provision pv 的. |
2
lrvinye OP @monsterxx03 比如我部署一个 pgsql 的 chart,3 个副本的集群,我想把他们都挂在同一个 PV 下面,那么他们岂不是数据卷会重叠?想知道这是怎么解决的
主要是看到其它 bitnami 的 chart 也有类似的持久化配置结构,是不是也是这样的? |
4
monsterxx03 2021-04-09 21:17:52 +08:00 via Android
@lrvinye 为什么要挂在同一个 pv 下?即使不考虑 k8s,在裸机上部署,三个副本跑在三个机器上肯定也是三块硬盘啊,所以你需要三个 pv,statefulset 就是用 volumeClaimTemplate 动态生成对应的 pv
|