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

Kubernetes Deployment访问URL随机出现404 Not Found错误如何排查

问题根因排查方向

1. 多副本流量路由异常(最高概率)

  • Deployment配置了多个Pod副本,其中部分Pod的服务没有正确启动,或者对应副本的应用代码没有包含/healthcheck路由,或者副本启动未完成就被Service纳入端点列表
    • 排查方式:先执行kubectl get endpoints <你的service名称>,确认所有端点IP对应的Pod是否处于正常Running状态,再逐个Pod端口转发访问/healthcheck验证是否有部分Pod本身返回404
  • 没有配置就绪探针(readinessProbe),K8s会把还没完全启动完成的Pod加入Service的负载均衡列表,首次请求打到未就绪的Pod就返回404,后续重试打到已经启动完成的Pod就正常,间隔久请求的时候如果有Pod重建或者重新调度,又会出现这个问题
    • 排查方式:查看Deployment的yaml配置,确认是否配置了正确的就绪探针指向/healthcheck路径

2. Ingress路径匹配规则配置错误

  • 你配置的Ingress路径规则存在冲突,比如同时配置了前缀匹配和精确匹配的路由,或者路径重写(rewrite-target)规则配置错误,导致部分请求被转发到错误的服务或者路径上
    • 例如:你配置了rewrite-target: /$1但是路径捕获规则写错,导致/healthcheck请求被转发到后端的时候路径被截断或者篡改,变成不存在的路径返回404
    • 排查方式:查看Ingress的事件日志kubectl describe ingress <你的ingress名称>,确认配置没有报错,同时检查Ingress Controller的日志,看404请求的转发路径是否和预期一致

3. Gunicorn worker进程启动异常

  • Gunicorn的worker进程配置有问题,部分worker没有完成加载Flask应用就开始接收请求,或者worker进程存在偶发崩溃重启的情况,重启过程中收到的请求就会返回404
    • 排查方式:查看Pod的标准输出日志kubectl logs <pod名称>,确认Gunicorn启动日志有没有报错,worker进程有没有异常退出的记录

4. Service标签选择器配置错误

  • Service的selector字段配置的标签匹配到了集群中其他运行着不同应用的Pod,流量会被负载均衡到其他应用上,其他应用没有/healthcheck路由就返回404
    • 排查方式:执行kubectl describe service <你的service名称>确认selector对应的标签,再用kubectl get pods -l <标签键>=<标签值>确认返回的Pod都是你部署的Flask应用的Pod,没有多余的其他Pod

内容的提问来源于stack exchange,提问作者John Munar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:04