从同一minikube节点的容器化spark docker映像访问spark master

anhgbhbe  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(492)

我已经在minikube的docker容器上部署了“spark-hadoop”docker映像。
我已经在kubernetes上为spark组件创建了kubectl服务,比如spark master、spark worker和spark ui。我已经通过nodeport将spark master公开为kubeservice,因此我可以访问spark webui页面: http://{minikubeIP}:{Nodeport} 从我的chrome浏览器在minikube
sparkui网站 http://{minikubeIP}:{Nodeport} 在broswer上显示了典型的spark作业 Jmeter 板,还提到spark master处于活动状态并运行在“ spark://spark-master:7077 ".
现在的问题是如何从另一个docker容器化应用程序访问“spark master”url。在我提到的另一个应用程序中 {spark.master=spark://spark-master:7077"} 在application.properties中。当启动应用程序时,会出现“主机没有响应”这样的错误并关闭。任何关于这个的建议都会有帮助。

minispark@minispark-VirtualBox: kubectl describe svc spark-master

Name:                     spark-master
Namespace:                eniq-dev
Labels:                   <none>
Annotations:              <none>
Selector:                 component=spark-master
Type:                     NodePort
IP:                       10.97.44.8
Port:                     webui  8080/TCP
TargetPort:               8080/TCP
NodePort:                 webui  32396/TCP
Endpoints:                172.18.0.8:8080
Port:                     spark  7077/TCP
TargetPort:               7077/TCP
NodePort:                 spark  31599/TCP
Endpoints:                172.18.0.8:7077
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
toe95027

toe950271#

至于纯服务方式,不可能。服务只与一个选择器相关,因此不能将不同pod中的另一个应用程序分配给同一个服务。
如果您在同一个pod中运行两个容器,请使用pod中的不同端口或使用单独的pod。如果没有像文件系统这样的共享资源,就可以创建部署—很容易将容器拆分为单独的pod。
请注意,如果希望两个容器在具有不同端口的同一个pod中运行,则仅更改pod定义是不够的。容器中的应用程序也必须绑定到不同的端口。
然而,最好的解决方案是创建另一个服务,它将指向不同的应用程序并通过不同的url访问它。
看一看:多个pods的单一服务,如何在kubernetes中配置多个服务容器,多容器pods通信,了解多容器pods。

相关问题