一、Ingress诞生背景¶
1、K8S集群内SVC不支持外部访问;
2、通过NodePort方式不易于后续管理;
3、应用层面需要更高级别的路由功能和负载平衡;
二、Ingress基本概念¶
在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集 群内服务访问的所有流量。
Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。
通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod。
三、Ingress Controller工作原理¶
Ingress Controller用于解析Ingress的转发规则。Ingress Controller收到请求,匹配 Ingress转发规则转发到后端Service所对应的Pod,由Pod处理请求。Kubernetes中 Service、Ingress与Ingress Controller有着以下关系:
-
Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
-
Ingress是反向代理规则,用来规定HTTP、HTTPS请求应该被转发到哪个Service所对应的Pod上。
- Ingress Controller是一个反向代理程序,负责解析Ingress的反向代理规则。如果 Ingress有增删改的变动,Ingress Controller会及时更新自己相应的转发规则,当 Ingress Controller收到请求后就会根据这些规则将请求转发到对应Service的Pod上。
Ingress Controller通过API Server获取Ingress资源的变化,并动态地更新Nginx配置文件,实现HTTP(S)的负载均衡及路由转发。

总结下:Kubernetes 的 Ingress 资源对象需要配合 Ingress Controller 才能实现外部流 量的转发和路由。Ingress Controller 是 Ingress 资源的实际执行者,负责根据定义的路 由规则配置网络代理。(Ingress / Ingress Controller千万不要弄混)
四、主流的Ingress Controller¶
- Nginx Ingress Controller: 基于Nginx的Ingress控制器,提供了广泛的功能和配置选项。
- Traefik Ingress Controller: Traefik是一个流行的反向代理和负载均衡器, Traefik Ingress Controller提供了灵活的配置选项和自动发现服务的功能。
- Istio Ingress Gateway: Istio是一种服务网格,它提供了基于Envoy代理的Ingress Gateway来管理入站和出站流量。
- Kong Ingress Controller: Kong是一个API网关,提供了可扩展的路由和服务管理功能。