在Kubernetes的工作节点之间共享存储/卷?

dan*_*elo 5 apache-kafka docker kubernetes kubernetes-pod

是否有可能在Kubernetes的不同工作程序节点中存在的应用程序的两个Pod /实例之间共享一个集中式存储/卷?

所以解释一下我的情况:

  • 我有一个带有2个工作节点的Kubernetes集群。在每一个中,我都有1个正在运行的App X实例。这意味着我有两个App X实例完全同时运行。

  • 这两个实例都订阅了具有两个分区的topicX主题,它们是Apache Kafka中名为groupX的使用者组的一部分。

据我了解,消息负载将在分区之间分配,但在消费者组中的消费者之间也会分配。到目前为止一切顺利,对吗?

所以对我的问题:

  • 在我的整个解决方案中,我有一个按国家和ID唯一约束的层次结构划分。国家和ID的每种组合都有一个pickle模型(python机器学习模型),该模型存储在应用程序访问的目录中。对于一个国家/地区和ID的每种组合,我每分钟都会收到一条消息。

  • 目前,我有2个国家/地区,因此,为了能够进行适当的扩展,我想在两个应用X实例之间分配负载,每个实例处理自己的国家/地区。

  • 问题在于,使用Kafka可以在不同实例之间平衡消息,并且在不知道消息属于哪个国家的情况下访问每个实例中的pickle文件时,我必须在两个实例中存储pickle文件。

有办法解决吗?我宁愿使设置尽可能简单,以便于扩展和稍后添加第三,第四和第五个国家。

请记住,这是解释问题的过于简化的方法。实际上,实例数要多得多。

Ric*_*ico 5

是。如果您查看此表,则可能有任何PV(物理卷)支持的内容ReadWriteMany都将帮助您为Kafka工人完成相同的数据存储。因此,这些总结如下:

  • Azure文件
  • 头文件
  • Glusterfs
  • 兆字节
  • NFS
  • VsphereVolume-(在吊舱并置时有效)
  • Portworx卷

我认为,NFS是最容易实现的。请注意,Azurefile,Quobyte和Portworx是付费解决方案。