从Pod到Pod的通信

时间:2018-02-08 14:13:22

标签: kubernetes

我有一个包含2个pod的节点。每个吊舱都需要相互通话。问题是我不想硬编码用于通信的IP。

与DNS服务类似,我需要一些东西(不会改变),它可以位于pod ip之上,并允许我在pod之间进行通信。

1 个答案:

答案 0 :(得分:6)

我可以看到两个解决方案

解决方案1:使用服务

如果他们不是来自同一个控制器,并且他们有自己的服务,他们可以使用服务相互通信。

Service 1 - > Pod 1
Service 2 - > Pod 2

使用此服务

Pod 1: Service 2 -> Pod 2
Pod 2: Service 1 -> Pod 1

解决方案2:使用StatefulSet

如果他们需要相同的控制器,您可以使用StatefulSet

  

对于具有N个副本的StatefulSet,StatefulSet中的每个Pod将被赋予一个整数序数,范围为[0,N],在Set

上是唯一的

这意味着Pod名称将为:$(statefulset name)-$(ordinal)

如果您有名为nginx的StatefulSet包含副本2,则您将拥有两个Pod nginx-0& nginx-1

  

创建每个Pod后,它会获取匹配的DNS子域,格式为:$(podname).$(governing service domain)

广告nginx-0 nginx-1.{service-account}.{namespace}.svc.cluster.local - >的 nginx-1

广告nginx-1 nginx-0.{service-account}.{namespace}.svc.cluster.local - >的 nginx-0

使用此Stable Network ID,这些Pod可以相互通信。