kubernetes集群上的kubectl转发端口?

blmhpbnm  于 2021-05-26  发布在  Spark
关注(0)|答案(0)|浏览(310)

我在内部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。如果这是问题所在,有人知道怎么做吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题