是否有可能在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文件存储在这两个实例。
有没有办法解决这个问题?我宁愿保持设置尽可能简单,以便于扩展和稍后添加第三,第四和第五个国家。
请记住,这是解释问题的过于简化的方法。实际上,实例数要多得多。
答案 0 :(得分:5)
是的。如果您查看this table,那么任何支持PV
的{{1}}(物理卷)都可以帮助您为Kafka工人完成相同的数据存储。因此,这些总结如下:
在我看来,NFS是最容易实现的。请注意,Azurefile,Quobyte和Portworx是付费解决方案。