概述
以 CPU 为信号扩缩容落后于真实积压,导致无活可干时仍占资源、突发时又跟不上。KEDA 直接以队列深度为信号创建 HPA,使副本数随积压变化,并可选择在无事时缩容到零。
关键步骤
- 创建 ScaledObject,用队列触发器指向消费者。
- 依据实测吞吐设定每副本目标队列长度。
- 配置冷却与轮询间隔以避免抖动。
- 如可接受冷启动则启用缩容到零。
验证
- 副本数随队列深度变化。
- 扩缩容与真实积压相符。
- 缩容前消息被优雅处理。
- 空队列时按配置缩容。
注意事项
- 以队列深度扩容假设每条消息成本相近;成本差异大时需换信号。
- 缩容到零会带来冷启动延迟,延迟敏感的消费者未必可接受。
适用范围
本条目围绕「用 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" }