Apache spark 如何从Spark submit访问Spark Kubernetes群集上的kubectl转发端口?

Apache spark 如何从Spark submit访问Spark Kubernetes群集上的kubectl转发端口?,apache-spark,kubernetes,kubectl,spark-submit,Apache Spark,Kubernetes,Kubectl,Spark Submit,我有一个运行在内部kubernetes集群上的spark集群(由Rancher管理)。我们公司和群集的配置不允许从以下位置访问服务: spark://SERVICE_NAME.namespace.svc.domain..... 我们使用大数据欧洲的yaml文件创建了集群,并进行了一些明显的更改,如资源 链接到他们的github: 这种方法最好的一点是,我们不必手动设置任何内容、部署、服务等。我们只需运行yaml文件,所有内容都可以在几秒钟内为我们构建 Yaml文件: 要访问spark ui

我有一个运行在内部kubernetes集群上的spark集群(由Rancher管理)。我们公司和群集的配置不允许从以下位置访问服务:

spark://SERVICE_NAME.namespace.svc.domain.....
我们使用大数据欧洲的yaml文件创建了集群,并进行了一些明显的更改,如资源

链接到他们的github:

这种方法最好的一点是,我们不必手动设置任何内容、部署、服务等。我们只需运行
yaml
文件,所有内容都可以在几秒钟内为我们构建

Yaml文件:

要访问spark ui,我只需创建一个入口对象,我们就可以从外部访问它。酷

apiVersion:extensions/v1beta1
种类:入口
元数据:
姓名:spark master
标签:
应用程序:spark master
注释:
nginx.ingres.kubernetes.io/ssl-redirect:“false”
nginx.ingres.kubernetes.io/hsts:“false”
规格:
规则:
-主机:RANDOM_NAME.NAMESPACE.svc.k8s.CLUSTER.DOMAIN.com
http:
路径:
-路径:/
后端:
服务名称:spark master
服务端口:8080
我试图做的是,通过我工作站上的CLI访问BDE给定yaml文件创建的spark群集。 因为我们还不支持服务方式(正确的方式),所以我尝试使用端口转发方法

一些见解:

  • spark master在7077上
  • spark UI位于8080上(可通过入口对象访问)
  • 火花座在6066上

kubectl-n端口前向吊舱/spark-master-64bbbd7877-6vt6w 12345:7077
My
kubectl
已配置为连接到集群(感谢Rancher提供现成的配置文件)

但当我尝试通过以下方式向集群提交作业时:


spark提交——类org.apache.spark.examples.SparkPi——masterspark://localhost:12345 --部署模式群集\
--conf spark.kubernetes.namespace=名称空间\
--conf\spark.kubernetes.authenticate.submission.oauthToken=MY_TOKEN\
--conf spark.kubernetes.file.upload.path=/temp C:\opt\spark\spark-3.0.0-bin-hadoop2.7\examples\jars\spark-examples_2.12-3.0.0.jar 1000
我得到错误

转发自127.0.0.1:12345->7077
转发自[::1]:12345->7077
处理12345的连接
E1014 13:17:45.039840 13148端口转发。go:400]转发12345->7077时出错:将端口7077转发到机架f83c6b40d5af66589976bbaf69537febf79ee317288a42eee31cb307b03a954d时出错,uid:退出状态1:2020/10/14 11:17:45 socat[5658]E connect(5,AF=2 127.0.1:7077,16):连接被拒绝
因此,简而言之,submit命令不会连接到从我的CLI部署的Spark群集。

我可以使用BDE文档中指定的
kubectl
命令运行spark submit,但出于某些原因,我们的要求是通过CLI连接

我们将非常感谢您在这方面提供的帮助。 我的令牌和其他东西是正确的,因为在
k8s
模式下,我能够轻松地ping集群(使用url)

编辑:

我假设spark主进程创建的套接字不显式绑定到地址0.0.0.0,而只绑定到它的主地址。由于端口转发将使用pod内的环回地址,因此连接失败。 ​ 我需要重新配置spark主进程以显式绑定到0.0.0.0。 如果这就是问题所在,有人知道怎么做吗