先上图
上图是一个客户端访问k8s集群服务的示意图,本文只讲解ingress控制器、NodePort类型的Service对外暴露端口两部分。
Ingress和Ingress控制器的官方定义如下:
Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP,Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。Ingress通常负责通过负载均衡器来实现 Ingress。
官方定义看得人云里雾里。我用大白话解释,打个比方Ingress控制器类似于与nginx,Ingress类似于nginx的配置文件。如果我们只安装nginx,不写nginx的配置文件,例如不写转发规则,则此nginx将毫无意义;反过来,若只有nginx的配置文件,但没装nginx,则配置文件无运行载体。所以Ingress和Ingress控制器是配合着使用的。
从上图可以看出Ingress和Ingress控制器是负责对外部请求的管理、转发,并没有对外暴露端口,需要在Ingress前面加一个NodePort类型的Service,通过这个Service对外暴露端口。
附录
Kubernetes - 使用Ingress、Ingress控制器(Ingress Controller)转发请求