如何根据 rabbitmq 队列消息速率扩展 k8s pod?



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

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

我找不到太多不涉及使用外部源(如 StackDriver(的内容。

我花了几天时间解决所有问题,并编写了一个演示应用程序,其中包含有关如何执行此操作的代码。 我希望它能帮助某人:

https://ryanbaker.io/2019-10-07-scaling-rabbitmq-on-k8s/

您可以将水平容器自动缩放程序与自定义指标一起使用,这些指标需要由某些自定义指标 API 服务器提供(样板:https://github.com/kubernetes-incubator/custom-metrics-apiserver(。

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

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

本教程看起来像是你问题的现成答案。它描述了如何根据RabbitMQ队列大小设置水平 Pod 自动缩放器

最新更新