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

Spark应用提交至minikube Kubernetes集群失败求助

Hey,我来帮你分析下这个Spark on K8s的问题!结合你给出的报错日志和提交信息,咱们一步步拆解:

问题背景

  • Spark版本:2.4.3
  • 部署环境:minikube Kubernetes集群
  • 提交命令:
spark-submit \
--master <K8S_MASTER> \
--deploy-mode cluster \
--conf spark.executor.instances=2 \
--conf spark.kubernetes.container.image=<my docker image> \
--conf spark.kubernetes.driver.pod.name=spark-py-driver \
--conf spark.executor.memory=2g \
--conf spark.driver.memory=2g \
local:///home/proj/app/run.py <arguments>
  • 镜像验证:已经通过docker run确认镜像内的PySpark任务可以正常执行
  • 核心报错:
    • Driver Pod日志:[FATAL tini (6)] exec driver-py failed: No such file or directory
    • Pod事件警告:MountVolume.SetUp failed for volume "spark-conf-volume" : configmap "run-py-1590847453453-driver-conf-map" not found

可能的原因及解决办法

1. 显式指定Python Driver的启动命令

Spark 2.4.x在Kubernetes集群模式下运行Python应用时,默认没办法自动识别Python脚本的启动逻辑,得手动告诉集群怎么启动Driver进程。你需要在提交命令里加上spark.kubernetes.driver.command和spark.kubernetes.driver.args这两个配置:

修改后的提交命令如下:

spark-submit \
--master <K8S_MASTER> \
--deploy-mode cluster \
--conf spark.executor.instances=2 \
--conf spark.kubernetes.container.image=<my docker image> \
--conf spark.kubernetes.driver.pod.name=spark-py-driver \
--conf spark.executor.memory=2g \
--conf spark.driver.memory=2g \
--conf spark.kubernetes.driver.command=python \
--conf spark.kubernetes.driver.args="/home/proj/app/run.py <arguments>" \
local:///home/proj/app/run.py <arguments>

2. 确认镜像中的Python路径

如果你的Docker镜像里用的是python3而不是python,或者python命令不在系统PATH里,记得把spark.kubernetes.driver.command改成绝对路径,比如:

--conf spark.kubernetes.driver.command=/usr/bin/python3

3. 处理ConfigMap找不到的警告

这个警告虽然不是直接导致Driver挂掉的原因,但也得排查下:

  • 检查Spark使用的ServiceAccount有没有创建ConfigMap的权限,默认情况下Spark会自动创建这个ConfigMap,如果权限不够就会失败。你可以给对应的ServiceAccount赋予edit角色权限来解决。
  • 要是手动创建的话,也可以根据Spark生成的配置模板创建对应的ConfigMap,但更推荐用权限配置的方式,避免后续重复问题。

4. 检查镜像的ENTRYPOINT/CMD配置

如果你的Docker镜像自定义了ENTRYPOINT或者CMD,可能会和Spark的启动逻辑冲突。Spark官方镜像默认用的是tini --作为ENTRYPOINT,要是你的镜像改了这个,记得在提交命令里用spark.kubernetes.driver.entrypoint覆盖:

--conf spark.kubernetes.driver.entrypoint=/usr/bin/tini

内容的提问来源于stack exchange,提问作者Subramanian Lakshmanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:13:00