如何在KEDA ScaledObject中启用CPU和内存双触发器?
KEDA同时启用CPU和内存触发器问题排查
问题描述
我在EKS集群中使用KEDA对Pod进行扩缩容,希望在ScaledObject中同时启用CPU和内存触发器,配置代码如下:
spec: scaleTargetRef: name: workload-processor cooldownPeriod: 120 minReplicaCount: 1 maxReplicaCount: 3 triggers: - type: cpu metadata: type: AverageValue value: "70" - type: memory metadata: type: AverageValue value: "70"
尝试在同一YAML文件配置两种触发器后,执行kubectl get scaledobject仅显示CPU触发器生效:
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE workload-processor-keda-scaler apps/v1.Deployment workload-processor 1 3 cpu True True Unknown
请问配置是否有误?如何同时启用双触发器?是否需编写两个独立ScaledObject文件?
问题分析与解决方案
1. 配置本身无语法错误
你的ScaledObject配置语法完全正确,KEDA支持在同一个ScaledObject中配置多个触发器,不需要拆分到两个独立文件。kubectl get scaledobject的TRIGGERS列仅显示第一个触发器是控制台输出的显示限制,不代表内存触发器未生效。
2. 验证内存触发器状态
执行以下命令查看ScaledObject的完整详情,确认两个触发器都被正确加载:
kubectl describe scaledobject workload-processor-keda-scaler
在输出的Triggers段落中,会同时展示CPU和内存触发器的配置、指标采集状态等信息。
3. 多触发器扩缩容逻辑
当配置多个触发器时,KEDA的扩缩容规则是:
- 扩容时,取所有触发器计算出的目标副本数的最大值执行扩容
- 缩容时,只有当所有触发器计算出的目标副本数都低于当前副本数,且满足
cooldownPeriod冷却时间要求,才会触发缩容
4. 关键检查点
- 确保Pod已配置CPU和内存请求(request):KEDA的CPU/内存触发器依赖Pod的request值计算使用率,未设置request会导致触发器失效
- 检查KEDA Operator日志,排查内存触发器是否存在报错:
kubectl logs -n keda deployment/keda-operator
内容的提问来源于stack exchange,提问作者vinod827
相关产品推荐
相关产品推荐

