博客 Nginx-Ingress和traefik区别

Nginx-Ingress和traefik区别

   数栈君   发表于 2024-06-05 15:39  845  0

Nginx-Ingress和traefik区别

1. Ingress Controller

k8s 是通过一个又一个的 controller 来负责监控、维护集群状态。Ingress Controller 就是监控 Ingress 路由规则的一个变化,然后跟 k8s 的资源操作入口 api-server 进行通信交互。K8s 并没有自带 Ingress Controller,它只是一种标准,具体实现有多种,需要自己单独安装,常用的是 Nginx Ingress Controller 和 Traefik Ingress Controller。
Ingress Controller 收到请求,匹配 Ingress 转发规则,匹配到了就转发到后端 Service,而 Service 可能代表的后端 Pod 有多个,选出一个转发到那个 Pod,最终由那个 Pod 处理请求。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/75d85b7bb0599c4b3dcdd4a87d1562dc..jpeg

2. Nginx-ingress:

由于微服务架构以及 Docker 技术和 kubernetes 编排工具最近几年才开始逐渐流行,所以一开始的反向代理服务器比如 nginx、apache 并未提供其支持,所以才会出现 Ingress Controller 这种东西来做 kubernetes 和前端负载均衡器如 nginx 之间做衔接;即 Ingress Controller 的存在就是为了能跟 kubernetes 交互,然后写入nginx 配置,最后reload。
使用nginx作为前端负载均衡,通过ingress controller不断的和kubernetes api交互,实时获取后端service,pod等的变化,然后动态更新nginx配置,并刷新使配置生效,达到服务发现的目的。

3. Traefik

traefik本身设计的就能够实时跟kubernetes api交互,感知后端service,pod等的变化,自动更新配置并重载。

4. Traefik优点:

  • 速度快

  • 不需要安装其他依赖,使用 GO 语言编译可执行文件

  • 支持最小化官方 Docker 镜像

  • 支持多种后台,如 Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS 等等

  • 支持 REST API

  • 配置文件热重载,不需要重启进程

  • 支持自动熔断功能

  • 支持轮训、负载均衡

  • 提供简洁的 UI 界面

  • 支持 Websocket, HTTP/2, GRPC

  • 自动更新 HTTPS 证书

  • 支持高可用集群模式

5. Nginx和Traefik横向对比


Nginx IngressTraefik ingress
协议http/https、http2、grpc、tcp/udphttp/https、http2、grpc、tcp、tcp+tls
路由匹配host、pathhost、path、headers、query、path prefix、method
命名空间支持-共用或指定命名空间
部署策略-金丝雀部署、蓝绿部署、灰度部署
upstream探测重试、超时、心跳探测重试、超时、心跳探测、熔断
负载均衡算法RR、会话保持、最小连接、最短时间、一致性hashWRR、动态RR、会话保持
优点简单易用,易接入Golang编写,部署容易,支持众多的后端,内置WebUI
缺点没有解决nginx reload,插件多,但是扩展性能查差没啥缺点



《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群