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

时间:2019-08-20 09:08:51

标签: docker kubernetes rabbitmq

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

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

3 个答案:

答案 0 :(得分:1)

This tutorial看起来很容易回答您的问题。它描述了如何根据 RabbitMQ 队列大小设置 Horizo​​ntal Pod Autoscaler

答案 1 :(得分:0)

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

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

因此,您可以向HPA提供指标,或者运行一些具有指标的应用程序,并将缩放要求发送到kubernetes API。

答案 2 :(得分:0)

我无法在其中找到很多内容,这些内容不涉及使用外部资源(例如StackDriver)。

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

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