我已经部署了"火花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。