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

时间:2018-10-09 19:44:47

标签: docker kubernetes apache-kafka kubernetes-pod

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

所以要解释一下我的情况:

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

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

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

所以我的问题是

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

是的。如果您查看this table,那么任何支持PV的{​​{1}}(物理卷)都可以帮助您为Kafka工人完成相同的数据存储。因此,这些总结如下:

  • AzureFile
  • CephFS
  • Glusterfs
  • Quobyte
  • NFS
  • VsphereVolume-(在并置Pod时有效)
  • PortworxVolume

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