我有一个非常简单的node.js应用程序,服务器正在监听端口8282
const http = require('http');
const os = require('os');
...
...
var server = http.createServer(handler);
server.listen(8282); 我有一个Dockerfile:
FROM node:12
COPY app.js /app.js
ENTRYPOINT ["node","app.js"]然后,我成功地构建了映像myreg/my-app:1.0 &使用以下清单部署到我的k8s集群(AWS ):
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-ns
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: myreg/my-app:1.0
ports:
- containerPort: 8282
imagePullSecrets:
- name: my-reg-cred
---
apiVersion: v1
kind: Service
metadata:
name: my-svc
namespace: my-ns
spec:
ports:
- name: http
port: 8282
targetPort: 8282
selector:
app: my-app我能看到豆荚在运行:
kubectl --namespace=my-ns get po
NAME READY STATUS RESTARTS AGE
my-app-5477c9c798-5q4v4 1/1 Running 0 5m3s然后我想在我的终端上做port-forwarding:
$kubectl --namespace=my-ns port-forward my-app-5477c9c798-5q4v4 8282
Forwarding from 127.0.0.1:8282 -> 8282
Forwarding from [::1]:8282 -> 8282我打开另一个终端窗口,用卷曲与我的吊舱通信:
curl localhost:8282
curl: (52) Empty reply from server在正在运行端口转发的另一个终端窗口上:
Handling connection for 8282
E0411 23:12:25.254291 45793 portforward.go:400] an error occurred forwarding 8282 -> 8282: error forwarding port 8282 to pod ca30fad7ea7100d684d1743573dea426caa9a333163ccbca395ed57eaa363061, uid : exit status 1: 2022/04/11 20:12:25 socat[1326] E connect(5, AF=2 127.0.0.1:8282, 16): Connection refused为什么端口转发在我的实现中失败了?我错过了什么?
发布于 2022-04-12 14:00:33
您的应用程序只是收听本地主机,尝试将server.listen(8282)更改为server.listen(8282,"0.0.0.0"),重新构建和更新映像,并重新启动部署。
https://stackoverflow.com/questions/71839213
复制相似问题