【发布时间】:2021-11-23 06:55:37
【问题描述】:
我有一个在 arm Mac 上本地运行的 k8s 集群。我有客户端和服务器 pod。客户端是一个 React 前端。该服务器是一个连接到 mongodb Atlas 集群的 express 服务器。
到目前为止,图像构建良好,所有 pod 都在运行。
问题是内部端口路由不起作用。我看到的只是
GET http://localhost:5000/ net::ERR_CONNECTION_REFUSED
网络选项卡中的引荐来源网址策略提示 CORS 错误:
Referrer Policy: strict-origin-when-cross-origin
我不确定我需要做什么才能让我的客户在某个端口上获取?到目前为止,我有这个,它在 k8s 之外工作:
const getAllUsers = () => {
fetch("http://localhost:5000/")
.then((res) => res.text())
.then((res) => {
return setUsers(JSON.parse(res));
});
};
服务器有这个代码来处理请求:
app.get("/", (req, res) => {
usersCollection
.find()
.toArray()
.then((results) => {
res.json(results);
})
.catch((error) => console.error(error));
});
我的服务器集群ip服务是这样的:
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip-service
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
而我的服务器部署是这样的:
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: mydocker/k8s-server
ports:
- containerPort: 5000
env:
- name: REDIS_HOST
value: redis-cluster-ip-service
- name: REDIS_PORT
value: "6379"
当我注销服务器部署日志时,我得到:
> express_mongodb@1.0.0 dev /app
> nodemon server.js
[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Connected to Database
listening on 5000
这很棒——它正在监听我指定的端口
app.listen(PORT, function () {
console.log("listening on 5000");
});
有些东西我没有讲到。我要做的第一件事是确保我的服务器在端口 5000 上连接到我的客户端 - 我做错了什么?
编辑:在长时间查看 CORS 错误修复后,也许它不是 CORS 错误?我使用以下命令卷曲服务 ip:
curl my.ip.##.##
那就试试吧:
curl localhost:5000
但是请求超时。
我用kubectl describe service server-cluster-ip-service
然后回来
Name: server-cluster-ip-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: component=server
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.###.##.##
IPs: 10.###.##.##
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
Endpoints: 172.##.#.##:5000,172.##.#.##,172.##.#.##
Session Affinity: None
Events: <none>
【问题讨论】:
标签: node.js express kubernetes fetch port