AKS Ingress Controller基于路径的路由规则返回404问题求助
问题分析与解决方案
问题根源
Spark UI默认以根路径/提供服务,当通过Ingress的子路径(如/service1)访问时,会触发两个关键问题导致404:
- 访问
/service1时,Ingress将路径重写为/转发给Spark,Spark返回302重定向到/jobs/,但这个重定向未带上/service1前缀,客户端请求/jobs/会触发Ingress不存在的默认后端,导致404。 - 即使手动访问
/service1/jobs/,Spark页面内的静态资源链接(如CSS、JS)仍指向/static/...,同样会因路径不匹配返回404。
解决方案
需要同时调整Spark服务的启动参数和Ingress配置:
1. 配置Spark服务的上下文路径
启动Spark时必须指定spark.ui.webapp.basePath参数,让Spark明确自己运行在子路径下,这样所有内部生成的链接、重定向都会自动带上该前缀。
如果用Deployment部署Spark,修改容器启动命令:
containers: - name: spark-master image: bitnami/spark:latest command: - /bin/bash - -c - | start-master.sh --conf spark.ui.webapp.basePath=/service1
(service-2同理,将/service1替换为/service2)
2. 调整Ingress配置
为每个服务单独配置Ingress(避免规则冲突,更易维护),添加重定向修正规则:
service-1的Ingress配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: spark-service1-ingress annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTPS nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/use-regex: "true" # 修正Spark返回的重定向路径,补全子路径前缀 nginx.ingress.kubernetes.io/configuration-snippet: | proxy_redirect ~^https://spark.company.net/(.*) https://spark.company.net/service1/$1; spec: ingressClassName: nginx tls: - hosts: - spark.company.net secretName: tls-secret rules: - host: spark.company.net http: paths: - path: /service1(/|$)(.*) pathType: Prefix backend: service: name: service-1 port: number: 443
service-2的Ingress配置:
将上述配置中的service1替换为service2,服务名改为service-2即可。
3. 验证步骤
- 应用新的Ingress配置:
kubectl apply -f spark-service1-ingress.yaml kubectl apply -f spark-service2-ingress.yaml
- 重启Spark服务,确保
spark.ui.webapp.basePath配置生效 - 访问测试:
- 打开
https://spark.company.net/service1,会自动重定向到https://spark.company.net/service1/jobs/,页面加载正常 - 访问
https://spark.company.net/service2同理,所有静态资源和链接都能正确指向带前缀的路径
- 打开
补充说明
- 核心是Spark的
spark.ui.webapp.basePath配置,它能让Spark自动处理路径前缀,不需要额外传递X-Forwarded-Prefix请求头 - 拆分Ingress是为了给每个服务单独配置重定向规则,避免不同路径的规则冲突
- 重写规则
rewrite-target: /$1会将/service1/jobs转发为/jobs,和Spark的上下文路径配合,保证请求能正确匹配服务内部路由
内容的提问来源于stack exchange,提问作者Conundrum
相关产品推荐
相关产品推荐

