常见 Ingress 对比

本次来对比一下k8s集群中经常使用到的一些 ingress 组件,ingress 它充当了集群中 HTTP 和 HTTPS 流量的入口点。Ingress 可以将流量路由到 Kubernetes 集群内的不同 Service 上,从而实现负载均衡和流量控制的功能。

Ingress 的工作原理是通过将 HTTP 和 HTTPS 请求映射到 Service 上来实现的。在 Kubernetes 中,Service 是一种用于将流量路由到 Pod 的资源对象。当 Ingress 接收到来自外部的 HTTP 或 HTTPS 请求时,它会根据请求中的主机名和路径信息,在 Ingress 规则中进行匹配,并将请求路由到相应的 Service 上。

要使用 Ingress,需要先安装 Ingress 控制器。Kubernetes 并没有提供默认的 Ingress 控制器,但有许多第三方的 Ingress 控制器可供选择:

其中,我们会经常想要暴露一些服务到集群外部提供访问,不仅仅是HTTP的7层协议,也有一些基于4层协议,例如Mysql,Redis,Mongdb等服务。

但 Kubernetes 的 Ingress 规范本身只支持 HTTP 和 HTTPS 协议,因此默认的 Ingress 控制器也只支持这两种协议。但是,一些第三方的 Ingress 控制器可以通过扩展来支持 TCP 和 UDP 协议的暴露。

  1. Traefik:Traefik 支持 TCP 协议的暴露,可以通过在 Ingress 规则中指定 traefik.tcp.routerstraefik.tcp.services 来配置 TCP 服务和路由。
  2. Istio:Istio 是一个服务网格框架,它可以通过其 Ingress Gateway 组件支持 TCP 协议的暴露。可以通过在 Ingress Gateway 中定义 VirtualService 来配置 TCP 服务和路由。

文章目录

随心笔记

技术无止境 创新不停驻