Minikube部署Flask+MongoDB应用报ServerSelectionTimeoutError问题排查
问题描述
在Minikube环境部署搭配MongoDB的Flask应用时,Flask Pod持续CrashLoopBackOff,查看日志报PyMongo服务选择超时错误:
- 初始报错:连接被拒绝
pymongo.errors.ServerSelectionTimeoutError: 10.97.8.16:27017: [Errno 111] Connection refused
- 调整Service标签选择器配置后,报错变为连接超时
pymongo.errors.ServerSelectionTimeoutError: 10.97.8.16:27017: timed out
已确认的正常配置
- 两个服务的容器镜像在无K8s调度的本地环境可正常联动运行
- MongoDB Pod运行状态正常,无重启记录
- MongoDB Service的标签选择器与MongoDB Pod标签匹配,ClusterIP分配正常
- MongoDB容器启动参数已配置
--bind_ip=0.0.0.0,允许外部IP访问 - Flask应用的MongoDB连接地址配置为MongoDB Service的ClusterIP+端口,配置无误
- MongoDB启动顺序早于Flask,排除初始化未完成的问题
解决方案
问题根源为宿主机Docker环境冗余资源(未使用的镜像、容器、网络、卷)占用过高,导致Minikube集群内部网络转发异常,执行Docker资源清理命令即可解决:
docker system prune
命令执行完成后,等待资源释放完毕,重启Flask Deployment即可恢复正常连接。
内容的提问来源于stack exchange,提问作者Ozixic
相关产品推荐
相关产品推荐

