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

Traefik2.7配置IngressRoute访问K8s Dashboard报404问题咨询

故障根因

该问题由两处配置错误共同触发,两类错误均属于正常HTTP请求响应流程范畴,不会在Traefik或Dashboard日志中打印错误记录,排查时容易被忽略:

  • 未显式指定后端服务通信协议:Traefik默认以HTTP明文协议向后端Service端口发起请求,当前配置对接的是Kubernetes Dashboard的443 HTTPS监听端口,明文HTTP请求发送到HTTPS端口时,Dashboard无法正确解析请求内容,直接返回404状态码。
  • ServersTransport的serverName配置错误:该字段值是Traefik与后端服务做TLS握手时携带的SNI标识,当前配置填写的是公网访问域名k8sdash.kub.techlabnews.com,但Kubernetes Dashboard自带的自签TLS证书仅包含集群内服务域名,即使开启insecureSkipVerify: true跳过证书合法性校验,Dashboard本身仍会校验请求SNI与自身服务标识的匹配性,不匹配时直接返回404响应。
修复方案

调整两处配置即可恢复正常:

  1. 在IngressRoute的后端服务配置中显式声明通信协议为HTTPS,同时开启原始Host头传递,避免后续触发Dashboard的CSRF校验拦截
  2. 将ServersTransport的serverName修改为Kubernetes Dashboard的集群内服务域名,匹配后端自签证书的SNI规则

修正后的完整配置如下:

apiVersion: traefik.containo.us/v1alpha1
kind: ServersTransport
metadata:
  name: kubernetes-dashboard-transport
  namespace: kubernetes-dashboard
spec:
  # 修改为Dashboard集群内服务域名,匹配后端自签证书SNI
  serverName: "kubernetes-dashboard.kubernetes-dashboard.svc.cluster.local"
  insecureSkipVerify: true

---  
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`k8sdash.kub.techlabnews.com`)
      services:
        - kind: Service
          port: 443
          name: kubernetes-dashboard
          namespace: kubernetes-dashboard
          # 显式声明后端使用HTTPS协议通信
          scheme: https
          # 传递原始请求Host头,避免CSRF校验拦截
          passHostHeader: true
          serversTransport: kubernetes-dashboard-transport
  tls:
    secretName: kub.techlabnews-com-cert-secret-replica
操作验证
  • 执行kubectl apply -f <修正后配置文件路径>应用配置
  • 等待10秒左右待Traefik同步配置规则,清理浏览器缓存后重新访问Dashboard地址即可正常加载页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:54:23