首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非常简单的node.js应用程序部署到k8s集群,端口转发失败。

非常简单的node.js应用程序部署到k8s集群,端口转发失败。
EN

Stack Overflow用户
提问于 2022-04-12 08:15:32
回答 1查看 327关注 0票数 0

我有一个非常简单的node.js应用程序,服务器正在监听端口8282

代码语言:javascript
复制
const http = require('http');
const os = require('os');
...
...
var server = http.createServer(handler);
server.listen(8282);  

我有一个Dockerfile

代码语言:javascript
复制
FROM node:12
COPY app.js /app.js
ENTRYPOINT ["node","app.js"]

然后,我成功地构建了映像myreg/my-app:1.0 &使用以下清单部署到我的k8s集群(AWS ):

代码语言:javascript
复制
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

我能看到豆荚在运行:

代码语言:javascript
复制
kubectl --namespace=my-ns get po
NAME                      READY   STATUS    RESTARTS   AGE
my-app-5477c9c798-5q4v4   1/1     Running   0          5m3s

然后我想在我的终端上做port-forwarding

代码语言:javascript
复制
$kubectl --namespace=my-ns port-forward my-app-5477c9c798-5q4v4  8282
Forwarding from 127.0.0.1:8282 -> 8282
Forwarding from [::1]:8282 -> 8282

我打开另一个终端窗口,用卷曲与我的吊舱通信:

代码语言:javascript
复制
curl localhost:8282
curl: (52) Empty reply from server

在正在运行端口转发的另一个终端窗口上:

代码语言:javascript
复制
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

为什么端口转发在我的实现中失败了?我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 14:00:33

您的应用程序只是收听本地主机,尝试将server.listen(8282)更改为server.listen(8282,"0.0.0.0"),重新构建和更新映像,并重新启动部署。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71839213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档