如何解决从同一minikube节点中的容器化Spark docker映像访问Spark-Master
我已经在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"}
。启动应用程序时,出现诸如“主机无响应”之类的错误,并且它关闭了。
关于此的任何指示都会有所帮助。
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很容易。
请注意:如果要使两个容器都在具有不同端口的同一个容器中运行,则更改容器定义是不够的。容器中的应用程序也必须绑定到其他端口。
但是,最好的解决方案是创建另一个服务,该服务将指向不同的应用程序并通过不同的url访问它。
看看:single-service-for-multiple-pods,how-to-configure-multiple-services-containers-in-kubernetes,multi-container-pods-communication,understanding-multi-container-pods。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。