我有一个在Google Kubernetes集群上运行的Web应用程序。我的Web应用程序还使用多个MongoDB数据库的持久卷来存储用户和应用程序数据。
((1)因此,从长远来看,我想知道将所有数据存储在那些持久卷中是否可行?
((2)是否有用于安全备份持久卷的方法,例如每周一次(自动)?
((3)我还计划将某种文件上传集成到应用程序中。持久卷是否能够存储许多GB / TB的数据,或者在这种情况下我应该选择类似Google云存储的功能吗?
在K8s中部署有状态的应用程序有点痛苦,这在K8s社区中众所周知。通常,如果我们需要HA用于应该以群集模式部署的数据库。但是在K8s中,如果要以群集模式进行部署,则需要检查StatefulSets
概念。无论如何,我都会粘贴您的问题链接,以便您可以从那里开始。
(1)因此,我想知道将所有数据存储在内部是否可行从长远来看那些持久的卷?
((2)是否有用于安全备份持久卷的方法?例如每周一次(自动)?
((3)我还计划将某种文件上传集成到应用。持久卷是否能够存储许多GB / TB的数据,还是我应该在此选择像Google云存储这样的数据情况?
是的,您可以在Kubernetes中使用PVC来存储数据。但是,这取决于您的应用程序用例和大小。
在kubernetes中,您可以将Mongo DB部署为集群并运行,它将数据存储在PVC中。可用于HA的MongoDB掌舵图也可以查找。
头盔图表:https://github.com/helm/charts/tree/master/stable/mongodb
建议在Kubernetes上对MongoDB的单个pod或有状态集进行设置。
备份:
对于MongoDB数据库的备份,您可以选择每周拍摄磁盘存储(PVC)快照,但同时也可以不使用Mongo快照。
[大多数人选择管理服务,但仍然取决于您的组织。
备份方法
- MongoDB快照
- 磁盘存储快照
文件系统:
是的,它可以处理TB的数据,因为它最终是磁盘卷或文件系统。
是的,您可以将PVC用作文件系统,但是以后可能会遇到扩展问题,因为PVC是ReadWriteOnce
,如果要与PVC一起扩展应用程序,则必须实现ReadWriteMany
。
也有一些通用的方法,您也可以像AWS EFS一样直接将文件系统挂载到pod,但是您可能会发现文件操作速度很慢。
对于文件系统,Kubernetes中有各种可用选项,例如csi驱动程序,gluster FS,minio,EFS。