在Kubernetes中,如何根据队列的大小自动缩放?

问题描述 投票:12回答:3

假设我有一个RabbitMQ实例和一组从RabbitMQ中选择消息并处理它们的pod。当队列大小增加时,如何使Kubernetes增加pod的数量?

(我提到了RabbitMQ,但这只是一个例子。如果你愿意,可以选择你最喜欢的消息队列软件或负载均衡器。)

message-queue kubernetes autoscaling
3个回答
5
投票

对此的顶级解决方案非常简单:

设置一个连接到队列的单独容器,并使用Kubernetes API扩展部署。

这个问题已经存在一些解决方案,但它们看起来并不像是积极维护和生产就绪,但可能有所帮助:


0
投票

您可以编写一个非常简单的控制器来监视特定应用程序的队列大小,然后更改复制控制器/副本集/部署所需的副本数。

内置的水平pod自动缩放很快就获得了对自定义指标的支持,但在此之前,编写/编写脚本非常简单。


0
投票

你可以使用这个工具https://github.com/XciD/k8s-rmq-autoscaler

它将在您的群集上创建一个pod,用于监视您的部署并根据其配置进行扩展。

然后,您只需要在部署中添加一些注释,并由autoscaler监视

kubectl annotate deployment/your-deployment -n namespace \
    k8s-rmq-autoscaler/enable=true \ 
    k8s-rmq-autoscaler/max-workers=20 \ 
    k8s-rmq-autoscaler/min-workers=4 \ 
    k8s-rmq-autoscaler/queue=worker-queue \ 
    k8s-rmq-autoscaler/vhost=vhost
© www.soinside.com 2019 - 2024. All rights reserved.