使用 Kubernetes Ingress 资源公开多个具有多个 IP 的后端

Jan*_*n P 5 nginx google-compute-engine kubernetes

我通过 nginx 控制器公开了一个具有静态 IP 和 Ingress 的服务,作为kubernetes/ingress存储库的示例之一。我有第二个 LoadBalancer 服务,它不受任何 Ingress 资源管理,在为第一个服务添加新资源后不再正确公开(我不明白为什么会这样)。

我尝试添加第二个 Ingress 和 LoadBalancer 服务来分配第二个静态 IP,但我无法让它工作。

我将如何公开第二个服务,最好是使用 Ingress?我需要添加第二个 Ingress 资源还是必须重新配置我已经拥有的资源?

cor*_*ien 4

使用Servicewithtype: LoadBalancer和 using anIngress通常是公开应用程序的互斥方式。

当您创建Servicewith时type: LoadBalancer,Kubernetes 在您的云帐户中创建一个具有 IP 的 LoadBalancer,打开该 LoadBalancer 上与您的 匹配的端口Service,然后将所有到该 IP 的流量定向到 1 Service。因此,如果您有 2 个Service对象,每个对象都有 2 个不同的“type: LoadBalancer” Deployment,那么您也有 2 个 IP(每个对象一个Service)。

Ingress模型基于通过运行 nginx 之类的单个 Ingress Controller 引导流量。添加资源后Ingress,入口控制器会重新配置 nginx 以包含新的Ingress详细信息。Service在这种情况下, Ingress Controller(例如 nginx)将有一个,但资源指向type: LoadBalancer的所有服务都应该是。所有对象的流量将通过 Ingress Controller 的 LoadBalancer 的相同公共 IP流向 Ingress Controller(例如 nginx)。来自对象的配置详细信息(例如虚拟主机或端口或路由)将确定哪个将获得流量。Ingresstype: ClusterIPIngressServicePodIngressService