首页 > 解决方案 > GCP 中 kubernetes 内同一节点上从 Pod 到 Pod 的通信

问题描述

我已经为 kubernetes 中的前端(REACT)和后端(EXPRESS NODE JS)项目进行了 dockerized 和创建部署和服务。我已经成功部署在同一节点的 Kubernetes(单节点集群)中,在谷歌云平台中有两个 Pod(即一个 Pod --> REACT APP 和 SECOND POD --> EXPRESS NODE JS)。

问题:

1.) 如何在 Kubernetes 集群的 Node 中从一个 pod 到另一个 pod 进行通信?

2.) 我通过在kubernetes中创建LoadBalancer类型服务将我的 REACT 应用程序暴露给外部世界,并且我能够从浏览器访问 React 应用程序端点。现在,是否可以从节点内的 REACT 应用程序访问 EXPRESS 应用程序,而无需将我的 EXPRESS 应用程序暴露给外部世界。如何做到这一点?

提前致谢。

标签: dockerkubernetesgoogle-cloud-platformgoogle-kubernetes-engine

解决方案


当前端是基于浏览器的 JavaScript 应用程序时,JavaScript 资源可能托管在集群中的 Pod 中,但逻辑不会在那里运行。前端的 JavaScript 在用户的浏览器中运行。从用户的浏览器调用集群中的任何后端端点都需要在链中某处的外部 URL 而不仅仅是内部 URL。

执行此操作的典型方法是设置 LoadBalancer 类型的服务并将外部端点放入后端的配置中。另一种方法是设置一个 Ingress Controller 并将 Service 和 Ingress 与后端一起部署。使用 Ingress,您可以在部署服务之前知道外部 URL 是什么(如果使用 DNS,这是最简单的)。集群内部通信不需要 Ingress,可以使用 ClusterIP 类型的服务来完成,但我认为您需要外部通信。

无论如何,您都需要公开一个外部入口点供用户访问 UI(托管 JS 的地方)。使用 ingress,您可以将到后端的路由配置为同一(外部)主机上的不同路径。


推荐阅读