一、Ingress简介
Kubernetes对外暴露服务的方式目前有四种:LoadBlancer 、ClusterIp、NodePort 、Ingress。
1、Ingress是什么?
1、Ingress由两部分组成:Ingress Controller和Ingress服务 2、Ingress Contronler通过与Kubernetes API交互,动态的去感知集群中Ingress规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段 Nginx配置,再写到Nginx-ingress-control的Pod里,这个Ingress Contronler的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入nginx.conf配置文件中,然后reload使用配置生效,以此来达到域名分配置及动态更新的问题。
如下图所示:
2、Ingress作用
Ingress的主要作用是可以利用Nginx,Haproxy,envoy,traefik等负载均衡器来暴露集群内部服务。利用Ingress可以解决内部资源访问外部资源的方式,和四层调度替换为七层调度的问题。解决因为四层iptables/ipvs规则实现调度或加密tsl的方式过于复杂且效率低下的问题,因为四层调度的iptables/ipvs模块无法卸载,所以使用七层负载均衡来替代。
3、常见控制器
1、Kubernetes Ingress作为"官方"控制器,它是由社区基于NGINX Web服务器开发的,并补充了一组用于实现额外功能的Lua插件。 2、NGINX Ingress 这是NGINX开发人员的官方产品,NGINX控制器具有很高的稳定性,持续的向后兼容性,没有任何第三方模块,并且由于消除了Lua代码而保证了较高的速度(与官方控制器相比) 3、Kong Ingress 由Kong Inc开发,并且有两个版本:商业版本和免费版本。Kong Ingress建立在NGINX之上,并增加了扩展其功能的Lua模块。 4、HAProxy Ingress 由HAProxy开发,它提供了“软”配置更新(无流量丢失),基于DNS的服务发现,通过API的动态配置。 5、Traefik 是一个全功能的 ingress 控制器 (Let’s Encrypt,secrets,http2,websocket),并且它也有来自 Containous 的商业支持。 6、Istio 是IBM,Google和Lyft(Envoy的原始作者)的联合项目,它是一个全面的服务网格解决方案。它不仅可以管理所有传入的外部流量(作为Ingress控制器),还可以控制集群内部的所有流量。
一、部署ingress
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
|