如何通过Ingress-Nginx暴露Kubernetes Dashboard服务
前置校验
先确认Kubernetes Dashboard的服务信息,执行以下命令获取服务名、端口、命名空间:
kubectl get svc -n kubernetes-dashboard
默认场景下,官方安装的Dashboard服务名为kubernetes-dashboard,端口为443,部署在kubernetes-dashboard命名空间下。同时可通过kubectl get ingressclasses确认你的Ingress-Nginx对应的ClassName,默认值为nginx。
编写Ingress资源配置文件
Kubernetes Dashboard默认只提供HTTPS访问,因此Ingress配置需要添加对应注解适配后端HTTPS协议,参考配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kubernetes-dashboard-ingress namespace: kubernetes-dashboard annotations: # 指定后端服务协议为HTTPS,避免502错误 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 可选:开启TLS透传,直接将请求证书校验交给Dashboard后端 nginx.ingress.kubernetes.io/ssl-passthrough: "true" spec: # 替换为你实际使用的Ingress Class名称 ingressClassName: "nginx" tls: - hosts: # 替换为你自定义的Dashboard访问域名 - dashboard.k8s.local # 直接复用Dashboard默认生成的自签证书Secret secretName: kubernetes-dashboard-certs rules: - host: dashboard.k8s.local http: paths: - path: / pathType: Prefix backend: service: # 替换为你实际的Dashboard服务名 name: kubernetes-dashboard port: # 替换为你实际的Dashboard服务端口 number: 443
应用配置并验证访问
- 将上述配置保存为
dashboard-ingress.yaml文件 - 执行命令应用配置:
kubectl apply -f dashboard-ingress.yaml - 查看Ingress创建状态,确认已分配地址:
kubectl get ingress -n kubernetes-dashboard - 本地hosts绑定:将配置的访问域名指向Ingress-Nginx的对外IP,Linux/macOS修改
/etc/hosts,Windows修改C:\Windows\System32\drivers\etc\hosts,添加如下记录:<Ingress-Nginx对外IP> dashboard.k8s.local - 打开浏览器访问
https://dashboard.k8s.local即可进入Dashboard登录页,浏览器提示证书不安全为正常现象,可自行替换为可信证书更新TLS配置中的Secret即可。
常见异常排查
- 访问报502错误:确认
nginx.ingress.kubernetes.io/backend-protocol注解已添加,Dashboard服务端口配置正确,且Dashboard本身处于运行状态 - Ingress无分配地址:确认Ingress-Nginx控制器运行正常,IngressClassName配置和实际的Ingress Class名称一致
- 访问被拒绝:确认集群网络策略没有禁止Ingress-Nginx到Dashboard服务的访问流量
内容的提问来源于stack exchange,提问作者Lilin
相关产品推荐
相关产品推荐

