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

配置K8s Ingress路径转发后无法访问Pod REST端点如何解决?

问题根因

当前Ingress的重写规则配置错误,请求转发到后端时的路径与API实际暴露的路径不匹配。
现有配置中rewrite-target固定写为/,配合/tplm前缀匹配时,访问/tplm/acquire这类子路径请求,转发到后端后会出现双斜杠路径//acquire,后端REST框架无法识别该路径,因此两个接口均无法正常访问,仅能访问根路径连通Pod。

修复配置

将Ingress配置修改为以下内容,通过正则捕获组正确截取转发路径:

kind: Ingress
metadata:
  name: iesd-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: isos.iesd.pt
      http:
        paths:
          - path: /tplm(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: lockmanager-service
                port:
                  number: 9002
配置说明
  • 路径规则/tplm(/|$)(.*)为正则匹配:
    • 第一组(/|$)匹配/tplm后的斜杠或路径结尾,避免/tplmtest这类不符合预期的路径被误转发
    • 第二组(.*)捕获/tplm/后的所有路径片段
  • 重写规则rewrite-target: /$2会将捕获到的有效路径拼接到根路径转发给后端:
    • 请求/tplm/acquire → 后端收到路径/acquire,正确匹配对应接口
    • 请求/tplm/release → 后端收到路径/release,正确匹配对应接口
    • 请求/tplm → 后端收到路径/,可正常连通服务
补充排查项

配置更新后如果仍有访问异常,依次核对以下配置:

  • 确认lockmanager-service的9002端口与后端Pod实际监听端口一致,Pod内的REST服务绑定地址为0.0.0.0而非127.0.0.1
  • 确认nginx-ingress-controller运行正常,无配置加载失败的报错日志
  • 确认集群内网络策略已放行ingress控制器到后端Pod 9002端口的访问流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:39:15