在备用名称节点上访问作为kubernetics容器运行的spark的UI

时间:2017-10-25 05:02:10

标签: apache-spark kubernetes

我们正在k8es集群中启动所有spark作业,如kubernetics(k8es)容器。我们还在每个作业上创建服务并为spark UI进行端口转发(容器4040映射到SvcPort,比如说31123)。 同一组节点也托管了一个Yarn集群。 Container的entry命令是在客户端模式下调用spark to submit to Yarn。

现在,spark容器可能会在任何名称节点上启动 - 主节点或备用节点。有一个VIP分配给活动名称节点。

当火花容器在活动名称节点上启动时,可以使用VIP从任何地方轻松访问spark UI及其所有选项卡:SvcPort 但是,当火花容器在备用名称节点上启动时,火花UI不可访问,最终请求失败并出现500错误(因为VIP:SvcPort被重定向到ActiveNamenode:8080,由于驱动程序现在在备用名称节点上运行,因此无法访问。

我试图推理并尝试多种服务配置,但这种情况似乎没有任何效果。这个配置是我尝试过的,当容器在主节点上时可以访问哪个UI,但是当容器在备用节点上时无法访问UI。

apiVersion: v1
kind: Service
metadata:
   name: spark-svc
   labels:
     deployer: sample_app
     app: spark-app
spec:
  selector:
    app: spark-app
  ports:
  - port: 31123
    protocol: TCP
    targetPort: 4040
    name: ui
  externalIPs:
  - 192.168.122.22

任何人都可以为这种情况建议正确的k8es服务配置。我们不希望将spark容器限制为主名称节点,因为让k8es解决k8es集群中的作业负载。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

有一个spark ui代理,它连接到spark-master和其他节点的代理请求。在此处查看更多详细信息:https://github.com/kubernetes/examples/tree/master/staging/spark spark-ui-proxy-controller.yaml和spark-ui-proxy-service.yaml

这有用吗?