kubernetes - 如何将文件路径读入 Kubernetes 集群中的队列?

标签 kubernetes google-kubernetes-engine

我想从持久卷读取文件路径并将这些文件路径存储到某种持久队列中。这可能通过 pod 中包含的应用程序来完成。该持久卷将不断更新新文件。这意味着我需要不断用新的文件路径更新队列。如果向队列添加项目的应用程序崩溃了怎么办? Kubernetes 将能够重新启动应用程序,但我不想添加队列中已有的文件路径。至少我认为,应用程序在添加文件之前需要知道队列中存在什么。我倾向于使用 RabbitMQ,但显然您无法使用此工具在队列中搜索特定项目。我可以做什么来解决这个问题?我在 Google Kubernetes Engine 上运行此集群,因此这将位于 Google Cloud Platform 上。

最佳答案

What if this application that is adding items to the queue crashes? Kubernetes would be able to reboot the application, but I do not want to add in file paths that are already in the queue. The app would need to know what exists in the queue before adding in files

如果您也在寻找搜索选项,我建议使用Redis而不是Queue在K8s上运行rabbitMQ,我在扩展和弹性方面有很好的经验,但是有HA helm chart of RabbitMQ你可以使用它。

我会推荐检查Redis并将其用作后端来存储数据,如果您仍然希望创建队列,您可以使用Bull:https://github.com/OptimalBits/bull

它使用Redis作为后台来存储数据,您可以使用该库创建队列。

就像在 Redis 中一样,您将每秒左右进行连续转储......!丢失数据的可能性较小,但是在 RabbitMQ 中,您可以保留持久消息传递,并且它提供了确认等选项。

这是关于您想要实现的实际需求。如果您的应用程序想要在列表中排序,则不能使用 Redis,那么 RabbitMQ 是最好的选择。

关于kubernetes - 如何将文件路径读入 Kubernetes 集群中的队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69489057/

相关文章:

docker - 以非 root 身份在 kubernetes 中运行 Consul Docker 镜像

docker - Kubernetes + Gitlab CI人工制品:应该使用哪种体积?

kubernetes - 如何在 GKE 上向 istio-sidecar-injector 添加 log_output_level 参数?

docker - 如何将 Virtual Box 中的 Docker 镜像推送到 Google 存储库?

logging - stackdriver-metadata-agent-cluster-level 得到 OOMKilled

Kubernetes:无法连接到服务器

kubernetes - Kubebuilder:资源删除没有预期的副作用

kubernetes - 卷 “mongo-two”的MountVolume.SetUp失败:lstat/var/lib/mongo:没有这样的文件或目录

kubernetes - 如何在GKE上设置GRPC入口(带Nginx-ingress)

kubernetes - 如何获取 StatefulSet Kubernetes 的副本数