从同一minikube节点的容器化spark docker映像访问spark master

anhgbhbe  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(534)

我已经在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中。当启动应用程序时,会出现“主机没有响应”这样的错误并关闭。任何关于这个的建议都会有帮助。

  1. minispark@minispark-VirtualBox: kubectl describe svc spark-master
  2. Name: spark-master
  3. Namespace: eniq-dev
  4. Labels: <none>
  5. Annotations: <none>
  6. Selector: component=spark-master
  7. Type: NodePort
  8. IP: 10.97.44.8
  9. Port: webui 8080/TCP
  10. TargetPort: 8080/TCP
  11. NodePort: webui 32396/TCP
  12. Endpoints: 172.18.0.8:8080
  13. Port: spark 7077/TCP
  14. TargetPort: 7077/TCP
  15. NodePort: spark 31599/TCP
  16. Endpoints: 172.18.0.8:7077
  17. Session Affinity: None
  18. External Traffic Policy: Cluster
  19. Events: <none>
toe95027

toe950271#

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

相关问题