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

Kubernetes集群模式下Spark提交报UnknownHostException: spark-master

Spark on Kubernetes Cluster模式连接spark-master失败排查方案

问题核心

通过Bitnami Spark Helm Chart在Kubernetes的hm-spark命名空间部署Spark(镜像docker.io/bitnami/spark:3.4.0-debian-11-r1),使用spark-submit以cluster模式提交Spark Pi应用时,应用pod启动失败,核心报错为java.net.UnknownHostException: spark-master,无法连接spark-master:7077。

排查步骤

1. 确认Spark Master服务的可访问性

  • 检查hm-spark命名空间下Spark Master服务状态:
    kubectl get svc -n hm-spark
    
    确认输出中存在spark-master服务,且端口映射包含7077(对应Spark Standalone的通信端口)。
  • 在同命名空间内测试DNS解析:
    kubectl run -it --rm --image=busybox:1.36 test-dns -n hm-spark -- nslookup spark-master
    
    若解析失败,说明Kubernetes集群DNS(如CoreDNS)存在异常,需检查DNS组件的pod状态及配置。

2. 修正spark-submit的关键配置

  • 确保应用部署在正确命名空间:
    提交命令必须添加--conf spark.kubernetes.namespace=hm-spark,让Spark Pi pod部署在hm-spark命名空间内,才能直接解析同命名空间的spark-master服务。
  • 确认master参数的正确性:
    使用Kubernetes cluster模式时,master参数应为k8s://https://127.0.0.1:6443,不能写成spark://spark-master:7077(后者是Spark Standalone模式的master地址),避免应用错误尝试连接Standalone集群。

3. 验证Bitnami Chart的部署配置

  • 检查Helm部署的values配置:
    helm get values spark -n hm-spark
    
    确认Spark Master的服务名称未被自定义修改,若服务名称不是spark-master,需同步更新应用中的连接目标。
  • 确认Spark Master端口暴露状态:
    kubectl describe pod spark-master-0 -n hm-spark | grep Ports
    
    确保7077端口处于监听状态,且服务已正确关联该端口。

4. 检查应用pod的DNS配置

  • 查看Spark Pi pod的DNS相关配置:
    kubectl describe pod <spark-pi-pod-name> -n hm-spark | grep -A5 DNS
    
    确认dnsPolicy为ClusterFirst,无自定义DNS配置干扰集群DNS解析。

总结

最常见的问题根源是:

  1. Spark Pi pod部署在非hm-spark命名空间,导致无法解析同命名空间的spark-master服务;
  2. spark-submit错误指定了Spark Standalone模式的master地址,而非Kubernetes集群地址。

优先排查这两点,即可解决大部分此类连接问题。

内容的提问来源于stack exchange,提问作者Hongbo Miao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:14:52