首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将前端API应用程序连接到后端数据库

将前端API应用程序连接到后端数据库
EN

Stack Overflow用户
提问于 2020-08-12 13:38:51
回答 1查看 320关注 0票数 0

谁能帮我完成这个场景,因为我已经成功地运行了一切,但没有预期的最终结果。我有一个PostgreSQL数据库和Redis (后端) Pods以及一个前端API应用程序,我将使用这些应用程序发送API请求。不幸的是,在设置了所有内容并确保它们都在Kubernetes仪表板上运行之后,当发送API请求时,不会发生什么事情,就好像我的服务之间没有连接一样。在这里拼命发布之前,我做了一些研究以找到解决这个问题的方法,我尝试了使用出入口-服务连接我的服务的教程,但是没有起作用。我还遇到了这个教程,它将使用某种上游配置文件将我的后端服务连接到我的前端服务,但它并没有做到这一点。

这是我的YAML配置文件,如果有人感兴趣的话:

apiVersion: app/v1类:部署元数据:名称:字典-项目标签: app: net规范:副本:1选择器: matchLabels: app:字典层:前端模板:标签: app:字典层: hostNetwork:真容器:- name: dictionaryapi映像:amin/字典_server_api:最新端口:- containerPort: 400

apiVersion: v1种类:服务元数据:名称:字典-服务标签: app: net规范:选择器: app:字典层: NodePort端口:- nodePort: 67 targetPort: 400协议: TCP

apiVersion: v1种类:服务元数据:名称: postgrebackendservice标签: run:后端规范: selector: app: postgres级:后端类型: ClusterIP端口:-端口: 5432 targetPort: 5432名称: postgresdb

apiVersion: v1种类:服务元数据:名称: reddisbackendservice标签: run:后端规范:选择器: app: reddis层:后端类型: ClusterIP端口:-端口: 6379 targetPort: 6379名称:客户端端口: 16379 targetPort: 16379

所有服务的产出:

代码语言:javascript
运行
复制
Name:                     dictionary-service
Namespace:                default
Labels:                   app=net
Annotations:              <none>
Selector:                 app=dictionary,tier=frontend
Type:                     NodePort
IP:                       10.126.146.18
Port:                     <unset>  67/TCP
TargetPort:               400/TCP
NodePort:                 <unset>  31003/TCP
Endpoints:                192.168.x.x:400
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Name:              postgrebackendservice
Namespace:         default
Labels:            run=backend
Annotations:       Selector:  app=postgres,tier=backend
Type:              ClusterIP
IP:                10.182.374.13
Port:              postgresdb  5432/TCP
TargetPort:        5432/TCP
Endpoints:         192.168.x.x:5432
Session Affinity:  None
Events:            <none>

Name:              reddisbackendservice
Namespace:         default
Labels:            run=backend
Annotations:       Selector:  app=reddis,tier=backend
Type:              ClusterIP
IP:                10.182.0.60
Port:              client  6379/TCP
TargetPort:        6379/TCP
Endpoints:         192.168.x.x:6379
Port:              gossip  16379/TCP
TargetPort:        16379/TCP
Endpoints:         192.168.x.x:16379
Session Affinity:  None
Events:            <none>

我正在通过发送一个http://{workernodeIP}:31003/swagger在web浏览器上测试我的前端API应用程序,但是由于没有连接到服务器,所以页面没有加载。

集群信息:

代码语言:javascript
运行
复制
Kubernetes version: v1.18.6
Environment being used: bare-metal, 1 VM Master Node and 1 VM Worker Node
Installation method: kubeadm
Host OS: Ubuntu 18.04
CNI and version: calico
CRI and version: Docker 19.03.6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 09:10:20

从docs 这里

要从容器公开的端口的containerPort:列表。这里公开一个端口的为系统提供了关于容器使用的网络连接的附加信息,但主要是信息性的。此处不指定端口并不会阻止该端口被公开。在容器中侦听默认"0.0.0.0“地址的任何端口都可以从网络访问。无法更新。

如您所见,containerPort是信息,不让应用程序监听该端口。为了真正使应用程序监听端口400,您需要在代码中更改端口。

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

https://stackoverflow.com/questions/63377752

复制
相关文章

相似问题

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