我的系统由 2 个应用程序组成:
Application 1
和 Application 2
。从根本上讲,这些应用程序在从存储中读取\写入方面是完全同步的。
Application 1
正在从互联网下载文件并将其存储在 Google Cloud Storage 上。然后,将 URI 传递到共享队列。一旦 Application 2
准备就绪,它就会拉取队列消息并将 URI 下载到内存并继续处理。
我想用 Kubernetes 内置的另一个内部存储系统替换 Google Cloud Storage。由于我的应用程序完全同步,因此保证仅当
Application 2
已经完成写入时,Application 1
才会从存储中读取。
您建议适配哪种类型的 Kubernetes 存储?如何实施?
Kubernetes 仅包含几种内置存储类型,通常无法同时从多个节点访问这些类型。
如果你看一下卷类型列表,他们通常使用云盘类型存储(
gcePersistentDisk
,但不是GCS;以前是awsElasticBlockStore
,但不是S3),Kubernetes直接反对(configMap
,secret
,) downwardAPI
),或几个非常本地的存储选项(emptyDir
,local
)。有几个多节点可访问的选项,例如 nfs
,但它们需要外部服务器。
还值得注意的是,传统文件系统和云对象存储系统具有不同的保证。例如,您描述了写后读约束,并且您必须使用文件系统原语自行实现此约束(并希望它们在分布式环境中一致工作)。
如果您不想依赖公共云,我可能会保留您所拥有的,也许可以替换可以在集群中运行的对象存储服务器。我认为 Kubernetes 内置的任何东西都不能满足您所描述的需求。