Kubernetes集群中与API的前端通信

Kubernetes集群中与API的前端通信,kubernetes,azure-container-service,Kubernetes,Azure Container Service,在Kubernetes集群中,我运行1个节点和2个部署。React前端和.NET核心应用程序。我还为前端应用程序提供了负载平衡器服务。(所有工作:我可以向前移植以查看后端部署工作。) 问题:我正在尝试让前端和API进行通信。我知道我可以用一个面向外部的负载平衡器来实现这一点,但是有没有一种方法可以使用clusterIPs而不使用后端的外部IP来实现这一点 我们对此感兴趣的原因是,它只是又增加了一层安全性。仅将API保留为vnet,我们将删除另外一个入口点 如果有帮助,我们正在Azure中部署AK

在Kubernetes集群中,我运行1个节点和2个部署。React前端和.NET核心应用程序。我还为前端应用程序提供了负载平衡器服务。(所有工作:我可以向前移植以查看后端部署工作。)

问题:我正在尝试让前端和API进行通信。我知道我可以用一个面向外部的负载平衡器来实现这一点,但是有没有一种方法可以使用clusterIPs而不使用后端的外部IP来实现这一点

我们对此感兴趣的原因是,它只是又增加了一层安全性。仅将API保留为vnet,我们将删除另外一个入口点


如果有帮助,我们正在Azure中部署AKS。我知道他们有时会遇到一些奇怪的部署问题。

集群上运行的pod可以使用
ClusterIP
服务相互通信,这是默认的服务类型。您不需要使用
负载平衡器
服务来让两个吊舱相互通话。据

ClusterIP在群集内部IP上公开服务。选择此值将使服务只能从集群内访问。这是默认的服务类型

如中所述,如果两个POD(前端和API)都在同一命名空间上运行,前端只需要向后端服务的名称发送请求

如果它们在不同的名称空间上运行,前端API需要使用完全限定的域名才能与后端通信

例如,如果在Kubernetes命名空间“my ns”中有一个名为“my Service”的服务,则会创建“my Service.my ns”的DNS记录。“my ns”命名空间中存在的pod应该能够通过简单地查找“my service”的名称来找到它。存在于其他名称空间中的pod必须将名称限定为“my service.my ns”。这些名称查找的结果是集群IP

你可以找到更多关于DNS如何在kubernetes上工作的信息

我正在尝试让前端和api进行通信

通过
api
,如果您指的是Kubernetes api服务器,请首先为前端pod设置服务帐户和令牌,以便通过以下步骤与Kubernetes api服务器通信,以及

有没有一种方法可以使用集群而不为后端提供外部IP


是的,如果服务不需要外部访问,这是可能的,而且更安全。服务类型
ClusterIP
将不具有
ExternalIP
,POD可以使用集群内的
ClusterIP:Port
相互通信。

此配置的问题在于前端应用程序将试图通过内部集群与API联系。但它不会。客户端浏览器上的我的应用程序无法访问我的Kluster中的服务和播客

我的集群将需要nginx或其他外部负载平衡器之类的东西,以允许客户端api调用到达我的api


你也可以使用你的前端应用程序作为你的代理,但这是高度不建议的

“React前端和Dotnet核心应用程序。”很抱歉出现任何混乱。该API是我们应用程序的内部构建rest API。@TallOrderDev很酷,如果不与kubernetes API服务器通信,则无需为前端pod设置服务帐户和令牌。只需服务类型
ClusterIP
就可以让播客通过集群内的
ClusterIP:Port
相互交谈。@TallOrderDev Upvote,如果您认为我的答案有用,请接受我的答案,以便其他人知道这是正确的答案,谢谢!这是一个不同的问题,然后我所面临的。我真的很感谢你的澄清!