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

Windows下Minikube集群异常:Web应用无法加载

问题排查:Minikube部署Node.js应用无法访问

环境与问题概述

  • 本地使用Minikube(Docker驱动)搭建Kubernetes集群
  • 本地无法构建镜像,将应用镜像上传至Docker Hub后从集群拉取使用
  • 集群及应用部署完成,但访问对应地址无任何内容返回,尝试NodePort/LoadBalancer/ClusterIP三种Service类型均未解决问题

用到的代码文件

app.js

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => res.send('Hello World!'));

app.listen(port, () => console.log(`App listening at http://localhost:${port}`));

Dockerfile

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-node-app-service
spec:
  selector:
    app: my-node-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: nodePort

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-node-app-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-node-app
  template:
    metadata:
      labels:
        app: my-node-app
    spec:
      containers:
        - name: my-node-app
          image: hub-acc/my-node-app:latest

package.json

{
  "name": "my-node-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  }
}

执行步骤

  1. 镜像推送至Docker Hub:
    docker tag my-node-app:latest name/my-node-app:latest
    docker push name/my-node-app:latest
    
  2. 部署应用到Minikube:
    kubectl apply -f deployment.yaml  # 注:此命令在minikube启动前执行无效,后续已重新执行
    minikube start
    kubectl apply -f deployment.yaml
    
  3. 获取服务访问链接:
    minikube service my-node-app-service --url
    

当前状态

执行kubectl get services输出:

NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
my-node-app-service           NodePort       10.107.246.196   <none>        80:32720/TCP     9h

打开生成的链接后无任何内容显示。

排查建议

  • 检查Pod运行状态:执行kubectl get pods确认Pod是否处于Running状态。若为CrashLoopBackOff或Error,执行kubectl logs <pod-name>查看容器日志,定位启动失败原因。
  • 验证镜像可用性:确认deployment.yaml中的镜像地址hub-acc/my-node-app:latest正确,本地执行docker pull hub-acc/my-node-app:latest测试镜像是否可正常拉取。
  • 修正应用监听地址:app.js中app.listen(port)默认仅监听容器内localhost,外部无法访问。需修改为监听0.0.0.0:
    app.listen(port, '0.0.0.0', () => console.log(`App listening at http://0.0.0.0:${port}`));
    
    重新构建、推送镜像后重新部署应用。
  • 测试集群内部访问:进入集群内任意Pod,执行curl my-node-app-service:80,判断是服务转发问题还是外部访问路径问题。
  • 直接访问NodePort端口:执行minikube ip获取节点IP,访问http://<minikube-ip>:32720(对应Service的NodePort端口),验证是否能正常返回内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:13:10