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

时间:2017-03-09 12:28:06

标签: nginx kubernetes google-compute-engine

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

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

我如何展示第二项服务,最好是使用Ingress?我是否需要添加第二个Ingress资源,还是需要重新配置我已经拥有的资源?

1 个答案:

答案 0 :(得分:1)

Servicetype: LoadBalancer一起使用并使用Ingress通常是相互排斥的方式来公开您的应用。

当您使用Service创建type: LoadBalancer时,Kubernetes会在您的云帐户中创建一个具有IP的LoadBalancer,打开该LoadBalancer上与您的Service匹配的端口,然后指示到该IP的所有流量为1 Service。因此,如果您有2个Service个对象,每个对象具有2个不同Deployment的'type:LoadBalancer',那么您也有2个IP(每个Service一个)。

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