NGINX Ingress Controller是一种常见的Ingress Controller实现,它利用NGINX的高级性能和灵活性来处理服务的路由和负载均衡。当一个Ingress资源在Kubernetes集群中被创建或更新时,Ingress Controller会检测到这些变化。然后,它会根据Ingress资源定义的规则,自动生成对应的NGINX配置,以实现请求的路由和负载均衡。
NGINX配置包括如何处理进入的网络请求(例如,基于主机名或URL路径进行路由),以及如何将请求路由到后端的服务实例。NGINX Ingress Controller会定期检查Ingress资源的变化,如果检测到任何更改,它会自动更新NGINX配置以反映这些更改。此外,NGINX Ingress Controller还支持一些高级特性,如SSL终止、WebSocket、HTTP/2和更复杂的负载均衡算法。这些特性都可以通过Kubernetes Ingress资源的注解来配置。
Nginx Ingress Conftroller通过Pod部署在工作节点,因此引入了相应的组件运行和运维成本,其工作原理如图所示:
注意1、用户提交Ingress资源后,Nginx Ingress Controller会获取该资源并解析为转发规则,写入Nginx的配置文件(nginx.conf);
2、触发Nginx进行reload,以加载更新后的配置文件,完成Nginx转发规则的修改和更新;
3、集群外客户端可通过控制节点IP或VIP(若存在)访问Nginx,Nginx组件根据转发规则将其转发至对应的服务Service,最终转发到对应的后端Pod。