Ingress-nginx

Ingress-nginx是Kubernetes的用于管理外部访问的一个工具,基于nginx,允许定义路由规则,将外部流量引导到集群内的服务,并支持TLS、虚拟主机和负载均衡等功能。

工作原理

ingress-contronler通过与k8s的api进行交互,动态的去感知k8s集群中ingress服务规则的变化,然后读取它,并按照定义的ingress规则,转发到k8s集群中对应的service。

这个ingress规则写明了哪个域名对应k8s集群中的哪个service,然后再根据ingress-controller中的nginx配置模板,生成一段对应的nginx配置

然后把该配置动态的写到ingress-controller的pod里,该ingress-controller的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入到nginx的配置文件中,然后reload一下,使其配置生效。以此来达到域名分配置及动态更新的效果。

使用Ingress的好处:

  1. 端口管理。减少不必要端口暴露,便于管理。

    所有的请求,通过Ingress对应的IP:PORT进入,过滤/转发/负载均衡到相应的service/pod。

  2. NodePort会在每个node上暴露对应的port,不便管理。