OCI环境下通过Nginx Ingress暴露OKE集群Dashboard遇502错误求助
问题分析与修正方案
你的Ingress配置存在几个关键错误,直接导致了502错误:
- 路径配置无效:
path: /#/完全错误,浏览器会把#后的内容当作前端锚点,不会发送到服务器端,Ingress实际收到的请求路径是/,这个匹配规则根本不会触发,请求找不到后端服务。 - 后端协议不匹配:Kubernetes Dashboard的Service默认用HTTPS协议(443端口),但Nginx Ingress默认会用HTTP转发请求到后端,导致Nginx与Dashboard Service之间的通信握手失败,触发502。
- TLS配置不完整:TLS块未指定对应域名,且证书需与访问域名匹配,否则会出现证书验证失败的问题。
修正后的Ingress YAML配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dashboard-ingress annotations: kubernetes.io/ingress.class: "nginx" # 告诉Nginx后端使用HTTPS协议通信 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 确保所有请求都转发到Dashboard nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: # 替换为你实际使用的访问域名 - dashboard.yourdomain.com secretName: test-tls rules: - host: dashboard.yourdomain.com http: paths: - pathType: Prefix path: "/" backend: service: name: kubernetes-dashboard port: number: 443
额外检查点
- 验证Secret格式:确认
test-tls是标准TLS类型Secret,包含tls.crt和tls.key字段,可执行命令查看:kubectl get secret test-tls -o yaml - 查看Ingress Controller日志:通过日志定位具体502原因,命令示例:
kubectl logs -n <nginx-ingress命名空间> <nginx-ingress-pod名称> - 测试后端连通性:在集群内用临时Pod测试Dashboard Service的可用性:
kubectl run -it --rm curl --image=curlimages/curl -- curl -k https://kubernetes-dashboard:443
内容的提问来源于stack exchange,提问作者akhil chowdary
相关产品推荐
相关产品推荐

