Apache Spark 基于路径的规则给出404用于AKS入口控制器

pnwntuvh  于 2023-06-24  发布在  Apache
关注(0)|答案(1)|浏览(137)

我在AKS上有两个ClusterIP服务和一个入口控制器ingress-nginx-4.6.1,当我尝试使用以下配置将流量路由到每个服务时,我得到404。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: spark-ingress
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
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
      - path: /service2(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: service-2
            port:
              number: 443

kubectl describe ing的输出是:

Name:             spark-ingress
Labels:           <none>
Namespace:        apache-spark
Address:          10.0.0.0
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  tls-secret terminates spark.company.net
Rules:
  Host                  Path  Backends
  ----                  ----  --------
  spark.company.net
                        /service1(/|$)(.*) service-1:443 (100.64.101.8:4440)
                        /service1(/|$)(.*) service-2:443 (100.64.101.0:4440)
Annotations:            
                        nginx.ingress.kubernetes.io/backend-protocol: HTTPS
                        nginx.ingress.kubernetes.io/rewrite-target: /$2
                        nginx.ingress.kubernetes.io/use-regex: true
Events:
  Type    Reason  Age                    From                      Message
  ----    ------  ----                   ----                      -------
  Normal  Sync    2m9s (x3165 over 26h)  nginx-ingress-controller  Scheduled for sync
  Normal  Sync    2m9s (x3165 over 26h)  nginx-ingress-controller  Scheduled for sync

值得注意的是,后端应用程序是开源的spark。所以点击应用程序时的默认行为是302重定向到/jobs/。我还想指出的是,当我为路径/上的一个服务(不管是哪个)定义ing时,它工作得很好。我需要为多个服务执行此操作。任何帮助将不胜感激。

mm5n2pyu

mm5n2pyu1#

问题是我的后端应用程序(Apache Spark)正在向客户端发送重定向。因此客户端现在请求的是http://baseurl/resource而不是http://baseurl/service1/resource
修复方法是将以下属性添加到spark-submit

--conf spark.ui.proxyBase=/service1\
 --conf spark.ui.proxyRedirectUri=localhost/service1\

对于所有的重定向,spark ui现在将使用service 1作为base,inginx对此有一个规则并且知道如何处理。

相关问题