微服务在同一kubernetes集群中调用另一个微服务

问题描述 投票:0回答:3

如果Java / spring引导微服务A(部署在其自己的容器中,并且具有其自己的ClusterIP类型的Kubernetes服务)需要在Java操作系统中向Java / spring引导微服务B(具有其自己的ClusterIP类型的Kubernetes服务)发送REST请求,在同一个Kubernetes集群中,A确定B的kubernetes服务IP的最佳方法是什么(特别是如果B已重新部署)?注意:内部调用,其中B没有NodePort或LoadBalancer或Ingress。

java kubernetes service
3个回答
1
投票
正确的方法是将Service设置为B,并让A使用该服务的名称访问B。这样,无论B的地址如何,都可以对其进行访问。

0
投票
将服务B的URL保留在服务A的kubernetes部署文件的环境变量中,当服务A中的任务完成时,调用该URL,以便它将请求带到服务B。

这是同步通信。

对于异步通信,您可以使用kafka,您可以在其中通过kubernetes网络发布事件,并根据需要使其他微服务订阅该事件。

在第一种情况下,您可以执行类似操作

A

最好使用nslookup服务名称来获取要调用的服务的FQDN

0
投票
使用服务名称代替服务IP。 service-A可以使用名称service-B调用service-B。 Kubernetes将负责将服务B调用路由到适当的POD,并且在有多个POD的情况下也会实现负载平衡。您不必担心重启或哪个POD实际为请求提供服务。
© www.soinside.com 2019 - 2024. All rights reserved.