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

本地K8s集群部署Ambassador Edge Stack后Mapping访问返回404问题

Ambassador Edge Stack Mapping配置失效返回404排查方案

核心排查步骤

  • 步骤1:验证资源配置是否正常加载
    首先执行命令检查自定义资源是否存在配置错误:

    # 检查Mapping资源状态
    kubectl get mapping -n sample-on-ambassador-edgestack
    kubectl describe mapping my-mappingrules -n sample-on-ambassador-edgestack
    # 检查Listener资源状态
    kubectl get listener -A
    

    若describe结果的Events栏存在报错,优先处理报错项。也可通过端口转发访问Ambassador诊断界面确认配置同步状态:

    kubectl port-forward -n ambassador svc/edge-stack-admin 8877
    

    访问http://localhost:8877/ambassador/v0/diag/ 即可查看已生效的所有路由规则。

  • 步骤2:排查Host头匹配问题
    你测试时访问的是带端口的地址http://local.edgestack.com:32510/apple/,此时请求的Host头会自动带上端口local.edgestack.com:32510,与Mapping中配置的无端口hostnamelocal.edgestack.com无法匹配。
    修复方案:修改Mapping的hostname字段,支持带任意端口的匹配:

    spec:
      hostname: "local.edgestack.com:*" # 加*通配符匹配所有端口
      prefix: /apple/
      service: my-apple-service.sample-on-ambassador-edgestack
    
  • 步骤3:确认NodePort与Listener端口匹配
    检查edge-stack服务的NodePort映射关系:

    kubectl get svc edge-stack -n ambassador
    

    确认你访问的32510端口对应的是Listener中已配置的80/8080端口,若映射的是其他未在Listener中声明的端口,请求不会被路由规则处理。

  • 步骤4:排查上游服务路径匹配问题
    Ambassador默认会将完整请求路径转发到上游服务,即你访问/apple/时,转发到my-apple-service的路径同样是/apple/,如果你的业务服务没有对应路径就会返回404。如果需要去掉前缀转发到根路径,可在Mapping中添加rewrite规则:

    spec:
      hostname: "local.edgestack.com:*"
      prefix: /apple/
      rewrite: / # 新增该配置,将/apple/开头的路径重写为/转发到上游
      service: my-apple-service.sample-on-ambassador-edgestack
    
  • 步骤5:查看Ambassador日志定位匹配逻辑
    执行命令查看Ambassador Pod的实时日志,发起测试请求后可直观看到请求的匹配流程、转发地址和返回状态:

    kubectl logs -n ambassador <edge-stack-pod名称> -f
    

修改配置后重新apply即可生效,生效后再次测试访问即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:08