Kubernetes Nginx Ingress访问Dashboard返回400错误求助
解决Kubernetes Dashboard通过Ingress访问返回400错误的问题
问题描述
访问https://localhost/dashboard时收到400错误,提示内容为:客户端向HTTPS服务器发送了HTTP请求。
问题原因
Kubernetes Dashboard的Service端口443基于HTTPS协议提供服务,但当前Ingress配置默认以HTTP协议向后端转发请求,导致Dashboard服务收到不匹配的请求后返回错误。
解决方案
修改Ingress清单,添加指定后端协议为HTTPS的注解:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: root-ingress namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/rewrite-target: / # 添加注解,指定后端使用HTTPS协议转发 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" spec: ingressClassName: nginx rules: - http: paths: - path: /dashboard pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443
执行步骤
- 更新Ingress资源:
kubectl apply -f <你的Ingress文件名>.yaml -n kubernetes-dashboard - 验证Ingress状态:
kubectl get ingress root-ingress -n kubernetes-dashboard - 重新测试访问:
curl -k -v https://localhost/dashboard
补充排查点
如果修改后问题仍存在,可检查:
- Ingress Controller Pod运行状态:
kubectl get pods -n ingress-nginx - Dashboard的Service和Pod状态:
kubectl get svc,pods -n kubernetes-dashboard
内容的提问来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

