Minikube集群中Web应用无法通过浏览器访问的排查求助
Minikube NodePort服务无法访问排查问题
问题描述
我在Minikube集群中部署了Web应用,配置了NodePort类型的Service,Pod和Service均显示正常运行,但通过Minikube IP(192.168.49.2)加NodePort(30100)访问时,浏览器无法加载页面。
相关配置与输出
部署YAML文件
apiVersion: apps/v1 kind: Deployment metadata: name: webapp-deployment labels: app: webapp spec: replicas: 1 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: nanajanashia/k8s-demo-app:v1.0 resources: limits: memory: 512Mi cpu: "1" requests: memory: 256Mi cpu: "0.2" ports: - containerPort: 3000 env: - name: USER_NAME valueFrom: secretKeyRef: name: mongo-secret key: mongo-password - name: USER_PWD valueFrom: secretKeyRef: name: mongo-secret key: mongo-password - name: DB_URL valueFrom: configMapKeyRef: name: mongo-config key: mongo-url --- apiVersion: v1 kind: Service metadata: name: webapp-service spec: type: NodePort selector: app: webapp ports: - protocol: TCP port: 3000 targetPort: 3000 nodePort: 30100
部署命令输出
sniper@Terrys-MBP in K8S-Demo $ kubectl apply -f webapp.yaml deployment.apps/webapp-deployment created service/webapp-service created
Pod状态
$ kubectl get pod NAME READY STATUS RESTARTS AGE mongo-deployment-6f559676cc-ttrd7 1/1 Running 0 26m webapp-deployment-6bdbf85f5c-mzm5q 1/1 Running 0 25m
Service信息
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37m mongo-service ClusterIP 10.97.254.141 <none> 27017/TCP 28m webapp-service NodePort 10.110.89.181 <none> 3000:30100/TCP 27m
Minikube IP
$ minikube ip 192.168.49.2
排查步骤
检查Pod内部应用状态:进入Web应用Pod,直接测试应用端口是否正常响应
kubectl exec -it webapp-deployment-6bdbf85f5c-mzm5q -- curl localhost:3000如果此命令无响应或返回错误,说明应用本身启动失败,重点检查
USER_NAME、USER_PWD、DB_URL对应的Secret和ConfigMap是否正确配置。验证Service与Pod的关联:查看Service的Endpoints是否正确绑定Pod
kubectl describe svc webapp-service检查输出中的
Endpoints字段,确认是否显示Pod的IP和3000端口,若为空则说明标签选择器不匹配(当前配置标签一致,大概率没问题,但需确认)。使用Minikube专属命令暴露服务:Minikube在Docker等驱动下,直接用IP+NodePort可能存在网络转发限制,执行以下命令可绕过限制:
minikube service webapp-service该命令会自动打开浏览器或生成可直接访问的URL。
测试集群内部访问:从集群内其他Pod(如mongo Pod)访问Web服务的ClusterIP,确认服务在集群内是否可用
kubectl exec -it mongo-deployment-6f559676cc-ttrd7 -- curl 10.110.89.181:3000如果集群内可访问,说明问题出在外部到Minikube的网络转发上,优先使用
minikube service命令解决。检查防火墙与网络策略:Linux主机需确认防火墙是否开放30100端口;同时排查集群内是否有网络策略阻止了Service到Pod的流量。
内容的提问来源于stack exchange,提问作者cheebi
相关产品推荐
相关产品推荐

