【问题标题】:Communication from Pod to Pod从 Pod 到 Pod 的通信
【发布时间】:2018-02-08 14:13:21
【问题描述】:

我有一个带有 2 个 pod 的节点。每个 pod 都需要相互交谈。问题是我不想为通信硬编码 IP。

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

【问题讨论】:

  • 阅读服务。使用该服务来抽象出一组共享一组标签的 pod

标签: kubernetes


【解决方案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-0nginx-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

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

【讨论】:

  • 我尝试了解决方案一,效果很好。我使用了externalIPs,它之间的交流很顺畅。谢谢
  • 你能告诉我们你是如何使用外部IP的吗?据我所知,它们不是主机名
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 2019-06-21
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多