Kubernetes中吊舱之间的通信。服务对象还是群集网络?
我是Kubernetes的初学者,我的情况如下:我有两个不同的吊舱:PodA和PodB。首先,我想向外界公开PodA,因此我为PodA创建了一个服务(键入NodePort或LoadBalancer),这对我来说并不难理解 然后我想PodA与PodB通信,在几个小时的谷歌搜索后,我发现答案是我还需要为PodB创建一个服务(如果我想让PodB仅在集群内可见,请键入ClusterIP),如果我这样做,我可以让PodA和PodB互相合作。但问题是我也发现了。根据这个网页,他们说可以通过Kubernetes中吊舱之间的通信。服务对象还是群集网络?,kubernetes,google-kubernetes-engine,kubernetes-pod,azure-aks,Kubernetes,Google Kubernetes Engine,Kubernetes Pod,Azure Aks,我是Kubernetes的初学者,我的情况如下:我有两个不同的吊舱:PodA和PodB。首先,我想向外界公开PodA,因此我为PodA创建了一个服务(键入NodePort或LoadBalancer),这对我来说并不难理解 然后我想PodA与PodB通信,在几个小时的谷歌搜索后,我发现答案是我还需要为PodB创建一个服务(如果我想让PodB仅在集群内可见,请键入ClusterIP),如果我这样做,我可以让PodA和PodB互相合作。但问题是我也发现了。根据这个网页,他们说可以通过cbr0、一个网桥
cbr0
、一个网桥、或者通过集群的路由表
来完成,并且他们没有提到服务对象(这意味着我们不需要服务对象??)
事实上,我也阅读了K8s的文件,在
群集网络…
2.点对点通信:这是本文档的主要重点。
…
他们还专注于吊舱到吊舱的通信,但没有与服务对象相关的内容 所以,我现在真的很困惑,我的问题是:你能给我解释一下中的这些东西和服务对象之间的联系吗?服务对象是
cbr0
和路由表
的高级抽象?最后,豆荚如何能够相互通信
如果我误解了什么,请帮我指出,我真的很感激
谢谢大家 如果您的PodA知道PodB的地址或DNS名称,它可以始终与PodB通信。在集群环境中,可能有多个PodB副本,或者PodB的一个实例可能会死亡,并被另一个具有不同地址和名称的实例替换。
服务
是处理这种情况的抽象。如果您使用服务
公开您的PodB,那么集群中的所有PodB都可以使用该服务与一个PodB实例对话,该服务具有固定的名称和地址,无论存在多少个PodB实例以及它们的地址是什么。首先,我在您处理两个应用程序时阅读了它,例如ApplicationA
和ApplicationB
。在对架构进行推理时,不要使用Pod抽象。在Kubernetes上,您正在处理一个分布式系统,它的设计应使您的应用程序具有多个实例,例如,为了实现高可用性。应用程序的每个实例都是一个Pod
将应用程序ApplicationA
和ApplicationB
作为资源部署。然后,无需停机即可轻松进行滚动升级,如果应用程序崩溃,Kubernetes将重新启动应用程序的任何实例
对于每个
部署
或您的应用程序,创建一个服务
资源(例如ServiceA
和ServiceB
)。当您从应用程序A
与另一个应用程序通信时,请使用该服务,例如服务B
。该服务将负载平衡您对其他应用程序实例的请求,您可以在不停机的情况下升级部署。1.集群网络:顾名思义,集群中部署的所有POD都将通过实现任何kubernetes网络模型(如DANM、flannel)进行连接
检查此链接以了解如何创建群集网络。
安装了CNI(通过实施集群网络),每个pod将获得一个IP
2.使用ClusterIP类型创建的服务对象,指向内部创建用于通信的此IP(通过端点)
回答您的问题,是的,服务对象是cbr0和路由表的高级抽象
您可以使用服务对象在POD之间进行通信。
如果网络很复杂,您也可以实现服务网格,如特使/Istio。在Kubernetes集群中使用服务 库伯内特斯豆荚是致命的。他们是出生的,当他们死了,他们不会复活。如果您使用部署来运行应用程序,它可以动态创建和销毁POD 每个Pod都有自己的IP地址,但是在部署中,一瞬间运行的Pod集可能与稍后运行该应用程序的Pod集不同 这导致了一个问题:如果某组POD(称为“后端”)为集群中的其他POD(称为“前端”)提供了功能,那么前端如何找到并跟踪要连接的IP地址,以便前端可以使用工作负载的后端部分
也就是说,当您的部署(podA和podB)被动态管理时,服务非常方便。谢谢您的回答,所以我的理解是我在问题中提到的
cbr0
或route table
是K8s中的低级,而服务
是我们,程序员,你能用它来处理这个问题吗?请问我说得对吗?如果我说了一些愚蠢的话,我很抱歉,但我只是想知道这些东西之间是否有关联。这是正确的。k8s管理节点上的路由表,以实现您应该使用的高级网络。网桥、路由表等是底层网络的组件。K8s使用这些原语实现软件定义的网络。正如我所说,你可以到达吊舱