AKS使用KEDA创建ScaledObject报门户暂不支持400错误
报错原因
该报错与YAML配置本身的正确性无关,核心触发原因是你选择的Azure门户部署入口未支持KEDA自定义资源(CRD)创建:
Azure门户的表单化资源创建、ARM自定义模板部署入口内置了资源类型白名单校验,ScaledObject、TriggerAuthentication是集群安装KEDA后才会注册的自定义资源类型,不在门户默认支持的资源范围内,提交请求会被门户前置校验直接拦截,返回400错误,请求根本不会转发到Kubernetes集群的API Server。
解决步骤
- 优先使用kubectl命令行部署,绕过Azure门户的校验逻辑。将编写好的配置保存为YAML文件(例:
azure-monitor-scaler.yaml),通过kubeconfig连接到目标AKS集群后,在文件所在目录执行以下命令即可完成部署:
该方式直接与集群API Server交互,不会经过Azure门户的资源类型校验,只要集群内KEDA组件安装正常,即可成功创建资源。kubectl apply -f azure-monitor-scaler.yaml - 若必须通过Azure门户操作,不要使用「创建资源-自定义模板部署」入口,进入目标AKS集群详情页后,选择「Kubernetes资源」分类下的「YAML」创建入口,该入口直接对接集群原生API,无门户层面的资源类型拦截,粘贴YAML内容提交即可。
- 部署前先验证KEDA组件状态,执行以下命令确认KEDA对应的CRD已正常注册:
如果命令返回资源不存在,先在集群中完成KEDA组件安装,否则即使绕过门户校验,提交YAML时也会返回「服务器无法识别该资源类型」的错误。kubectl get crd scaledobjects.keda.sh - 修正现有YAML的配置问题:
resourceURI字段不符合Azure Monitor scaler的参数要求,不能仅填写资源类型和名称,需要填入完整的Azure资源ID,格式为/subscriptions/<你的订阅ID>/resourceGroups/<资源组名称>/providers/Microsoft.Network/applicationGateways/<应用网关名称>,否则ScaledObject创建成功后也无法正常拉取监控指标触发伸缩。- 配置中同时保留了Secret密钥认证和Azure Pod Identity两种认证配置,两种方式二选一即可,同时保留会引发认证逻辑冲突。
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

