Ubuntu minikube环境下无法从集群外访问K8s NodePort服务求助
问题根因与修复步骤
1. 修复Service端口配置错误
官方Nginx镜像默认监听80端口,你当前的Service配置将targetPort设置为8080,流量转发到Pod的8080端口无服务响应,是访问失败的核心原因。
修正Service YAML配置如下:
apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort selector: app: front-end name: nginx ports: - port: 8080 targetPort: 80 # 此处修改为Nginx容器实际监听的80端口 nodePort: 31008
修改完成后执行命令更新配置:kubectl apply -f <你的Service配置文件名>.yaml
2. 修正访问地址
你将minikube部署在AWS的Ubuntu服务器上,minikube默认不会将端口直接绑定到宿主机的localhost,直接在本地访问http://localhost:31008无法命中服务,按以下场景调整访问方式:
- AWS服务器本地测试:先执行
minikube ip获取minikube节点IP,访问http://<MINIKUBE_IP>:31008验证连通性 - 本地电脑远程访问:
- 先在AWS Ubuntu服务器上执行端口转发命令:
kubectl port-forward service/nginx-service 31008:8080 --address 0.0.0.0 - 登录AWS控制台,在对应EC2实例的安全组入站规则中,放开31008端口的公网访问权限
- 使用
http://<AWS EC2公网IP>:31008访问服务
- 先在AWS Ubuntu服务器上执行端口转发命令:
3. 辅助验证
如果调整后仍无法访问,执行以下命令确认Pod服务正常:kubectl exec -it <nginx-pod名称> -- curl localhost:80
如果返回Nginx默认页面内容,说明Pod服务正常,问题出在端口转发链路或安全组配置上。
内容的提问来源于stack exchange,提问作者stack underflow
相关产品推荐
相关产品推荐

