如何解决如何将 StatefulSet 的现有基于文件的数据库独立安装到每个 kubernetes pod?
从一开始:这里是 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 之间共享。
数据库应该是一个像 leveldb
这样的磁盘键值存储。
这将允许从数据库的不同现有状态测试应用程序。
这可能吗?
解决方法
在开始使用 StatefulSets 之前,我建议您阅读文档 - statefulset-official-doc。也看看dynamics-provisioning。与@SYN 所说的相似:
1. 创建 create PVC - 在那里指定存储类别和大小,甚至在创建 StatefulSet 之前。
2. 创建一个 Job /Pod,它将装载您的卷,并自动设置它并以您想要的方式提取您的数据。将它挂载到您的数据库用来存储数据的目录中。卷准备好后,关闭您的 init Pod。
3. 创建您的 StatefulSet。重用您准备好的 PVC,而不是创建新的 PVC。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。