我有一个有2个pod的节点.每个吊舱都需要相互通话.问题是我不想硬编码用于通信的IP.
与DNS服务类似,我需要一些东西(不会改变),它可以位于pod ip之上,并允许我在pod之间进行通信.
我可以看到两个解决方案
解决方案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可以相互通信.
| 归档时间: |
|
| 查看次数: |
2855 次 |
| 最近记录: |