You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署KEDA ScaledObject失败:PostgreSQL伸缩器失效求助

KEDA PostgreSQL伸缩器失效问题排查与解决

问题背景

在minikube环境中部署的KEDA PostgreSQL伸缩器曾正常工作,一段时间后突然失效。此前曾将targetQueryValue设为负值,后续修改为正值并重新部署ScaledObject后,仍无法正常运行。

相关配置与信息

ScaledObject配置

spec:
    minReplicaCount: 0
    maxReplicaCount: 5
    pollingInterval: 30
    cooldownPeriod: 30
    scaleTargetRef:
        name: demo-service
    triggers:
        -   type: postgresql
            metadata:
                connection: "postgresql://host.minikube.internal:5432"
                userName: "postgres"
                passwordFromEnv: demo-service-secret-keda-password
                host: "host.minikube.internal"
                dbName: "postgres"
                sslmode: disable
                port: "5432"
                query: "select value from keda where id = 1"
                targetQueryValue: "3"

PostgreSQL查询结果

postgres=# select value from keda where id = 1;
 value 
-------
     2
(1 row)

KEDA Pod错误日志

2022-11-07T14:48:59Z    ERROR   Reconciler error    {"controller": "scaledobject", "controllerGroup": "keda.sh", "controllerKind": "ScaledObject", "scaledObject": {"name":"postgres-scaledobject","namespace":"default"}, "namespace": "default", "name": "postgres-scaledobject", "reconcileID": "06cbd2e8-93ac-43a1-8cf0-ac4852eac4be", "error": "HorizontalPodAutoscaler.autoscaling \"keda-hpa-postgres-scaledobject\" is invalid: spec.metrics[0].external.target.averageValue: Invalid value: resource.Quantity{i:resource.int64Amount{value:0, scale:0}, d:resource.infDecAmount{Dec:(*inf.Dec)(nil)}, s:\"0\", Format:\"DecimalSI\"}: must be positive"}

解决步骤

  1. 清理无效HPA资源
    由于之前设置负值导致KEDA生成的HPA存在无效配置,即使修改ScaledObject也无法自动修复,需手动删除旧HPA:

    kubectl delete hpa keda-hpa-postgres-scaledobject -n default
    
  2. 触发ScaledObject重新 reconcile
    删除旧HPA后,让KEDA重新生成正确的HPA配置,可通过重新部署ScaledObject或添加注解触发:

    kubectl apply -f your-scaledobject-file.yaml
    # 或使用注解触发 reconcile
    kubectl annotate scaledobject postgres-scaledobject keda.sh/reconcile=true -n default --overwrite
    
  3. 验证核心配置正确性

    • 确认targetQueryValue为正整数,无格式错误
    • 检查PostgreSQL查询语句select value from keda where id = 1始终返回单个非零数值,避免返回空结果
    • 验证密码环境变量demo-service-secret-keda-password已正确注入KEDA pod,可通过kubectl exec -it <keda-pod-name> -n keda env查看
    • 测试KEDA pod与PostgreSQL的连通性:在KEDA pod内执行psql postgresql://postgres:<password>@host.minikube.internal:5432/postgres确认连接正常
  4. 检查KEDA版本(可选)
    若使用较旧版本的KEDA,可能存在配置缓存bug,建议升级到官方稳定版。

内容的提问来源于stack exchange,提问作者D. Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:25:43