Skip to content

官方文档,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

image-20240522174729110

❌ 注意

Kubernetes的Ingress资源对象需要配合IngressController才能实现外部流量的转发和路由。IngressController是Ingress资源的实际执行者,负责根据定义的路由规则配置网络代理。(Ingress/Ingress Controller干万不要搞混)

视频

https://www.youtube.com/watch?v=5NMcOK_fd5U&list=PLZnRKKFwZ48kVqofroe1aJkF-Ynrnrbca&index=10