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