在Kubernetes中暴露Spark Worker(stdout stderr)日志

时间:2018-10-08 13:03:03

标签: apache-spark kubernetes

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

但是,工作端口未暴露。 因此,无法通过用户界面访问工作日志(stdout和stderr)。 日志URL将被重定向到<Worker1_Pod_IP:8080><Worker2_Pod_IP:8080>等。

我的设置是在同一台计算机上运行两个工作容器。因此,即使我的NodePort暴露了工作程序,端口也将发生冲突,因为将为计算机上的两个工作程序分配相同的端口。 Spark History服务器仅提供事件日志,而不提供辅助日志。

如何解决?是否可以为工作人员动态分配NodePort值

1 个答案:

答案 0 :(得分:1)

我相信您是在谈论SPARK_WORKER_WEBUI_PORT而不是下面描述的SPARK_WORKER_PORT,因为它分配了一个随机端口。

Spark

这有点棘手,因为每个节点只能公开一个端口。如果每个节点有两个Spark Worker,则可以为节点创建两个部署,一个部署在SPARK_WORKER_WEBUI_PORT上公开8081,另一个在8082上公开,并确保仅安排了一个Pod每个节点。

您可以在container environment varialbles

中传递这些值