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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:32:18