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会自动打开浏览器跳转到可访问的地址
可选排查操作
如果访问仍然异常,可依次执行以下命令确认状态:
- 确认Pod运行状态:
kubectl get pods | grep nginx-deployment,正常状态应为Running - 验证Pod内Nginx服务正常:
kubectl exec -it <Nginx Pod名称> -- curl 127.0.0.1,正常会返回Nginx默认首页的HTML内容 - 确认Service Endpoints正常:
kubectl describe svc nginx-service,Endpoints字段应为<Pod IP>:80
内容的提问来源于stack exchange,提问作者Sreehari
相关产品推荐
相关产品推荐

