如何将 StatefulSet 的现有基于文件的数据库独立地挂载到每个 kubernetes pod?
How to mount an existing file-based DB for a StatefulSet to each kubernetes pod independently?
从一开始就正确:这里是 kubernetes 的初学者。
我(想)知道如何为我的 StatefulSet
创建一个卷以保持持久性。为此,我
volumeMounts:
- name: db
mountPath: /var/lib/mydb
和
- metadata:
name: db
labels:
app: myapp
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi
我想这会给我的 pods 每个 (?) 50GB space 来保存他们的东西。
这有助于我在数据库为空并从头开始时测试我的应用程序。我想,如果 pods 关闭并重新启动,它能够重用数据库 - 这就是我对这种持久性的理解。
但是,我希望能够使用具有历史记录的数据库进行测试,可能已经有几个 GB 的大小。这意味着,每个 pod 都会安装一个现有的数据库 并从那里开始 。因此,每个 pod 都需要访问文件 ,但也需要独立且独占地挂载它 。我不能只安装一个现有的卷并在 pods.
之间共享它
数据库应该是磁盘上的键值存储,如 leveldb
。
这将允许从数据库的不同现有状态测试应用程序。
这可能吗?
在开始使用 StatefulSets 之前,我建议您阅读文档 - statefulset-official-doc. Take a look also on dynamics-provisioning。类似于@SYN 所说:
1. 创建 PVC - 在创建 StatefulSet 之前指定存储 class 和大小。
2. 创建一个 Job /Pod,它会挂载您的卷并自动设置它并按照您希望的方式提取数据。将其挂载到您的数据库用于存储数据的目录。卷准备就绪后,关闭您的初始 Pod。
3. 创建你的 StatefulSet。不要创建新的 PVC,而是重复使用您准备好的 PVC。
从一开始就正确:这里是 kubernetes 的初学者。
我(想)知道如何为我的 StatefulSet
创建一个卷以保持持久性。为此,我
volumeMounts:
- name: db
mountPath: /var/lib/mydb
和
- metadata:
name: db
labels:
app: myapp
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi
我想这会给我的 pods 每个 (?) 50GB space 来保存他们的东西。
这有助于我在数据库为空并从头开始时测试我的应用程序。我想,如果 pods 关闭并重新启动,它能够重用数据库 - 这就是我对这种持久性的理解。
但是,我希望能够使用具有历史记录的数据库进行测试,可能已经有几个 GB 的大小。这意味着,每个 pod 都会安装一个现有的数据库 并从那里开始 。因此,每个 pod 都需要访问文件 ,但也需要独立且独占地挂载它 。我不能只安装一个现有的卷并在 pods.
之间共享它数据库应该是磁盘上的键值存储,如 leveldb
。
这将允许从数据库的不同现有状态测试应用程序。
这可能吗?
在开始使用 StatefulSets 之前,我建议您阅读文档 - statefulset-official-doc. Take a look also on dynamics-provisioning。类似于@SYN 所说:
1. 创建 PVC - 在创建 StatefulSet 之前指定存储 class 和大小。
2. 创建一个 Job /Pod,它会挂载您的卷并自动设置它并按照您希望的方式提取数据。将其挂载到您的数据库用于存储数据的目录。卷准备就绪后,关闭您的初始 Pod。
3. 创建你的 StatefulSet。不要创建新的 PVC,而是重复使用您准备好的 PVC。