一、Ingress概述:ingress架构
二、ingress架构说明
### --- ingress架构说明
~~~ # 通过service:
~~~ 也可以发布一些服务,通过service的NodePort的方式也可以在外网暴露一些端口,
~~~ 通过IP+端口号的形式也可以实现外网访问,这个端口号也可以代理到k8s内部的服务,
~~~ 也就实现了服务发布的方式。那么我们为什么还需要引入Ingress呢?
~~~ # 在service的前面,加入一个nginx的代理,也可以实现通过域名的方式发布服务,
~~~ # 但是为什么还要引入Ingress呢?
~~~ # NodePort的性能:
~~~ 在service比较多的时候,性能会非常慢,
~~~ 比如说你的k8s上有成百上千的服务,那么是不是要管理成百上千的NodePort,
~~~ 这样去管理它的端口也会特别的痛苦。
~~~ # Ingress在k8s中可以在网络的4层或者层可以实现端口的代理。实现域名发布的方式。
三、传统的架构如何发布服务的
### --- 传统的架构如何发布服务的
~~~ # 先部署一个应用到宿主机,启动这个应用,这个应用会暴露一个端口号,
~~~ 就会通过宿主机加端口号访问到这个服务。
~~~ # 但是在生产环境中,不可能会让用户通过IP地址+端口号访问我们的服务,
~~~ 这样体验非常不好,而且这个IP地址+端口号是非常难记的,而且可能还会发生变更,
~~~ 我们就会在这个端口号前加入nginx,并配置一个域名,这个域名反代到这个宿主机的应用上,
~~~ # 这个域名反代到服务上,是没有办法解析的,
~~~ 所以我们需要通过域名厂商,购买一个域名,
~~~ 通过购买的这个域名就会解析到我们公司的入口nginx或者其他反代上面;比如F5或者LVS等,
~~~ 然后代理到我们的这个nginx,就实现了云发布的方式
四、k8s脚骨如何发布服务的
### --- k8s脚骨如何发布服务的
~~~ # 在使用容器部署应用之后,这个容器时定义了这个应用解析方式的,
~~~ 然后容器一旦启动,它的程序就会启动,程序启动之后,容器就会暴露一个端口号,
~~~ 启动一个进程,这个进程就会监听端口号,
~~~ 然后在通过配置一个service,来代理到我们pod上,通过selector来选择它需要戴丽丽的Pod上面,
~~~ # 配置一个service之后,可以用作service服务之间的访问,比如serviceA访问serviceB;
~~~ 那我们也可以使用Ingress,在service上面在加入一层,它的角色还是nginx,在Ingress上面配置之后,
~~~ 通过Ingress所在的宿主机的IP地址+端口号,
~~~ 把这个域名解析到宿主机上,就可以通过这个域名访问到这个服务了。
~~~ # 我们是在k8s内部,在Ingress上面还有一层:F5 LVS SLB ELB来解析。
~~~ 比如F5去代理到Ingress的80端口上,之后再把购买的域名解析到F5上,解析了这个之后,
~~~ # 再通过自动代理的方式到我们的Ingress,Ingress到service,再到pod,这样就实现了服务发布的方式。
五、使用Ingress的优点
### --- 使用Ingress的优点
~~~ 不用去关系内部的Pod的端口号等操作。不需要去维护我们的service,
~~~ 我们可以吧所有的service都使用一个端口号,可以都是用80 ,
~~~ 因为所有的service都有自己的IP地址,所以都是用80也不会造成服务的冲突。
~~~ 代理到某个service的80端口上,就可以实现访问我们的服务。
六、什么是Ingress
### --- 什么是Ingress
~~~ 通俗来讲,ingress和之前提到的Service、Deployment,
~~~ 也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。