官方文档,https://kubernetes.io/docs/concepts/services-networking/ingress/
1. Ingress Controller控制器的工作原理
Ingress Controller用于解析lngress的转发规则。Ingress Controller收到请求,匹配Ingress转发规则转发到后端Service所对应的Pod,由Pod处理请求。Kubernetes中Service、Ingress与lngress Controller有着以下关系:
- service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
- Ingress是反向代理规则,用来规定HTTP、HTTPS请求应该被转发到哪个Service所对应的Pod上。
- IngressController是一个反向代理程序,负责解析lngress的反向代理规则。如果Ingress有增删改的变动,Ingress Controller会及时更新自己相应的转发规则,当IngressController收到请求后就会根据这些规则将请求转发到对应Service的Pod上。
IngressController通过API Server获取lngress资源的变化,并动态地更新Nginx配置文件,实现HTTP(S)的负载均衡及路由转发。
白话,Ingress Controller控制器的工作原理,简单来说,将控制器理解为一个监听器,通过不断地监听 kube-apiserver,实时的感知后端 Service和Pod的变化,当得到这些信息变化后,Ingress Controller再结合Ingress的配置,更新反向代理负载均衡器,从而达到服务发现的作用。Ingress-nginx的最终目标是构造nginx.conf这样的配置文件,主要用途是在配置文件有任何变更后都需要重新加载 nginx
❌ 注意
Kubernetes的Ingress资源对象需要配合IngressController才能实现外部流量的转发和路由。IngressController是Ingress资源的实际执行者,负责根据定义的路由规则配置网络代理。(Ingress/Ingress Controller干万不要搞混)
视频
https://www.youtube.com/watch?v=5NMcOK_fd5U&list=PLZnRKKFwZ48kVqofroe1aJkF-Ynrnrbca&index=10