You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark 3.4.0基于K8s运行时,如何保存Executor Pod日志?

Spark 3.4.0 on K8s: 保留Executor Pod或日志的实用方案

一、阻止Executor Pod在应用结束后被删除

  • 提交Spark应用时添加配置:--conf spark.kubernetes.executor.deleteOnTermination=false,应用运行结束后,Executor Pod会保持Completed状态不会被自动删除,你可以随时用kubectl logs命令查看日志。
  • 注意:长期堆积Completed状态的Pod会占用K8s集群资源,建议配合K8s的TTL自动清理机制。可通过自定义Executor Pod模板(比如executor-template.yaml),在模板的metadata.annotations中添加kubernetes.io/ttlSecondsAfterFinished: "86400"(设置1天后自动删除),提交应用时指定模板:--conf spark.kubernetes.executor.podTemplateFile=executor-template.yaml。

二、持久化保存Executor日志(无需保留Pod)

如果不想保留Pod,更推荐直接把日志持久化到外部存储或日志系统:

  • 集群级日志收集:在K8s集群部署Fluentd、Loki、ELK等日志采集工具,实时抓取所有Pod的日志并存储到持久化平台。这种方式无需修改Spark配置,只要集群配置好日志采集,即使Pod被删除,日志依然能在日志平台中检索查看。
  • 挂载持久化存储保存日志:通过Spark配置指定Executor日志写入持久化PVC:
    1. 提交应用时添加以下配置:
      --conf spark.kubernetes.executor.logs.path=/mnt/spark-executor-logs \
      --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.executor-logs.mount.path=/mnt/spark-executor-logs \
      --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.executor-logs.claimName=spark-executor-logs-pvc
      
    2. 提前在K8s中创建对应的PVC(spark-executor-logs-pvc),确保存储为持久化类型(如NFS、云存储卷)。Executor的日志会直接写入PVC,Pod删除后日志依然保留在存储中。
  • 临时抓取日志:如果只是临时排查问题,可在应用运行时用kubectl cp命令把Executor Pod内的日志文件拷贝到本地,示例:kubectl cp <executor-pod-name>:/opt/spark/logs/ /local/path/to/save/logs。

内容的提问来源于stack exchange,提问作者Yu Qian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:52:09