我有一个在 Kubernetes 中部署的开源项目。它有一个 master、data 和 query pod。数据 pod 用于存储数据。不幸的是,当数据 pod 出现故障时,它也会丢失所有存储的数据。所以我想,我必须使用带有 PVC 的 StatefulSet。我开始研究 PVC 样品。假设我创建了一个 PV:
kind: PersistentVolume
metadata:
name: task-pv-volume1
labels:
type: local
spec:
storageClassName: local
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data1"
然后我有一个 Claim 和一个 POD 来绑定它。这是示例状态集:
kind: StatefulSet
metadata:
name: myweb
spec:
replicas: 2
...
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: local
resources:
requests:
storage: 100Mi
现在,当我运行示例作业时,我意识到 2 个 pod 中只有一个处于活动状态。另一个吊舱失败说:
Warning FailedScheduling <unknown> 0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.
我相信这是因为我只创建了一个 PV。所以我去创造一个新的PV,
path: "/mnt/data2"
并且吊舱已启动并正在运行。
在我的产品设置中,我希望这会自动发生。这意味着我不想为每个副本创建这些 PV。有没有办法做到这一点?Kube 是否以某种方式解决了这个问题?
感谢帮助。如果您还有任何问题,请回复。我会尽力解决它。