amazon-web-services - 如何从 kubernetes 的前端调用 spring api
问题描述
我正在尝试创建一个 Kubernetes 应用程序,在该应用程序中,我为后端(spring boot 微服务)和前端 pod 和负载均衡器服务创建了一个 pod 和服务。
我想知道如何从 Kubernetes 的前端 pod 调用后端 API?
以下是正在运行的服务:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
angular LoadBalancer 10.100.15.215 a17f17fd2e25011e886100a0e002191e-1613530232.us-east-1.elb.amazonaws.com 4200:30126/TCP 12s app=angular
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 35m <none>
login ClusterIP 10.100.99.52 <none> 5555/TCP 13m app=login,tier=backend
我正在从前端调用以下 API,它显示名称未解析错误:
http://login/login
我也尝试使用集群 IP 调用 API,但失败了。
解决方案
看起来您的后端服务正在端口上运行5555
,因此您必须像这样调用后端服务:
http://login:5555/login
这假设您的前端的 pod 位于同一个 Kubernetes命名空间上。如果它们在不同的命名空间上,你可以这样调用:
http://login.<namespace>.svc.cluster.local:5555/login
也如此处所述。
请注意,这仅在集群内有效,如果您从集群外的 Web 浏览器访问 Angular 前端,这将不起作用,因为 Web 浏览器不知道您的后端在集群中的位置。因此,要么您必须使用另一种 LoadBalancer 类型的服务公开您的后端,要么您可以考虑使用带有入口控制器的Kubernetes Ingress 。
推荐阅读
- javascript - 以特定方式更改给定字符串的顺序
- sql - 针对数据集在表中运行多个 SQL 查询
- javascript - 角度的电子邮件验证
- ios - 在 Safari Web Extension (iOS 15) 中将消息从应用程序 (popup.js) 发送到 JS (content.js)
- c# - MSBuild 如何解析参考项?
- hazelcast - Hazelcast Node 运行多个节点时出现多个错误
- checkmarx - Checkmarx 报告漏洞 - “未加密的 Web 配置文件”,即使代码没有任何敏感数据
- wordpress - 计算 WooCommerce 购物车中的自定义分类术语并将运费乘以数字
- salt-stack - 盐栈顶文件执行
- java - OutputStreamWriter 仅将一项写入文件