Kubernetes:如何管理具有多个副本的数据?
Kubernetes: How to manage data with multiple replicas?
我目前正在学习 Kubernetes,但我一直卡在如何处理以下情况:
我有一个 Spring 启动应用程序来处理用户上传的文件(照片、pdf 等...),用户也可以下载这些文件。此应用程序还生成分布在 6 个不同文件中的日志。为了让我的生活更轻松,我决定有一个包含 2 个子目录(1 个用户数据目录和 1 个日志目录)的根目录,因此该应用程序仅适用于 1 个目录(appData
)
.appData
|__ usersData
|__ logsFile
我想使用 GKE (Google Kubernetes Engine) 来部署这个应用程序,但我遇到了这些问题:
- 如何处理read/write并发数据+日志到
appData
目录的多个副本?
- 关于日志,是否可以Pods写入同一个文件?
- 假设我们有 3 个副本(Pod-A、Pod-B 和 Pod-C),如果用户 A 上传由 Pod-B 处理的文件,如果同一用户稍后请求其文件?
- 每个副本都应该有自己的卷吗? (我想避免这种情况,使用StatefulSet时似乎就是这种情况)
- 我应该只有一个副本吗? (在那种情况下使用 Kubernetes 将毫无用处)
关于数据库副本的相同问题。
我使用 PostgreSQL
并且我有同样的问题。如果我们有多个副本,由于请求是随机发送到副本的,如何确保请求数据会return结果?
我知道有很多问题。非常感谢您的说明。
您可以在 GKE (Google Kubernetes Engine) 中使用 NFS 使用持久卷在 pods 之间共享文件。
https://cloud.google.com/filestore/docs/accessing-fileshares
我会为日志和共享文件做两个单独的解决方案。
对于日志,请查看像 fluentd 这样的日志聚合器。
对于共享文件系统,您需要 NFS。看看这个例子:https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs。 NFS 将使用来自 GKE、Azure 或 AWS 的持久卷。它本身不是云不可知论者,但如果您想在不同的云中工作,您唯一需要更改的是您的供应商。
我目前正在学习 Kubernetes,但我一直卡在如何处理以下情况:
我有一个 Spring 启动应用程序来处理用户上传的文件(照片、pdf 等...),用户也可以下载这些文件。此应用程序还生成分布在 6 个不同文件中的日志。为了让我的生活更轻松,我决定有一个包含 2 个子目录(1 个用户数据目录和 1 个日志目录)的根目录,因此该应用程序仅适用于 1 个目录(appData
)
.appData
|__ usersData
|__ logsFile
我想使用 GKE (Google Kubernetes Engine) 来部署这个应用程序,但我遇到了这些问题:
- 如何处理read/write并发数据+日志到
appData
目录的多个副本? - 关于日志,是否可以Pods写入同一个文件?
- 假设我们有 3 个副本(Pod-A、Pod-B 和 Pod-C),如果用户 A 上传由 Pod-B 处理的文件,如果同一用户稍后请求其文件?
- 每个副本都应该有自己的卷吗? (我想避免这种情况,使用StatefulSet时似乎就是这种情况)
- 我应该只有一个副本吗? (在那种情况下使用 Kubernetes 将毫无用处)
关于数据库副本的相同问题。
我使用 PostgreSQL
并且我有同样的问题。如果我们有多个副本,由于请求是随机发送到副本的,如何确保请求数据会return结果?
我知道有很多问题。非常感谢您的说明。
您可以在 GKE (Google Kubernetes Engine) 中使用 NFS 使用持久卷在 pods 之间共享文件。 https://cloud.google.com/filestore/docs/accessing-fileshares
我会为日志和共享文件做两个单独的解决方案。
对于日志,请查看像 fluentd 这样的日志聚合器。
对于共享文件系统,您需要 NFS。看看这个例子:https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs。 NFS 将使用来自 GKE、Azure 或 AWS 的持久卷。它本身不是云不可知论者,但如果您想在不同的云中工作,您唯一需要更改的是您的供应商。