首页 > 解决方案 > 在 Kubernetes 中公开 Spark Worker (stdout stderr) 日志

问题描述

我有一个 Spark 集群,其中一个 Master 和 4 个 Worker 在 3 节点 Kubernetes 集群中运行。Spark UI 和 Master 通过 Ingress/NodePort 公开,因此可以从 Kubernetes 集群外部访问。

但是,工作端口没有暴露。 因此,无法通过 UI 访问 Worker 日志(stdout 和 stderr)。 日志 URL 被重定向到<Worker1_Pod_IP:8080><Worker2_Pod_IP:8080>依此类推。

我的设置是在同一台机器上运行两个工作 pod。因此,即使我 NodePort 公开了工作人员,端口也会发生冲突,因为将为机器上的两个工作人员分配相同的端口。 Spark History 服务器只提供 Event Logs 而不是 Worker 日志。

如何解决?有没有办法可以为工作人员动态分配 NodePort 值

标签: apache-sparkkubernetes

解决方案


我相信你在谈论SPARK_WORKER_WEBUI_PORT而不是SPARK_WORKER_PORT如下所述,因为它分配了一个随机端口。

火花

这有点棘手,因为每个节点只能公开一个端口。如果每个节点有两个 spark worker,你可以为你的节点创建两个部署,一个公开SPARK_WORKER_WEBUI_PORTon 8081,另一个公开,8082并确保每个节点只安排一个 pod。

您可以在容器环境变量中传递这些值


推荐阅读