4

我正在尝试创建一个 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,但失败了。

4

2 回答 2

3

看起来您的后端服务正在端口上运行5555,因此您必须像这样调用后端服务:

http://login:5555/login

这假设您的前端的 pod 位于同一个 Kubernetes命名空间上。如果它们在不同的命名空间上,你可以这样调用:

http://login.<namespace>.svc.cluster.local:5555/login

也如此所述。

请注意,这仅在集群内有效,如果您从集群外的 Web 浏览器访问 Angular 前端,这将不起作用,因为 Web 浏览器不知道您的后端在集群中的位置。因此,要么您必须使用另一种 LoadBalancer 类型的服务公开您的后端,要么您可以考虑使用带有入口控制器的Kubernetes Ingress 。

于 2018-11-07T06:44:31.493 回答
0

您的 Angular 应用程序是否直接访问登录服务?如果是这种情况,由于登录服务使用ClusterIP,您将无法通过是正常的。这意味着,IP 仅在集群内。您可以像使用“角度”应用程序一样使用 LoadBalancer 类型。

于 2018-11-11T21:54:29.673 回答