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

如何通过Nginx Ingress暴露Kubernetes Dashboard?配置后访问报连接被拒绝

核心配置遗漏与修复方案

1. 命名空间不匹配

你创建的Ingress资源位于default命名空间,而kubernetes-dashboard服务部署在kubernetes-dashboard命名空间,Ingress默认仅会查找自身所在命名空间下的Service,因此无法识别目标服务。

2. 未指定IngressClass

你集群中存在2个独立的Ingress Nginx控制器(default命名空间下1个、ingress-nginx-2命名空间下1个),Ingress资源未配置ingressClassName字段,没有控制器认领该规则,这也是你执行kubectl get ingress时ADDRESS字段为空的直接原因。

3. 缺少HTTPS协议适配与端口监听

当前你的Ingress仅开放80端口监听,而Dashboard服务本身是HTTPS 443协议,需要添加特殊注解让Ingress控制器以HTTPS协议透传请求到后端,同时开启443端口监听。

4. 访问地址与Ingress暴露方式不匹配

你访问的10.11.12.13需要是Ingress控制器对外暴露的有效地址:

  • 若Ingress控制器用NodePort方式暴露,需要访问节点IP + 对应30000-32767段的NodePort端口
  • 若用LoadBalancer方式暴露,需要确认LoadBalancer分配的对外IP为10.11.12.13

修正后的Ingress配置示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard
  namespace: kubernetes-dashboard # 与目标服务同命名空间
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 告知控制器后端为HTTPS协议
spec:
  ingressClassName: "nginx" # 替换为实际IngressClass名称,可执行kubectl get ingressclass查询
  defaultBackend:
    service:
      name: kubernetes-dashboard
      port:
        number: 443
  tls: # 开启443端口监听,直接复用Dashboard自带的自签名证书
  - secretName: kubernetes-dashboard-certs

生效验证步骤

  1. 应用配置后执行kubectl get ingress -n kubernetes-dashboard,确认ADDRESS字段已显示控制器对外IP、PORTS列显示80, 443
  2. 执行kubectl get svc -n <你的Ingress控制器所在命名空间>,确认控制器的Service类型为NodePort/LoadBalancer,记录HTTPS对应的访问端口
  3. 按https://<节点IP/LoadBalancerIP>:<HTTPS端口>格式访问即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:05