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