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

时间:2019-11-22 01:29:12

标签: java kubernetes service

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

3 个答案:

答案 0 :(得分:2)

正确的方法是为Service使用B,并让A使用该服务的名称来访问B。这样,B就可以访问A而不管其地址如何。

答案 1 :(得分:1)

使用服务名称而不是服务IP。 service-A可以使用名称service-B调用service-B。 Kubernetes将负责将服务B调用路由到适当的POD,并在有多个POD的情况下实现负载平衡。您不必担心重启或哪个POD实际为请求提供服务。

答案 2 :(得分:0)

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

是同步通讯。

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

在第一种情况下,您可以做类似

的操作
- env
  name: service-B-url 
  value: http://service-name:port-number.cluster.svc.local/{uri-path}

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