繁体   English   中英

使用 REST 的 Pod 之间的 Kubernetes 通信

[英]Kubernetes communication between pods using REST

现在我得到了这样的架构:

          internet
             |
   [ IngressController ]
        |          |
   [ Ingress A] [ Ingress B]
   --|-----|--  --|-----|--
   [ Service A] [ Service B]
         |            |
     [ Pod A]     [ Pod B]

因此,如果Service AService 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 AService B交谈,而Pod BService 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM