← 中文资源

简体中文版本

用 KEDA 依据队列深度扩缩容

以队列长度驱动消费者扩缩容,设置合理目标与冷却时间,并在队列为空时缩容到零。

阅读英文原文

概述

以 CPU 为信号扩缩容落后于真实积压,导致无活可干时仍占资源、突发时又跟不上。KEDA 直接以队列深度为信号创建 HPA,使副本数随积压变化,并可选择在无事时缩容到零。

关键步骤

  1. 创建 ScaledObject,用队列触发器指向消费者。
  2. 依据实测吞吐设定每副本目标队列长度。
  3. 配置冷却与轮询间隔以避免抖动。
  4. 如可接受冷启动则启用缩容到零。

验证

  • 副本数随队列深度变化。
  • 扩缩容与真实积压相符。
  • 缩容前消息被优雅处理。
  • 空队列时按配置缩容。

注意事项

  • 以队列深度扩容假设每条消息成本相近;成本差异大时需换信号。
  • 缩容到零会带来冷启动延迟,延迟敏感的消费者未必可接受。

适用范围

本条目围绕「用 KEDA 依据队列深度扩缩容」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata: { name: app-scaler }
spec:
  scaleTargetRef: { name: consumer }
  minReplicaCount: 0
  maxReplicaCount: 30
  triggers:
    - type: rabbitmq
      metadata: { queueName: orders, queueLength: "20" }