Kubernetes部署Node.js应用通过Ingress访问报502 Bad Gateway错误
Kubernetes部署Node.js应用502错误修复方案
核心配置错误梳理
- Deployment的
containerPort与应用实际监听端口不匹配
Dockerfile声明应用暴露端口为3123,但Deployment中ports.containerPort字段错误配置为47033,同时需要确认Node.js代码实际监听地址为0.0.0.0:3123,不能绑定127.0.0.1,否则集群内所有资源都无法访问容器内服务。 - Ingress引用的Service名称错误
你创建的Service名称为node-development-service,但Ingress配置中backend.service.name字段错误填写为node-development,Ingress无法找到对应后端Service直接触发502错误。
修复后的配置文件
Deployment.yaml
--- apiVersion: "apps/v1" kind: "Deployment" metadata: name: "node-development" namespace: "development" spec: selector: matchLabels: app: "node-development" replicas: 1 template: metadata: labels: app: "node-development" spec: containers: - name: "node-development" image: "xxx" imagePullPolicy: "Always" env: - name: "NODE_ENV" value: "development" ports: - containerPort: 3123 # 修改为和应用实际监听端口一致
ingress.yaml
--- apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: name: "node-development-ingress" namespace: "development" annotations: nginx.ingress.kubernetes.io/rewrite-target: "/$1" spec: rules: - host: "xxxx" http: paths: - backend: service: name: "node-development-service" # 修改为正确的Service名称 port: number: 47033 path: "/node-development/(.*)" pathType: "ImplementationSpecific"
验证步骤
- 应用修改后的配置:
kubectl apply -f Deployment.yaml kubectl apply -f ingress.yaml
- 验证Pod本身可用性:
kubectl port-forward pod/<实际运行的Node应用Pod名> 3123:3123 -n development # 本地执行curl 127.0.0.1:3123,确认返回正常响应
- 验证Service连通性:
kubectl port-forward svc/node-development-service 47033:47033 -n development # 本地执行curl 127.0.0.1:47033,确认返回正常响应
- 最后通过Ingress域名访问验证即可。
内容的提问来源于stack exchange,提问作者SVD
相关产品推荐
相关产品推荐

