从同一个minikube节点的容器化Spark docker映像访问Spark Master



我已经部署了"火花hadoop";minikube中docker容器上的docker图像。

我在Kubernetes上为spark master、spark worker和spark ui等spark组件创建了kubectl服务。我已经通过NodePort将spark master公开为KubeService,因此我可以访问spark webui页面,如下所示:

http://{minikubeIP}:{Nodeport}

从minikube 内的chrome浏览器

broswer上http://{minikubeIP}:{Nodeport}的sparkui网页显示了典型的spark作业仪表板,并提到spark master是活着的;spark://spark-master:7077";。

现在的问题是我应该如何访问";火花母版";来自我的另一个docker容器化应用程序的URL。在另一个应用程序中,我在application.properties中提到了{spark.master=spark://spark-master:7077"};Master没有响应";然后它就关闭了。这方面的任何建议都会有所帮助。

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>

至于纯服务方法,不,这是不可能的。服务只与一个选择器相关,所以您不能将不同pod中的另一个应用程序分配给同一个服务。

如果在同一个pod中运行两个容器,请在pod内使用不同的端口或使用单独的pod。如果没有像文件系统这样的共享资源,就可以创建部署——将容器拆分为单独的pod会很容易。

注意如果您想让两个容器在具有不同端口的同一个pod中运行,那么更改pod定义是不够的。容器中的应用程序也必须绑定到其他端口。

然而,最好的解决方案是创建另一个服务,该服务将指向不同的应用程序并通过不同的url访问它。

看看:单服务换多个pod,如何在kubernetes中配置多个服务容器,多容器pod通信,理解多容器pod。

最新更新