我已经在minikube的docker容器上部署了"spark-hadoop“docker镜像。
我已经在Kubernetes上为spark-master、spark-worker和spark-ui等spark组件创建了kubectl服务。我通过NodePort将spark-master暴露为KubeService,因此我可以访问spark-webui页面,如下所示:
http://{minikubeIP}:{Nodeport}
从minikube内部的chrome浏览器
浏览器上http://{minikubeIP}:{Nodeport}的sparkui网页显示了典型的spark作业仪表板,还提到spark-master还活着,并在"spark://spark-master:7077“上运行。
现在的问题是,我应该如何从我的另一个docker容器化应用程序访问"spark-master“URL。在另一个应用程序中,我提到了application.properties中的{spark.master=spark://spark-master:7077"}。当应用程序启动时,会出现类似"Master not responsive“的错误,然后就会关闭。这方面的任何建议都会有所帮助。
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>发布于 2020-09-28 20:58:49
至于纯服务方法,不可能。服务只与一个选择器相关,因此您不能将不同pod中的另一个应用程序分配给同一服务。
如果您在同一个pod中运行两个容器,请在pod中使用不同的端口,或者使用不同的pod。如果没有像文件系统这样的共享资源,则创建部署-将容器拆分到单独的pod会很容易。
请注意,指出,如果您想让两个容器在具有不同端口的同一个pod中运行,那么更改pod定义是不够的。容器中的应用程序也必须绑定到不同的端口。
然而,最好的解决方案是创建另一个服务,该服务将指向不同的应用程序并通过不同的url访问它。
看看:single-service-for-multiple-pods,how-to-configure-multiple-services-containers-in-kubernetes,multi-container-pods-communication,understanding-multi-container-pods。
https://stackoverflow.com/questions/63809884
复制相似问题