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

K3s环境Ingress全路径路由失效,Traefik报404,求排查方法

K3s环境下Ingress访问Jenkins 404问题排查流程

针对Traefik返回404、Ingress配置不生效的问题,可以按以下步骤逐层排查请求流转链路:

1. 验证Ingress资源状态

  • 查看Ingress基本信息,确认ADDRESS字段已关联Traefik入口IP(通常是K3s节点IP或LoadBalancer地址):
    kubectl get ingress -n jenkins
    
  • 查看Ingress详细事件和规则,确认无配置错误或资源关联失败:
    kubectl describe ingress jenkins -n jenkins
    
    重点检查Events段是否有报错,以及后端Service的关联是否正确。

2. 排查后端Service与Pod的连通性

  • 确认Service存在且端口配置正确:
    kubectl get svc jenkins -n jenkins
    
    注意:默认Jenkins容器监听8080端口,需确认Service的targetPort是否指向Pod的8080(而非直接用80端口,除非你修改了Jenkins容器的监听端口)。
  • 检查Service关联的Endpoints是否有效(如果Endpoints为空,说明Service与Pod标签不匹配):
    kubectl describe svc jenkins -n jenkins | grep Endpoints
    
  • 在集群内验证Service到Pod的连通性:
    临时启动测试Pod,尝试访问Service:
    kubectl run -it --rm busybox --image=busybox:1.36 --namespace=default -- wget -O- http://jenkins.jenkins.svc.cluster.local:80
    
    若返回Jenkins页面内容,说明Service到Pod的链路正常;否则排查Pod状态或标签匹配问题。

3. 检查Traefik的配置与日志

  • 过滤Traefik日志中的404请求,确认请求的Host和Path是否匹配Ingress规则:
    kubectl logs -n kube-system -l app=traefik --tail=100 | grep "404"
    
    重点关注请求的Host是否为jenkins.homelab.internal,Path是否符合Prefix: /的匹配规则。
  • 确认Traefik已正确识别Ingress资源(K3s默认将Ingress转换为Traefik的IngressRoute):
    kubectl get ingressroutes.traefik.containo.us -n jenkins
    
    查看生成的IngressRoute规则是否与你的Ingress配置一致。
  • 验证Traefik到Service的连通性:
    进入Traefik Pod,直接访问后端Service:
    kubectl exec -n kube-system -it $(kubectl get pods -n kube-system -l app=traefik -o name | head -n1) -- wget -O- http://jenkins.jenkins.svc.cluster.local:80
    
    若无法访问,排查集群内DNS或网络策略问题。

4. 验证客户端请求配置

  • 确认客户端机器的DNS解析正确:
    nslookup jenkins.homelab.internal
    
    确保返回的IP是Traefik的入口IP(K3s节点IP或LoadBalancer地址)。
  • 检查客户端请求的Host头是否正确:
    curl -v http://jenkins.homelab.internal
    
    查看输出中的Host:字段,必须为jenkins.homelab.internal,否则Ingress规则不会匹配。

5. 检查Jenkins Pod状态

  • 确认Pod处于正常运行状态:
    kubectl get pods -n jenkins
    
  • 查看Jenkins日志,确认服务已正常启动并监听对应端口:
    kubectl logs $(kubectl get pods -n jenkins -o name | head -n1) -n jenkins
    
    确认日志中存在类似Jenkins is fully up and running的信息,且监听端口与Service的targetPort一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:15:51