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

EC2部署Minikube时Ingress地址与Minikube IP不同,如何通过Ingress访问Kubernetes Dashboard

解决方案

1. 修正Ingress配置错误

你当前的Ingress配置中rewrite规则缺少路径捕获组,会导致路径转发异常,替换为以下配置即可:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/use-regex: "true"
    # 修正rewrite规则匹配路径捕获
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: ingress-resource
spec:
  rules:
  - http:
      paths:
      # 修正path添加捕获组匹配子路径
      - path: /kubedashboard(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

修改后执行kubectl apply -f <你的ingress文件名.yaml>生效配置。

2. 开启Nginx Ingress Controller的SSL透传支持

你配置了ssl-passthrough: "true"参数,默认Minikube安装的Nginx Ingress Controller没有开启该功能,执行以下命令修改Controller启动参数:

kubectl patch deployment ingress-nginx-controller -n ingress-nginx --type=merge -p '{"spec":{"template":{"spec":{"containers":[{"name":"controller","args":["/nginx-ingress-controller","--publish-service=$(POD_NAMESPACE)/ingress-nginx-controller","--election-id=ingress-controller-leader","--controller-class=k8s.io/ingress-nginx","--configmap=$(POD_NAMESPACE)/ingress-nginx-controller","--validating-webhook=:8443","--validating-webhook-certificate=/usr/local/certificates/cert","--validating-webhook-key=/usr/local/certificates/key","--enable-ssl-passthrough"]}]}}}'

等待Controller Pod重启完成后再继续后续操作。

3. 确认端口与安全组配置

  • 首先获取Nginx Ingress Controller的HTTPS NodePort端口:
kubectl get svc ingress-nginx-controller -n ingress-nginx -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}'

输出的端口即为后续访问需要用到的NodePort值。

  • 登录EC2控制台,在对应实例的安全组中添加入站规则,放行TCP协议的上述NodePort端口,源地址可根据需求设置为你的本地公网IP或者0.0.0.0/0。

4. Minikube Docker驱动特殊处理

如果你使用Docker作为Minikube的运行驱动,Minikube的NodePort默认不会直接暴露到EC2主机网络,可选择以下任意一种方式处理:

  • 方式1:启动Minikube时提前映射对应端口(替换为你的实际NodePort)
minikube start --ports=30443:30443
  • 方式2:通过minikube service命令临时暴露Ingress Controller端口到EC2主机
minikube service ingress-nginx-controller -n ingress-nginx --https

执行后会输出映射到EC2本地的访问地址,替换对应端口部分即可。

5. 验证访问

配置完成后即可使用你要求的三种方式访问Dashboard:

  • EC2本地访问:curl https://localhost:<替换为你的NodePort>/kubedashboard --insecure
  • 集群内部访问:curl https://$(minikube ip):<替换为你的NodePort>/kubedashboard --insecure
  • 公网访问:curl https://<你的EC2公网IP>:<替换为你的NodePort>/kubedashboard --insecure

补充:你看到的Ingress地址与Minikube IP不一致属于正常现象,Ingress资源的ADDRESS字段是Cloud Provider分配的负载均衡地址,你使用NodePort类型的Controller时该字段不影响实际访问,只要请求打到Ingress Controller的NodePort端口即可正常路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:24:03