我有一个有两个豆荚的节点。每个豆荚都需要彼此交谈。问题是我不想为通信硬编码in。
类似于DNS服务,我需要一些东西(不改变),它可以位于pod ip之上,并允许我仍然在吊舱之间进行通信。
发布于 2018-02-08 16:03:46
我能看到两种解决方案
解决方案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范围内,这在集合上是唯一的。
这意味着Pod名称将是:$(statefulset name)-$(ordinal)
如果有带有副本2的StatefulSet名为nginx,那么您将有两个Pod nginx-0 & nginx-1。
创建每个Pod时,它将获得一个匹配的DNS子域,形式为:
$(podname).$(governing service domain)
nginx-0** Pod nginx-1.{service-account}.{namespace}.svc.cluster.local -> nginx-1**
nginx-1** Pod nginx-0.{service-account}.{namespace}.svc.cluster.local -> nginx-0**
使用这个稳定网络ID,这些口袋妖怪可以相互通信。
https://stackoverflow.com/questions/48687562
复制相似问题