问题描述
从一开始:这里是 kubernetes 的初学者。
我(想)知道如何为我的 StatefulSet
创建一个卷以实现持久性。为此,我有
volumeMounts:
- name: db
mountPath: /var/lib/mydb
和
- Metadata:
name: db
labels:
app: myapp
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi
我认为这会给我的 pod 每个 (?) 50GB 的空间来保存它们的东西。
这有助于我在数据库为空并从头开始时测试我的应用程序。我想,如果 Pod 关闭并重新启动,它就能够重用数据库 - 这就是我对这种持久性的理解。
但是,我希望能够使用具有历史记录的数据库进行测试,并且可能已经有几个 GB 大小。这意味着,每个 pod 都会挂载一个现有的数据库 并从那里开始。因此,每个 pod 都需要访问该文件但也需要独立且排他地挂载它。我不能只挂载一个现有的卷并让它在 pod 之间共享。
这将允许从数据库的不同现有状态测试应用程序。
这可能吗?
解决方法
在开始使用 StatefulSets 之前,我建议您阅读文档 - statefulset-official-doc。也看看dynamics-provisioning。与@SYN 所说的相似:
1. 创建 create PVC - 在那里指定存储类别和大小,甚至在创建 StatefulSet 之前。
2. 创建一个 Job /Pod,它将装载您的卷,并自动设置它并以您想要的方式提取您的数据。将它挂载到您的数据库用来存储数据的目录中。卷准备好后,关闭您的 init Pod。
3. 创建您的 StatefulSet。重用您准备好的 PVC,而不是创建新的 PVC。