在 Kubernetes 中,如何根据队列的大小自动缩放?
In Kubernetes, how do I autoscale based on the size of a queue?
假设我有一个 RabbitMQ 实例和一组 pods 从 RabbitMQ 中挑选消息并处理它们。如何让 Kubernetes 随着队列大小的增加而增加 pods 的数量?
(我提到的是 RabbitMQ,但这只是一个示例。如果您愿意,请选择您最喜欢的消息队列软件或负载均衡器。)
您可以编写一个非常简单的控制器来监视特定应用程序的队列大小,然后更改复制控制器/副本集/部署所需的副本数。
内置的水平 pod 自动缩放很快就会获得对自定义指标的支持,但在那之前这对 program/script 自己来说非常简单。
顶级解决方案非常简单:
设置连接到队列的单独容器,并使用 Kubernetes API 扩展部署。
这个问题已经有一些解决方案,但它们看起来并没有得到积极维护和生产准备,但可能会有所帮助:
你可以使用这个工具https://github.com/XciD/k8s-rmq-autoscaler
它将在您的集群上创建一个 pod,该 pod 将监视您的部署并根据其配置对其进行扩展。
然后您只需在部署中添加一些注释,自动缩放器就会监视它
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
您可以使用 KEDA.
KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes
它支持开箱即用的 RabbitMQ。您可以按照 tutorial 进行操作,其中解释了如何根据 RabbitMQ 队列大小设置简单的自动缩放。
您可以使用 Worker Pod Autoscaler (WPA):
https://github.com/practo/k8s-worker-pod-autoscaler
RabbitMQ 支持正在等待中。但可以添加。
假设我有一个 RabbitMQ 实例和一组 pods 从 RabbitMQ 中挑选消息并处理它们。如何让 Kubernetes 随着队列大小的增加而增加 pods 的数量?
(我提到的是 RabbitMQ,但这只是一个示例。如果您愿意,请选择您最喜欢的消息队列软件或负载均衡器。)
您可以编写一个非常简单的控制器来监视特定应用程序的队列大小,然后更改复制控制器/副本集/部署所需的副本数。
内置的水平 pod 自动缩放很快就会获得对自定义指标的支持,但在那之前这对 program/script 自己来说非常简单。
顶级解决方案非常简单:
设置连接到队列的单独容器,并使用 Kubernetes API 扩展部署。
这个问题已经有一些解决方案,但它们看起来并没有得到积极维护和生产准备,但可能会有所帮助:
你可以使用这个工具https://github.com/XciD/k8s-rmq-autoscaler
它将在您的集群上创建一个 pod,该 pod 将监视您的部署并根据其配置对其进行扩展。
然后您只需在部署中添加一些注释,自动缩放器就会监视它
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
您可以使用 KEDA.
KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes
它支持开箱即用的 RabbitMQ。您可以按照 tutorial 进行操作,其中解释了如何根据 RabbitMQ 队列大小设置简单的自动缩放。
您可以使用 Worker Pod Autoscaler (WPA):
https://github.com/practo/k8s-worker-pod-autoscaler
RabbitMQ 支持正在等待中。但可以添加。