Kubernetes 中 Pod 之间的通信。服务对象还是集群网络?

nxh*_*991 8 kubernetes google-kubernetes-engine kubernetes-pod azure-aks

我是 Kubernetes 的初学者,我遇到以下情况:我有两个不同的 Pod:PodAPodB。首先,我想将PodA暴露给外界,所以我为PodA创建了一个Service(类型为 NodePort 或 LoadBalancer),这对我来说并不难理解。

然后我希望PodAPodB进行通信,经过几个小时的谷歌搜索,我发现答案是我还需要为 PodB 创建一个服务(如果我想让PodB 仅在集群内可见,请键入 ClusterIP) ,如果我这样,我可以让PodAPodB互相通信。但问题是我也找到了这篇文章。根据这个网页,他们说同一节点上的 Pod 之间的通信可以通过网桥来完成cbr0或者不同节点上的 Pod 之间的通信可以通过route table集群的一个来完成,但他们没有提及任何内容Service对象(这意味着我们不需要Service对象???)。

其实我也看了K8s的文档,在集群网络中找到

集群网络
...
2. Pod 到 Pod 通信:这是本文档的主要焦点。
...

他们还关注Pod 到 Pod 的通信,但没有与Service对象相关的内容。

所以,我现在真的很困惑,我的问题是:您能否向我解释一下文章中的这些内容与Service对象之间的联系?Service对象是cbr0route table?的高级抽象。最后,Pod之间如何进行通信?

如果我误解了什么,请为我指出,我真的很感激。

感谢你们 !!!

Bur*_*dar 2

如果您的 PodA知道 PodB 的地址或 DNS 名称,则它始终可以与 PodB 通信。在集群环境中,PodB可能有多个副本,或者一个PodB实例可能死亡并被另一个具有不同地址和不同名称的实例取代。AService是处理这种情况的抽象。如果您使用 aService来公开 PodB,则集群中的所有 pod 都可以使用该服务与 PodB 实例进行通信,该服务具有固定名称和固定地址,无论存在多少 PodB 实例及其地址是什么。