代码编织梦想

什么是Traefik

官方文档

https://doc.traefik.io/traefik/

简介

Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。

流量示意图

在这里插入图片描述

在这里插入图片描述

核心概念

当请求Traefik时,请求首先到entrypoints,然后分析传入的请求,查看他们是否与定义的Routers匹配。如果匹配,则会通过一系列middlewares处理,再到traefikServices上做流量转发,最后请求到kubernetes的services上
在这里插入图片描述

  • Providers用来自动发现平台上的服务,可以是编排工具、容器引擎云提供商或者键值存储。Traefik通过查询Providers的API来查询路由的相关信息,一旦检测到变化,就会动态的更新路由。
  • Entrypoints监听传入的流量,是网络的入口点,定义了接受请求的端口(HTTP或者TCP)
  • Routers分析请求(host,path,headers,SSL等),负责将传入的请求连接到可以处理这些请求的服务上去。
  • Middlewares中间件,用来修改请求或者根据请求来做出判断,中间件被附件到路由上,是一种在请求发送到服务之前调整请求的一种方法。
  • Service将请求转发给应用,负责配置如何最终将处理传入请求的实际服务,Traefik的Service介于Middlewares与KubernetesService之间,可以实现加权负载、流量复制等功能。

traefik组件与nginx类比

组件名称功能nginx相同概念
Providers监听路由信息变化,更新路由修改nginx配置,reload服务。
Entrypoints网络入口,监听传入的流量配置文件listen指定监听端口
Routers分析传入的请求,匹配规则配置文件server_name+location
Middlewares中间件,修改请求或响应location配置段中添加的缓存、压缩、请求头等配置
Service请求转发http配置段中的upstream

Nginx-Ingress和traefik区别

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 处理请求。

在这里插入图片描述

与kubernetes交互

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

traefik优点

  • 不需要安装其他依赖,使用 GO 语言编译可执行文件
  • 支持多种后台,如 Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS 等等
  • 支持 REST API
  • 配置文件热重载,可自动监听配置改动、发现新服务,并自动更新无需人工重启
  • 支持熔断、限流功能
  • 支持轮训、负载均衡
  • 提供简洁的 UI 界面
  • 支持 Websocket, HTTP/2, GRPC
  • 自动更新 HTTPS 证书
  • 支持高可用集群模式

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,插件多,但是扩展性能查差性能略逊于NGINX,但强于HAProxy

查看更多

崔亮的博客-专注devops自动化运维,传播优秀it运维技术文章。更多原创运维开发相关文章,欢迎访问https://www.cuiliangblog.cn

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33816243/article/details/127117230

进阶之路:prometheus —— 技巧篇_涅米涅米的博客-爱代码爱编程_prometheus.xml

前言 入门篇:从零开始:Prometheus 理解篇:进阶之路:Prometheus —— 理解篇 本文记录了一些我在使用Prometheus的过程中的技巧,以后还会随着使用的深入不定期更新,需要的小伙伴可以订阅收藏,希望可以让正在摸索的你们少走一些弯路。 对于刚开始使用Prometheus的用户可以从入门篇获取到一些基本的概念。   技巧

kubernetes 从入门到实践_ژclare·yu的博客-爱代码爱编程

第一章 kubernetes 功能介绍 kubernetes 主要基本概念和术语 master Kubernets API server,提供 Kubernets Controlle Manager (kube-controller-manager),kubernets 里面所有资源对象的自动化控制中心,可以理解为资源对象

docker技术入门与实战(第2版)docker技术入门与实战, 很适合初学者学习_菜菜鸟飞不动的博客-爱代码爱编程

image 下载地址...... 好书推荐、视频分享,公众号读书ReadBook与您一起进步,回复关键字 41219直接获取下载链接 内容简介 · · · · · · 本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,

Service Mesh · Istio · 以实践入门-爱代码爱编程

Photo @ Jez Timms 文  |  三辰 前言 本文是笔者在学习官方文档、相关博客文章和实践过程中,整理了一些知识概念和自己的思考,主要在探索 lstio 的实际应用场景, Sidecar 原理, Service Mesh 为什么出现、要解决什么问题等,帮助我们思考微服务技术架构的升级和落地的可行性。 本文不是 Isti

Kubernetes Ingress简单入门-爱代码爱编程

本文转载自Rancher Labs 不知道你是否注意到一个奇怪的现象,尽管Kubernetes Ingress API仍然处于bata状态,但是已经有许多公司使用它来暴露Kubernetes服务。从事相关项目的工程师表示,Kubernetes Ingress API越来越有可能摘下其beta标签。实际上,Kubernetes Ingress API处于b

送给初学者的Kubernetes Ingress入门知识-爱代码爱编程

导读:Ingress是一个规则,可以绘制出在集群内部的服务如何弥合鸿沟,暴露到客户可以使用它的外部世界。本文中,作者将帮助你了解Ingress模式背后的驱动力。 不知道你是否注意到一个奇怪的现象,尽管Kubernetes Ingress API仍然处于bata状态,但是已经有许多公司使用它来暴露Kubernetes服务。从事相关项目的工程师表示

Traefik 2.3正式发布-爱代码爱编程

今天,我们自豪地宣布Traefik已经正式迎来最新版本!Traefik 2.3引入了一系列最新功能,包括Traefik插件系统、与Traefik Pilot的集成、对Amazon ECS的支持以及诞生自Kubernetes 1.18版本的Kubernetes IngressClass API资源的支持等。下面,我们将深入剖析这些功能对于实际使用者

consul命令行查看服务_服务发现 Consul 快速入门-爱代码爱编程

为了让网关更好地了解内部服务的情况,我们需要服务发现组件,如:Consul。 Consul 的安装与运行 选择下载后,解压,确定里面的 exe 文件名为 consul.exe 如果不是,请修改成 consul.exe。 然后将 consul.exe 剪切到 D:cmd 中,至于为什么请,请看 打开 cmd 输入命令 consul vers

K8S快速入门之 rancher部署电商网站-爱代码爱编程

文章目录 CoreDns简介安装kubectl部署nfs共享存储K8S的PV和PVC持久化存储部署php服务部署nginx部署mysqlingress-对外发布服务 需要相关资料文件请留言 CoreDns简介 K8S集群内部的服务发现 早期是通过环境变量和查询 apiserver 来解决服务之间互相访问的。同一命名空间下所有 service

如何使用 Traefik 反向代理将流量路由到 Docker 容器-爱代码爱编程

Traefik 是领先的反向代理和负载均衡器,适用于云原生操作和容器化工作负载。它充当将您的服务发布到互联网的边缘路由器。 Traefik 通过匹配请求属性(例如域、URL 和端口)将请求路由到您的容器。该代理包含自动服务发现,因此您可以实时添加新容器,而无需重新启动 Traefik 服务。 在本指南中,我们将整理一个简单的 Traefik v2 部

16个核心概念带你入门 Kubernetes-爱代码爱编程

Kubernetes是Google开源的容器集群管理系统,是Google多年⼤规模容器管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署、维护和滚动升级负载均衡和服务发现跨机器和跨地区的集群调度自动伸缩无状态服务和有状态服务广泛的Volume支持插件机制保证扩展性Kubernetes发展非常迅速,已经成为容器编排领域的领导者,接下来

入门traefik系列——traefik2.8部署与配置_崔亮的博客的博客-爱代码爱编程

helm部署 参考文档 官方文档:https://doc.traefik.io/traefik/getting-started/install-traefik/ gtihub地址:https://github.com/t

入门traefik系列——路由配置与使用_崔亮的博客的博客-爱代码爱编程

环境准备 部署myapp1实例 apiVersion: apps/v1 kind: Deployment metadata: name: myapp1 spec: selector: matchLabel

docker不香吗?为什么还需要k8s?_k8s和docker哪个好用-爱代码爱编程

🌟 前言 大家好,我是Edison😎 今天是我们「云原生」系列的第二篇:「走进 k8s 的世界」; Let’s get it! 文章目录 🌟 前言1. 先导知识🍑 容器🍅 容器的特性 🍑 集

001_kubernetes入门-爱代码爱编程

来源:尚硅谷K8S视频:https://www.bilibili.com/video/BV1GT4y1A756 中文官网:https://kubernetes.io/zh 中文社区:https://www.kubern