求可用的Apache Spark Operator K8s Nginx Ingress配置文件
Apache Spark Master Nginx Ingress 可用配置
你的原有配置存在两个核心问题:一是7077是Spark Master的TCP协议RPC端口,无法通过HTTP Ingress直接暴露;二是路径重写规则配置不当,导致Spark UI/API无法正确解析请求路径。以下是可直接使用的配置方案:
HTTP端口(8080、6066、15002)Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: spark-ingress namespace: operator annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/use-regex: "true" spec: ingressClassName: nginx rules: - host: localhost http: paths: # Spark Master UI (8080) - pathType: Prefix path: /web/(.*) backend: service: name: qa-master-svc port: number: 8080 # Spark Master REST API (6066) - pathType: Prefix path: /api/(.*) backend: service: name: qa-master-svc port: number: 6066 # 15002端口(假设为HTTP服务,如历史服务器UI) - pathType: Prefix path: /history/(.*) backend: service: name: qa-master-svc port: number: 15002
- 采用正则捕获组实现路径重写,访问
localhost/web会映射到Spark Master UI根路径,同时保留后续请求路径,确保UI静态资源正常加载。 - 若15002端口对应服务的路径规则不同,可调整
path和rewrite-target适配。
TCP端口(7077)转发配置
Spark Master的7077端口是TCP协议的RPC通信端口,需通过Nginx Ingress的TCP转发功能配置:
- 修改Nginx Ingress Controller的ConfigMap(通常位于
ingress-nginx命名空间):
apiVersion: v1 kind: ConfigMap metadata: name: nginx-ingress-controller namespace: ingress-nginx data: tcp-services: | 7077: operator/qa-master-svc:7077
- 确保Nginx Ingress Controller的Deployment/DaemonSet暴露7077端口,在容器端口配置中添加:
ports: - name: tcp-7077 containerPort: 7077 hostPort: 7077
配置完成后,外部可通过Nginx Ingress节点IP:7077直接访问Spark Master的RPC端口。
内容的提问来源于stack exchange,提问作者Franek
相关产品推荐
相关产品推荐

