部署nginx ingress控制器后,nginx命名空间中有两个服务
NAME TYPE CLUSTER-IP EXTERNAL-IP
ingress-nginx-controller LoadBalancer 10.28.13.78
ingress-nginx-controller-admission ClusterIP 10.28.8.39
我知道外部IPMap到外部负载均衡器,该负载均衡器将流量路由到入口,但此路由器IP的功能是什么?此clusterIP是否将流量路由到应用程序服务,然后路由到应用程序pod?
2条答案
按热度按时间p8h8hvxi1#
我知道外部IPMap到外部负载均衡器,该负载均衡器将流量路由到入口,但此路由器IP的功能是什么?
ClusterIP
类型的服务抽象也在做负载平衡,但在集群内部。它不是你已经知道的作为负载均衡器运行的示例。kube-proxy
为ClusterIP
服务前面的每个pod配置ip-tables
规则,并将流量随机路由到不同的pod(因为相同的TCP会话数据包将被定向到相同的pod,否则pod最终将无法解码有意义的数据)。此clusterIP是否将流量路由到应用程序服务,然后路由到应用程序pod?
不,这不对。为了将流量从Ingress发送到应用程序Pod,它使用了应用程序服务的
ClusterIP
。在这里,默认情况下,当创建LoadBalancer
类型的服务时,您也会获得ClusterIP
。为了方便起见,不使用外部IP进行内部服务,以进行您可能想要的Ingress通信。举例来说:如果你想从同一个集群中的pod调用一个由ingress前置的服务,那么你可以使用
ClusterIP
并避免 * 流量发夹 *(从集群发起的流量离开集群并再次重新进入集群)。4dc9hkyq2#
它与Admission Webhook有关。下面是reference的文档:
避免因配置错误而导致停机
因为入口控制器使用同步循环模式工作,所以它将配置应用于所有匹配对象。如果某些Ingress对象有一个损坏的配置,例如www.example.com注解中的语法错误nginx.ingress.kubernetes.io/configuration-snippet,则生成的配置将无效,不会重新加载,因此不会考虑更多的入口。
为了防止这种情况发生,Ingress-Nginx控制器可选地公开了一个验证准入webhook服务器,以确保传入的ingress对象的有效性。这个webhook将传入的ingress对象追加到ingress列表中,生成配置并调用nginx以确保配置没有语法错误。