当前位置: 首页 > 知识库问答 >
问题:

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

赵俊晤
2023-03-14

我是Kubernetes的初学者,我的情况如下:我有两个不同的吊舱:吊舱和吊舱。首先,我想向外界公开PodA,所以我为PodA创建了一个服务(类型NodePort或LoadBalancer),这对我来说并不难理解。

然后我想让PodA与PodB通信,在谷歌搜索了几个小时后,我发现答案是我还需要为PodB创建一个服务(如果我想让PodB只在集群内可见,请键入ClusterIP),如果我这样做,我可以让PodA和PodB相互协作。但问题是我也发现了这篇文章。根据这个网页,他们说同一节点上的POD之间的通信可以通过cbr0、网桥来完成,或者不同节点上的POD之间的通信可以通过集群的路由表来完成,而且他们没有提到任何服务对象(这意味着我们不需要服务对象??)。

事实上,我也阅读了K8s的文档,并在集群网络中找到了它

群集网络

2。吊舱间通信:这是本文件的主要重点

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

所以,我现在真的很困惑,我的问题是:你能给我解释一下文章中的这些东西和服务对象之间的联系吗?Service对象是cbr0路由表?最后,豆荚如何相互交流?

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

谢谢大家!!!


共有3个答案

邴烨
2023-03-14

首先,我在您处理两个应用程序时阅读了它,例如ApplicationAApplicationB。在对架构进行推理时,不要使用Pod抽象。在Kubernetes上,您正在处理一个分布式系统,它的设计应使您的应用程序具有多个实例,例如,为了实现高可用性。应用程序的每个实例都是一个Pod

将应用程序ApplicationAApplicationB部署为部署资源。然后,无需停机即可轻松进行滚动升级,如果应用程序崩溃,Kubernetes将重新启动应用程序的任何实例。

对于每个部署或您的应用程序,创建一个Service资源(例如ServiceAServiceB)。当您从Application ationA通信到另一个应用程序时,请使用服务,例如ServiceB。该服务将负载平衡您对其他应用程序实例的请求,并且您可以升级您的部署而无需停机。

丁振海
2023-03-14

在Kubernetes集群中使用服务背后的动机。

库伯内特斯豆荚是凡人。他们出生,当他们死亡时,他们不会复活。如果使用部署来运行应用,它可以动态创建和销毁Pod。

每个Pod都有自己的IP地址,但是在部署中,一瞬间运行的Pod集可能与稍后运行该应用程序的Pod集不同。

这导致了一个问题:如果某组POD(称为“后端”)为集群中的其他POD(称为“前端”)提供了功能,那么前端如何找到并跟踪要连接的IP地址,以便前端可以使用工作负载的后端部分?

也就是说,当您的部署(podA和podB)被动态管理时,服务是很方便的。

琴正初
2023-03-14

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

 类似资料:
  • 我对AWS上POD之间的跨集群通信有疑问。 我正在使用kubernetes在AWS上部署集群。两个星团位于同一区域和AZ。两个集群都部署在各自的VPC中,子网不重叠。我已经成功创建了VPC对等,以在两个VPC之间建立通信。VPC的仆从(实例)可以通过私有IP相互ping。 问题是,来自一个集群(VPC)的Kubernetes吊舱不能通过其内部IP ping另一个集群中的吊舱。我看到流量离开吊舱和仆

  • 我最近设置了一个多机器库伯内特斯集群w/Docker和Flannel。我在子网上设置了Flannel,这样主机A上分配IP为的容器可以ping主机B上分配IP为的容器。 我已经设置了 Kubernetes 及其所有各种组件(、 、、),我可以成功地围绕集群启动部署和 pod。 我在集群上部署了Redis服务和webapp pod。在我的webapp pod上,环境变量<code>REDIS_SER

  • 我可以看到这两个IP,我试图连接使用tcp套接字,绑定他们与tcp端口8080。然而,它表明它没有连接。 我认为这不是使用tcp套接字连接它们的方式。是否有任何方法使一个pod服务器和其他pod客户端和conncet使用tcp套接字。 编辑: Client.C

  • 我有一个复合服务S.c,它使用两个原子服务S.a和S.b,其中所有三个服务都在Kubernetes集群中运行。更好的模式是什么 1)将Sa、Sb创建为无头服务,并让Sc通过NGINX等外部负载均衡器与它们集成(使用DNS解析器来维护更新的后端pod) 2) 使用clusterIP创建Sa、Sb,并让Sc通过群集DNS(skyDNS加载项)访问/解析它们。这将在内部利用基于IP表的负载平衡来实现PO

  • 我有一个在生产集群中运行的豆荚。该吊舱是为了调试目的,我想嗅探主机网络流量。出于安全原因,我无法在主机网络中部署该pod。 是否可以从Kubernetes中的非主机网络吊舱嗅探主机网络通信量?

  • 我在GKE负责詹金斯。构建的一个步骤是使用< code>kubectl部署另一个集群。我在jenkins容器中安装了gcloud-sdk。正在讨论的构建步骤是这样做的: 然而,我得到了这个错误(虽然它在本地正常工作): 注意:我注意到,在没有配置的情况下(~/.kube为空),我可以使用kubectl并访问pod当前运行的集群。我不知道它是如何做到的,它是否使用/var/run/secrets/k