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

Kubernetes部署Kong出现‘no Route matched’路由匹配失败求助

Kong Ingress Controller路由匹配失败排查与解决

问题现象

部署Kong Ingress Controller后,所有请求返回路由匹配失败:

curl -X GET  https://<$PROXY_IP>/<service_name>  -L
{"message":"no Route matched with those values"}%

Kong日志无错误输出,但在Admin界面可查看到对应的路由与服务资源。

相关K8s资源配置

Ingress配置

kind: Ingress
metadata:
  annotations:
    konghq.com/override: <service_name>
    meta.helm.sh/release-name: <service_name>
    meta.helm.sh/release-namespace: services
  creationTimestamp: "2022-09-23T14:03:05Z"
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
  name: <service_name>
  namespace: <service_ns>
  resourceVersion: "18823478"
  uid: 10f15c94-0c56-4d27-b97d-0ad5bdd549ec
spec:
  ingressClassName: kong
  rules:
  - http:
      paths:
      - backend:
          service:
            name: <service_name>
            port:
              number: 8080
        path: /<service_name>
        pathType: ImplementationSpecific
status:
  loadBalancer:
    ingress:
    - ip: 172.16.44.236

KongIngress配置

apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
  annotations:
    meta.helm.sh/release-name: <service_name>
    meta.helm.sh/release-namespace: services
  creationTimestamp: "2022-09-23T14:03:05Z"
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
  name: <service_name>
  namespace: services
  resourceVersion: "18823487"
  uid: 9dd47a3c-598a-48fe-ba60-29779156b58d
route:
  methods:
  - GET
  strip_path: true

Service配置

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/neg: '{"ingress":true}'
    konghq.com/override: <service_name>
    meta.helm.sh/release-name: <service_name>
    meta.helm.sh/release-namespace: services
  creationTimestamp: "2022-09-23T14:03:04Z"
  labels:
    app.kubernetes.io/instance: <service_name>
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: <service_name>
    app.kubernetes.io/version: latest
    helm.sh/chart: <local_chart>
  name: authenticate
  namespace: services
  resourceVersion: "18820083"
  uid: a3112c22-4df7-40b0-8fd3-cde8516354cc
spec:
  clusterIP: 172.16.45.71
  clusterIPs:
  - 172.16.45.71
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/instance: <service_name>
    app.kubernetes.io/name: <service_name>
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

排查与解决步骤

  • 核心问题:Service名称不匹配
    Ingress配置中spec.rules[0].http.paths[0].backend.service.name设置为<service_name>,但实际Service的名称是authenticate,这会导致Kong无法关联到正确的上游服务,即使路由存在,也会返回路由匹配失败的错误。修正Ingress中的Service名称为authenticate即可解决此问题。

  • 命名空间一致性问题
    Ingress部署在<service_ns>命名空间,而KongIngress和Service都在services命名空间。KongIngress的konghq.com/override注解要求Ingress与目标KongIngress在同一命名空间(2.6.x版本不支持跨命名空间引用KongIngress),建议将Ingress迁移到services命名空间,确保资源同域。

  • 路径匹配规则优化
    将Ingress的pathType从ImplementationSpecific改为Prefix,明确路径匹配逻辑,避免Kong对路径解析产生歧义。

  • 验证Kong路由配置
    通过Admin API检查路由的实际生效配置,确认strip_path和methods是否正确应用:

    curl http://<admin_ip>:8001/routes
    

    查看对应路由的paths、methods、strip_path字段是否与预期一致。

内容的提问来源于stack exchange,提问作者hoisu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:20:57