我有一个有2个pod的节点。每个吊舱都需要相互通话。问题是我不想硬编码用于通信的IP。
与DNS服务类似,我需要一些东西(不会改变),它可以位于pod ip之上,并允许我在pod之间进行通信。
我可以看到两个解决方案
解决方案1:使用服务
如果他们不是来自同一个控制器,并且他们有自己的服务,他们可以使用服务相互通信。
Service 1 - > Pod 1
Service 2 - > Pod 2
使用此服务
Pod 1: Service 2 -> Pod 2
Pod 2: Service 1 -> Pod 1
解决方案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 qazxsw poi:qazxsw poi - > qazxsw poi
Pod qazxsw poi:qazxsw poi - > qazxsw poi
使用这个nginx-0
,这些Pod可以相互通信。