如何在本地k3s集群中访问Spark Worker任务页面?
解决Spark Worker UI无法通过本地Master UI访问的问题
针对你通过Bitnami Spark Helm Chart部署在k3s集群中,本地端口转发Master UI后无法打开Worker任务页面的问题,可通过以下几种配置方案解决:
方案1:配置Worker暴露NodePort服务并修改上报地址
通过调整Helm参数,让Worker的UI服务暴露为NodePort,并让Worker向Master上报本地可访问的地址:
- 执行Helm更新命令,配置相关参数:
helm upgrade spark spark \ --install \ --repo=https://charts.bitnami.com/bitnami \ --namespace=hm-spark \ --set worker.service.type=NodePort \ --set sparkConf.spark.worker.ui.address="localhost:30081" \ --set sparkConf.spark.worker.reverseProxy=true
worker.service.type=NodePort:将Worker的UI服务暴露为NodePort类型,允许集群外部访问spark.worker.ui.address:指定Worker向Master上报的UI地址为本地可访问的地址(若未指定固定NodePort,可先执行kubectl get svc -n hm-spark | grep spark-worker查看随机分配的端口,再替换此处的30081)spark.worker.reverseProxy=true:开启反向代理,确保Master UI中的Worker链接能正确跳转
- 配置完成后,Master UI中的Worker链接会自动指向配置的本地地址,直接点击即可访问。
方案2:端口转发Worker UI端口(临时快速方案)
如果仅需临时访问Worker UI,可直接对每个Worker Pod进行端口转发:
# 转发worker-0的UI端口(默认Worker UI端口为8081) kubectl port-forward pod/spark-worker-0 -n hm-spark 8081:8081 # 转发worker-1的UI端口 kubectl port-forward pod/spark-worker-1 -n hm-spark 8082:8081
之后分别访问http://localhost:8081和http://localhost:8082,即可查看对应Worker的任务页面。
方案3:通过Ingress暴露UI服务(长期访问方案)
若需要更友好的域名访问方式,可配置Ingress(k3s默认自带Traefik Ingress Controller):
- 执行Helm更新命令,开启Ingress并配置域名:
helm upgrade spark spark \ --install \ --repo=https://charts.bitnami.com/bitnami \ --namespace=hm-spark \ --set master.ingress.enabled=true \ --set master.ingress.hosts[0].host=spark-master.local \ --set worker.ingress.enabled=true \ --set sparkConf.spark.worker.ui.address="spark-worker-0.local" \ --set sparkConf.spark.worker.ui.address="spark-worker-1.local"
- 在本地
/etc/hosts文件中添加域名映射:
127.0.0.1 spark-master.local spark-worker-0.local spark-worker-1.local
- 配置完成后,可通过
http://spark-master.local访问Master UI,点击Worker链接会直接跳转到对应的Worker域名页面。
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

