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



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

现在,spark容器可以在任何名称节点上启动——master或standby。有一个VIP分配给活动名称节点。

当spark容器在活动名称节点上启动时,可以使用VIP:SvcPort从任何地方轻松访问spark UI及其所有选项卡然而,当spark容器在备用名称节点上启动时,spark 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容器限制为master name节点,因为让k8es处理k8es集群中的作业负载。

非常感谢您的帮助。

有一个spark-ui代理,它连接到spark-master并代理其他节点的请求。点击此处查看更多详细信息:https://github.com/kubernetes/examples/tree/master/staging/sparkspark-ui-含氧控制器.yaml和spark-ui-含氧服务.yaml

这有帮助吗?

最新更新