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

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

额外检查点

  1. 验证Secret格式:确认test-tls是标准TLS类型Secret,包含tls.crt和tls.key字段,可执行命令查看:
    kubectl get secret test-tls -o yaml
    
  2. 查看Ingress Controller日志:通过日志定位具体502原因,命令示例:
    kubectl logs -n <nginx-ingress命名空间> <nginx-ingress-pod名称>
    
  3. 测试后端连通性:在集群内用临时Pod测试Dashboard Service的可用性:
    kubectl run -it --rm curl --image=curlimages/curl -- curl -k https://kubernetes-dashboard:443
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:35:20