我在内部kubernetes集群上运行了一个spark集群(由rancher管理)。我们公司和群集的配置不允许从以下位置访问服务:
spark://SERVICE_NAME.namespace.svc.domain.....
我们使用bigdataeurope的yaml文件创建了集群,其中有一些明显的变化,比如资源。
链接到他们的github:
https://github.com/big-data-europe/docker-spark#kubernetes-部署
这种方法最好的一点是,我们不必手动设置任何东西,部署、服务等,我们只需运行 yaml
文件和一切都是建立在我们的秒。
亚马尔file:httpshttp://raw.githubusercontent.com/big-data-europe/docker-spark/master/k8s-spark-cluster.yaml
要访问spark ui,我只需创建一个入口对象,我们就可以从外部访问它。酷!
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: spark-master
labels:
app: spark-master
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/hsts: "false"
spec:
rules:
- host: RANDOM_NAME.NAMESPACE.svc.k8s.CLUSTER.DOMAIN.com
http:
paths:
- path: /
backend:
serviceName: spark-master
servicePort: 8080
我要做的是,通过我工作站上的cli访问由bde的给定yaml文件创建的spark集群。因为我们还不支持服务方式(正确的方式),所以我尝试使用端口转发方法
一些见解:
Spark控制仪在7077上
spark ui位于8080上(可通过入口对象访问)
Spark座在6066上
kubectl -n <NAMESPACE> port-forward pods/spark-master-64bbbd7877-6vt6w 12345:7077
我的 kubectl
已配置为连接到群集(感谢rancher提供了现成的配置文件)
但是当我尝试通过以下方式向集群提交作业时:
spark-submit --class org.apache.spark.examples.SparkPi --master spark://localhost:12345 --deploy-mode cluster \
--conf spark.kubernetes.namespace=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
我得到了错误
Forwarding from 127.0.0.1:12345 -> 7077
Forwarding from [::1]:12345 -> 7077
Handling connection for 12345
E1014 13:17:45.039840 13148 portforward.go:400] an error occurred forwarding 12345 -> 7077: error forwarding port 7077 to pod f83c6b40d5af66589976bbaf69537febf79ee317288a42eee31cb307b03a954d, uid : exit status 1: 2020/10/14 11:17:45 socat[5658] E connect(5, AF=2 127.0.0.1:7077, 16): Connection refused
简而言之,submit命令不会连接到从我的cli部署的spark集群。
我可以使用 kubectl
命令,但由于某些原因,我们的要求是通过cli连接。
在此方面的帮助将不胜感激。我的代币和其他东西是正确的 k8s
模式,我能够ping集群(与网址)很容易 EDIT:
我假设spark主进程创建了一个套接字,它不显式地绑定到地址0.0.0.0,而只绑定到它的主地址。由于端口转发将使用pod内的环回地址,因此连接失败。 我需要重新配置spark主进程以显式绑定到0.0.0.0。如果这是问题所在,有人知道怎么做吗?
暂无答案!
目前还没有任何答案,快来回答吧!