如何在一个入口控制器中实现多个服务?他们在文档中给出的一个是无法理解的

sur*_*ran 2 kubernetes kubernetes-ingress nginx-ingress

我创建了一个服务,每个服务都创建一个新的负载均衡器,我不想为每个服务创建一个新的负载均衡器。为此,我找到了解决方案入口控制器,但它没有发生。

And*_*alu 5

我将尝试用简单的语言描述您需要的对象。

您不需要为每个服务创建负载均衡器。当您使用入口控制器(如 nginx)时,入口控制器本身将是负载均衡器类型。所有其他服务都需要类似于 ClusterIP 类型。

之后,您可以决定如何将 ClusterIP 服务与 Nginx LoadBalancer 链接:为每个服务创建一个入口,或者根据某种规则创建一个公开每个服务的入口(如上面帖子中 @harsh-manvar 所示的路径)。

当您说“这没有发生”时,如果您能提供有关您的设置的详细信息,那就太好了。

为了使 Nginx 入口控制器正常工作,需要将其定义为 NodePort 或 LoadBalancer 服务类型。nginx 文档中提供的示例使用 LoadBalancer。但是,LoadBalancer 仅在您的集群支持此对象时才起作用(这意味着在大多数云提供商中运行,例如 AWS/GCP/Azure/DigitalOcean 或较新版本的 minikube)。另一方面,NodePort 将在其运行的 Kubernetes 节点上公开入口控制器(使用 minikube 时,这通常意味着某种 VM,然后需要进行端口转发才能访问)。

要在本地环境中使用 ingress,您可以查看 minikube。你所需要的只是运行minikube addons enable ingress,它会为你部署一个 nginx 控制器。之后,您需要做的就是定义一个入口,根据您的设置,您可能需要使用kubectl port-forward端口转发 nginx 控制器 pod 上的端口 80 到您计算机上的本地端口。