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

Minikube中Helm部署nginx-ingress无法访问问题求助

可以在Minikube上使用Helm Chart部署nginx-ingress,问题出在服务暴露方式的配置上

当然没问题!你遇到的"connection refused"是因为Minikube环境中,Helm默认部署的nginx-ingress控制器服务类型是LoadBalancer,而Minikube不会像云厂商K8s集群那样自动为LoadBalancer类型服务分配可直接访问的外部IP。而Minikube内置的Ingress插件是预先配置好把控制器端口直接映射到Minikube虚拟机的80端口,所以能直接访问。

下面是两种快速解决的方案:

方案1:使用Minikube Tunnel获取LoadBalancer访问IP

Minikube提供tunnel命令来为LoadBalancer类型的服务创建本地隧道,分配可访问的IP:

  1. 保留现有Helm部署的nginx-ingress,打开新终端运行:
minikube tunnel
  1. 查看nginx-ingress控制器的Service,此时EXTERNAL-IP会变成一个可访问的IP(比如本地内网IP):
kubectl get svc nginx-ingress-controller
  1. 使用这个IP访问你的服务:
curl -iv "<EXTERNAL-IP>"

方案2:部署时指定Service类型为NodePort

如果不想用tunnel,可以在安装Helm Chart时直接指定服务类型为NodePort,通过Minikube IP加NodePort访问:

  1. 卸载现有部署(如果已存在):
helm uninstall nginx-ingress
  1. 重新安装并指定参数:
helm install nginx-ingress stable/nginx-ingress --set controller.service.type=NodePort
  1. 查看分配的NodePort端口:
kubectl get svc nginx-ingress-controller

你会看到类似80:30080/TCP的输出,其中30080就是NodePort
4. 访问服务:

curl -iv "$(minikube ip):30080"

额外检查:确保Ingress资源与控制器关联

还要确认你的Ingress资源指定了正确的Ingress类,否则控制器不会处理它:

  • 对于Kubernetes 1.18及以上版本,在Ingress的spec中添加:
ingressClassName: nginx
  • 对于旧版本,在Ingress的metadata.annotations中添加:
kubernetes.io/ingress.class: nginx

这样调整后,Helm部署的nginx-ingress就能在Minikube上正常工作啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:17:43