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
- Driver Pod日志:
可能的原因及解决办法
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
相关产品推荐
相关产品推荐

