部署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"}
解决步骤
清理无效HPA资源
由于之前设置负值导致KEDA生成的HPA存在无效配置,即使修改ScaledObject也无法自动修复,需手动删除旧HPA:kubectl delete hpa keda-hpa-postgres-scaledobject -n default触发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验证核心配置正确性
- 确认
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确认连接正常
- 确认
检查KEDA版本(可选)
若使用较旧版本的KEDA,可能存在配置缓存bug,建议升级到官方稳定版。
内容的提问来源于stack exchange,提问作者D. Joe
相关产品推荐
相关产品推荐

