在创建Ingress资源之前,k8s群集必须先运行Ingress Controller。

与作为kube-controller-manager二进制文件的一部分运行的其他类型的控制器(详见前面关于控制器的章节)不同,Ingress控制器不会自动与集群一起启动。 Ingress Controller有多种类型,在使用时请选择最适合你的Ingress Controller。GCE和nginx controller是kubernetes官方维护的Ingress Controller。

各类Ingress Controller

  • Ambassador API Gateway是一个基于Envoy的Ingress Controller,具有Datawire的社区或商业支持。
  • AppsCode Inc.为最广泛使用的基于HAProxy的Ingress ControllerVoyager提供支持和维护。
  • Contour是由Heptio提供和支持的基于Envoy的Ingress Controller。
  • Citrix为其硬件(MPX),虚拟化(VPX)和免费容器化(CPX)ADC提供Ingress Controller,用于裸机和云部署。
  • F5 Networks为Kubernetes的F5 BIG-IP控制器提供支持和维护。
  • Gloo是一个基于Envoy的开源Ingress Controller,它提供API网关功能,并提供solo.io的企业支持。
  • HAProxy Technologies为Kubernetes的HAProxy Ingress控制器提供支持和维护。
  • 基于Istio的Ingress Controller控制ingress流量。
  • Kong为Kungsnetes的Kong Ingress Controller提供社区或商业支持和维护。
  • NGINX,Inc。为Kubernetes的NGINX Ingress控制器提供支持和维护。
  • 用于服务组合的Skipper HTTP路由器和反向代理,包括Kubernetes Ingress等用例,用作构建自定义代理的库
  • Traefik是一个功能齐全的Ingress Controller(Let’s Encrypt,secrets,http2,websocket),它还带有Containous的商业支持。

使用多个Ingress Controllers

你可以在k8s群集中部署任意数量的Ingress Controller。 创建Ingress时,应使用适当的ingress.class描述每个Ingress,以指示在群集中存在多个Ingress Controller时应使用哪个Ingress Controller。(关于多Ingress Controllers的使用,后面我会专门写一个章节来做实际应用介绍)

如果您没有定义ingress.class类,则云提供商可能会使用默认的Ingress Controller。

理想情况下,所有Ingress Controller都应满足此规范,但各种Ingress Controller的运行方式略有不同。