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