从Pod到Pod的通信

Ram*_*o19 0 kubernetes

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

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

aer*_*ite 6

我可以看到两个解决方案

解决方案1:使用服务

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

Service 1 - > Pod 1
Service 2 - > Pod 2
Run Code Online (Sandbox Code Playgroud)

使用此服务

Pod 1: Service 2 -> Pod 2
Pod 2: Service 1 -> Pod 1
Run Code Online (Sandbox Code Playgroud)

解决方案2:使用StatefulSet

如果他们需要相同的Controller,您可以使用StatefulSet.

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

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

如果你有nginx使用副本2 命名的StatefulSet ,你将有两个Pod nginx-0&nginx-1.

在创建每个Pod时,它会获得匹配的DNS子域,采用以下形式: $(podname).$(governing service domain)

Pod nginx-0: nginx-1.{service-account}.{namespace}.svc.cluster.local - >nginx-1

Pod nginx-1: nginx-0.{service-account}.{namespace}.svc.cluster.local - >nginx-0

使用此稳定网络ID,这些Pod可以相互通信.