如何根据rabbitmq队列消息速率缩放k8s pod?

nat*_*dev 8 rabbitmq docker kubernetes

我的应用程序作为容器运行在kubernetes.
应用程序使用来自 的消息rabbitmq

我无法预测确切的数量cpu,因此我不想将其用作自动缩放限制,尽管我确实将其设置prefetch为看起来正常的值。
有没有办法跟踪队列中的消息数量,
并且一旦有太多消息需要k8s自动缩放?
或者可以设置自动缩放以跟随消息速率?

Mar*_*sch 1

您可以将 Horizo​​ntal Pod Autoscaler 与自定义指标一起使用,这些指标需要由一些自定义指标 API 服务器提供(样板:https: //github.com/kubernetes-incubator/custom-metrics-apiserver)。

或者使用自定义自动缩放器(可能已过时: https: //github.com/onfido/k8s-rabbit-pod-autoscaler)。

因此,您要么向 HPA 提供指标,要么运行一些具有指标的应用程序并向 kubernetes API 发送扩展要求。

  • 快进,我现在使用 keda 来根据队列指标缩放 pod,这是rabbitmq 的文档 https://keda.sh/docs/2.2/scalers/rabbitmq-queue/ (2认同)