[英]Kubernetes communication between pods using REST
现在我得到了这样的架构:
internet
|
[ IngressController ]
| |
[ Ingress A] [ Ingress B]
--|-----|-- --|-----|--
[ Service A] [ Service B]
| |
[ Pod A] [ Pod B]
因此,如果Service A
从Service B
请求数据,它将使用full qualified name
,例如
ResponseEntity<Object> response = restTemplate.exchange(host.com/serviceB, HttpMethod.POST, entity, Object.class);
由于它们都在同一个集群中,我会尝试更改架构以改善服务之间的通信。 我想象了这样的事情:
internet
|
[ IngressController ]
| |
[ Ingress A] [ Ingress B]
--|-----|-- --|-----|--
[ Service A]-[ Service B]
| |
[ Pod A] [ Pod B]
因此,服务将被允许仅通过名称或其他方式相互请求。 我只是不确定如何使用REST-Services
来实现这一点。
您需要通过它的Kubernetes DNS 名称调用Service B
,它应该直接连接而不通过入口。
澄清Service A
不与Service B
交谈,而是Pod A
与Service B
交谈,而Pod B
与Service A
交谈。 因此,只要所有 pod 和服务都在同一个Kubernetes 命名空间中,您可以使用服务名称作为主机名与服务通信,这将解析为服务的内部 IP 地址,然后将流量转发到 pod。
如果 pod 碰巧位于不同的命名空间中,您将使用添加到服务的命名空间名称进行连接: <service-name>.<namespace-name>
或<service-name>.<namespace-name>.svc.cluster.local
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.