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

Ubuntu20.4下Minikube中Nginx LoadBalancer服务无法从浏览器访问

Minikube环境Nginx Service访问失败解决方案

问题根源

两个核心错误导致访问失败:

  • 端口配置不匹配:官方nginx:1.14.2镜像默认监听80端口,你的配置中强制将流量转发到Pod的8080端口,Nginx未在该端口监听,直接导致连接被拒绝
  • Minikube LoadBalancer特性限制:Minikube默认没有内置LoadBalancer的外部IP实现,需要额外启动隧道打通宿主机到集群的访问路由

修复步骤

1. 修正YAML配置文件

将Deployment的containerPort和Service的targetPort修改为Nginx默认监听的80端口,修改后配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80 # 修正为Nginx默认监听端口
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service  
spec:
  selector:
    app: nginx
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 8081
      nodePort: 30001
      targetPort: 80 # 修正为Pod内Nginx的监听端口

2. 重新应用配置

执行命令更新集群资源:
kubectl apply -f <你的配置文件名>.yaml

3. 启动Minikube隧道(LoadBalancer类型Service必备操作)

打开新的终端窗口,执行以下命令,输入sudo密码后保持窗口不关闭:
minikube tunnel

4. 验证访问

两种访问方式二选一即可:

  • 访问LoadBalancer地址:执行kubectl get svc nginx-service获取EXTERNAL-IP,浏览器访问http://<EXTERNAL-IP>:8081即可打开Nginx首页
  • 快捷访问:直接执行minikube service nginx-service,Minikube会自动打开浏览器跳转到可访问的地址

可选排查操作

如果访问仍然异常,可依次执行以下命令确认状态:

  1. 确认Pod运行状态:kubectl get pods | grep nginx-deployment,正常状态应为Running
  2. 验证Pod内Nginx服务正常:kubectl exec -it <Nginx Pod名称> -- curl 127.0.0.1,正常会返回Nginx默认首页的HTML内容
  3. 确认Service Endpoints正常:kubectl describe svc nginx-service,Endpoints字段应为<Pod IP>:80

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:03