在Minikube中部署Druid+Minio+PostgreSQL时任务失败求助
Druid任务失败(Exit Code 137 + 404)排查与解决建议
核心问题拆解
Druid集群组件状态正常,但任务执行时出现Exit Code 137(进程被终止)和Request failed with status code 404,结合配置与环境,主要排查方向集中在Peon进程内存限制、Minio配置错误、元数据存储连接验证三个维度。
具体排查与修复步骤
1. 修复Minio配置的拼写错误
你的S3配置存在明显拼写错误,会导致路径风格访问失效,请求Minio时返回404:
# 错误配置 druid.s3.enabePathStyleAccess=true # 修正为 druid.s3.enablePathStyleAccess=true
该错误会让Druid使用虚拟主机模式访问Minio,而Minikube环境下Minio的Endpoint未配置对应虚拟主机域名,因此无法找到Bucket,触发404错误。
2. 调整Peon进程内存限制
Exit Code 137通常表示进程因内存不足被OOM Killer终止。虽然你给MiddleManager配置了1Gi内存限制,但执行任务的Peon子进程默认内存可能不足:
- 在MiddleManager的配置中添加Peon内存参数:
建议将该值设置为MiddleManager内存限制的70%左右(如1Gi限制下分配768M),避免Peon进程占用过多内存触发K8s的OOM终止。druid.peon.maxJvmHeapSize=768m
3. 验证Minio Bucket与权限
- 确认Minio中的
test-bucket已创建:进入Minikube环境,使用Minio客户端执行以下命令验证:
确保输出中存在mc alias set minio http://192.168.59.xxx:30000 <your-access-key> <your-secret-key> mc ls miniotest-bucket,且该Bucket具备读写权限。 - 统一Minio Endpoint配置:你同时配置了
s3service.s3-endpoint和druid.s3.endpoint.url,建议保持一致,避免配置冲突。
4. 验证PostgreSQL元数据存储连接
虽然配置了createTables=true,但需确认Druid是否成功连接并创建元数据表:
- 进入Coordinator Pod,执行PostgreSQL连接命令验证:
连接成功后,查看是否存在Druid元数据表:psql -h postgres-service.dev.svc.cluster.local -U postgres -d druid_db
正常情况下会看到\dtdruid_config、druid_segments、druid_tasks等表。
5. 查看Peon进程详细日志
MiddleManager的主日志可能不够详细,需查看具体任务的Peon日志:
- 进入MiddleManager Pod,查看Peon日志目录:
日志中会明确记录404请求的具体URL,帮助定位是Minio访问失败还是其他资源请求错误。cd /var/log/druid/peon cat <task-id>.log
内容的提问来源于stack exchange,提问作者Alexy Pulivelil
相关产品推荐
相关产品推荐

