如何实现Kubernetes POD到POD的通信?

时间:2019-03-01 17:24:27

标签: docker kubernetes

之前在stackoverflow上已经提出并回答了这个问题,但是由于我是K8的新手,所以我不明白答案。

假设我有两个容器,每个容器都放在一个单独的POD中(因为我认为这是推荐的方法),我想我需要为两个容器分开创建一个服务。

  1. 我的Java应用程序代码如何获取服务的IP地址?
  2. 我的Java应用程序代码如何(从服务中)获取另一个POD /容器的IP地址?
  3. 这将是IP地址的列表,因为它们是无状态的并且可能会被复制。这是正确的吗?
  4. 如何选择最不忙的POD实例进行通信?

谢谢 齐格弗里德

2 个答案:

答案 0 :(得分:2)

  

我的Java应用程序代码如何获取服务的IP地址?

您需要创建一个服务来暴露Pod的端口,然后只需要使用服务名称,kube-dns就会解析Pod的IP地址

  

我的Java应用程序代码如何获取另一个IP地址   POD /容器(来自服务)?

是,使用服务名称

  

这将是IP地址的列表,因为它们是无状态的,并且它们   可能会被复制。这是正确的吗?

该服务将在与选择器匹配的所有Pod之间进行负载平衡,因此它可以是0、1或任意数量的Pod

  

如何选择最不忙的POD实例进行通信?

常见方法是循环策略,但是这里有其他特定的平衡策略 https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-ipvs

干杯;)

答案 1 :(得分:0)

您不需要获取任何IP,您可以使用服务名称(DNS)。因此,如果您将服务称为“ java-service-1”并暴露了端口80,则可以从集群内部以这种方式访问​​它:

http://java-service-1

如果服务位于其他名称空间中,则还必须添加该名称空间(请参见https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

您自己也不要选择最不忙的实例,可以将服务配置为LoadBalancer,Kubernetes会为您完成所有这些操作(请参见https://kubernetes.io/docs/concepts/services-networking/