kubernetes 入口控制器创建的clusterIp的功能是什么?

mpgws1up  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(89)

部署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?

p8h8hvxi

p8h8hvxi1#

我知道外部IPMap到外部负载均衡器,该负载均衡器将流量路由到入口,但此路由器IP的功能是什么?
ClusterIP类型的服务抽象也在做负载平衡,但在集群内部。它不是你已经知道的作为负载均衡器运行的示例。kube-proxyClusterIP服务前面的每个pod配置ip-tables规则,并将流量随机路由到不同的pod(因为相同的TCP会话数据包将被定向到相同的pod,否则pod最终将无法解码有意义的数据)。
此clusterIP是否将流量路由到应用程序服务,然后路由到应用程序pod?
不,这不对。为了将流量从Ingress发送到应用程序Pod,它使用了应用程序服务的ClusterIP。在这里,默认情况下,当创建LoadBalancer类型的服务时,您也会获得ClusterIP。为了方便起见,不使用外部IP进行内部服务,以进行您可能想要的Ingress通信。
举例来说:如果你想从同一个集群中的pod调用一个由ingress前置的服务,那么你可以使用ClusterIP并避免 * 流量发夹 *(从集群发起的流量离开集群并再次重新进入集群)。

4dc9hkyq

4dc9hkyq2#

它与Admission Webhook有关。下面是reference的文档:
避免因配置错误而导致停机
因为入口控制器使用同步循环模式工作,所以它将配置应用于所有匹配对象。如果某些Ingress对象有一个损坏的配置,例如www.example.com注解中的语法错误nginx.ingress.kubernetes.io/configuration-snippet,则生成的配置将无效,不会重新加载,因此不会考虑更多的入口。
为了防止这种情况发生,Ingress-Nginx控制器可选地公开了一个验证准入webhook服务器,以确保传入的ingress对象的有效性。这个webhook将传入的ingress对象追加到ingress列表中,生成配置并调用nginx以确保配置没有语法错误。

相关问题