通过Ingress访问Kubernetes Dashboard出现404 NotFound问题排查
问题排查与修复方案
1. 域名拼写错误(核心问题)
你在/etc/hosts中配置的域名是k8s-dashbaord.com,但Ingress规则里定义的host是k8s-dashboard.com(注意拼写差异:dashbaord少了一个s)。这个拼写错误会导致Ingress无法匹配对应规则,直接返回404。
修复操作:修改/etc/hosts内容为:
192.168.49.2 k8s-dashboard.com
2. 补充Ingress适配注解
Kubernetes Dashboard本身基于HTTPS提供服务,当前Ingress仅配置了backend-protocol: HTTPS,建议添加ssl-passthrough注解,让Ingress Controller直接透传SSL流量到Dashboard服务,避免证书不匹配导致的访问异常。
修改后的Ingress配置YAML:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/ssl-passthrough: "true" name: ingress-dashboard namespace: kubernetes-dashboard spec: rules: - host: k8s-dashboard.com http: paths: - pathType: Prefix path: / backend: service: name: kubernetes-dashboard port: number: 443
执行更新命令:
kubectl apply -f <你的Ingress文件路径>
3. 关于Ingress规则显示Pod IP的说明
你提到Ingress规则里映射的是172.17.0.6:8443而非Service IP,这是正常现象。Ingress Controller最终会将流量转发到后端Service关联的Pod上,所以kubectl describe ingress中显示的是Pod的IP和容器实际监听端口(Dashboard容器监听8443,Service的443端口是转发到该端口),无需担忧。
4. 额外验证步骤
- 确认Ingress Controller Pod正常运行:
确保所有Pod处于kubectl get pods -n ingress-nginxRunning状态。 - 清理浏览器缓存后,通过
https://k8s-dashboard.com访问(必须用HTTPS协议)。
内容的提问来源于stack exchange,提问作者Susitha Ravinda Senarath
相关产品推荐
相关产品推荐

