【问题标题】:How to scale k8s pods according to rabbitmq queue message rate?如何根据 rabbitmq 队列消息率缩放 k8s pod?
【发布时间】:2019-08-20 09:08:51
【问题描述】:

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

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

【问题讨论】:

    标签: docker kubernetes rabbitmq


    【解决方案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。

    【讨论】:

    • 你提到的autoscaler实际上并不是一个autoscaler,它只是一个应用程序(部署)来扩展应用程序......我如何构建和加载你首先提到的API服务器?
    • 快进,我现在使用 keda 来扩展队列指标上的 Pod,这是 rabbitmq 的文档keda.sh/docs/2.2/scalers/rabbitmq-queue
    【解决方案2】:

    This tutorial 看起来像是对您问题的现成答案。它描述了如何根据 RabbitMQ 队列大小设置 Horizo​​ntal Pod Autoscaler

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-10-21
        • 2013-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多