一文搞懂 Traefik Proxy 2.10 新版本特性

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: Hello folks,我是 Luga,今天我们来分享一下关于 Traefik 最新版本 - v2.10 相关特性。

    Hello folks,我是 Luga,今天我们来分享一下关于 Traefik 最新版本 - v2.10 相关特性。

    其实,从整个版本的规划角度来看,Traefik Proxy 2.10 作为一个过渡版本,但同样丰富了不少内容:比如,提高了我们使用 Traefik Proxy 服务网格的能力,增强了 Prometheus 指标以及并简化了我们的 Nomad 配置等,具体可参考如下解析。

01

新 Prometheus 指标的引入


    为了增强使用 Prometheus 与 Traefik Proxy 时的用户体验,我们现在可以根据一个或多个标头值的值拆分总请求指标的观察结果。此选项允许我们根据标头信息收集有关客户的更多详细信息。

    其实,标头本质上是灵活的,因此我们可以想出许多使用此功能的方式,包括创建自定义标头来披露应用程序版本。

    Traefik 将允许我们为“requests_total”指标和包含分配给每个标签的值的请求标头定义额外的标签,具体如下所示:


metrics:
prometheus:
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
headerlabels:
useragent: "User-Agent"

    需要注意的是:默认情况下未启用此功能,因此默认情况下不会影响性能。当我们启用该功能时,如果请求中不存在标头,它将以空值自动添加。标签必须是普罗米修斯的有效标签名称。


02

原生 Kubernetes 服务负载均衡改进


    截至目前,Traefik 只将传入流量转发到 Pod。这使得很难解决需要使用 Traefik进行本机 Kubernetes 负载平衡的特定用例,因为它需要使用变通方法,例如创建外部服务。这些变通方法不能令人满意,这个缺失的功能是一个阻止者,特别是对于服务网格用户采用 Traefik。

    现在,用户有一个新选项供提供商 Kubernetes Ingress 和 Kubernetes IngressRoute,以决定任何给定负载平衡器的子项是否直接在 Pod IP 中,或者 Kubernetes 服务是否被指定为单个子项。在这种情况下,Kubernetes 服务本身通过入口控制器在上游配置中使用的所有端点的列表来平衡对 Pod 的负载。

    这对使用第三方服务网格(如Cilium)的用户尤为重要。另一个好处是,这种配置通过消除流量被重定向到不存在的客户端或 Pod 的任何机会,加强了 Traefik 对零停机部署的原生支持。

    其工作原理较为简单,我们只需将 “nativeLB” 选项添加到服务中即可,具体如下所示:


apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: whoami
namespace: traefik
spec:
entryPoints:
- web
routes:
- kind: Rule
match: PathPrefix(`/who`)
services:
- kind: Service
name: whoami
namespace: app
port: 80
nativeLB: true # Enable the option

    需要注意的是:

    在已删除 Pod 的特定情况下,当在 Traefik 更新其路由配置之前收到请求时,我们可能会生成 502 坏网关响应,因为 Traefik 配置不反映实际的基础设施。使用 “maxIdleConnectionPerHost” 选项通过与后端服务(Pod)创建新连接来缓解 502 错误,避免连接重用到突然下降的 Pod。


03

Nomad 多个命名空间支持


    Nomad 允许我们在任何给定的集群中使用多个命名空间。然而,我们的原始集成允许我们只使用单个命名空间,并要求我们在集群中为每个命名空间定义 Traefik Proxy 实例。此版本带来了使用 Traefik 的单个实例覆盖给定集群中所有命名空间的能力。

    具体如下所示:


providers:
nomad:
namespaces:
- "ns1"
- "ns2"

    以上为 Traefik 最新版本相关特性,更多关于 Traefik 的技术文章,将在后续文章中讲述,欢迎关注,谢谢!

 Adiós !

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
人工智能 自然语言处理 搜索推荐
gemini国内能用吗?请收下这份gemini使用攻略!
在当今技术迅猛发展的时代,人工智能(AI)语言模型已经成为一股变革性的力量,推动着从自然语言处理到对话生成等广泛应用领域的创新。在众多杰出的AI语言模型中,Gemini以其卓越的性能和广泛的用途脱颖而出,备受推崇。作为谷歌旗下的多模态AI巨头,Gemini融合了最先进的语言处理技术,为用户提供了无与伦比的语言理解和生成能力。
|
12月前
|
存储 缓存 数据可视化
链路跟踪-SkyWalking系列(二)
链路跟踪-SkyWalking系列(二)
|
11月前
|
负载均衡 Java 网络架构
Spring Cloud原理详解
介绍了Spring Cloud的原理和核心组件,包括服务注册与发现、配置管理、负载均衡、断路器、智能路由、分布式消息传递、分布式追踪和服务熔断等,旨在帮助开发人员快速构建和管理微服务架构中的分布式系统。
411 0
|
Java 数据库连接 数据库
sqlLite 如何使用数据库连接池
这篇文章介绍了如何在SQLite数据库操作中使用HikariCP连接池以减少频繁建立和释放数据库连接的资源消耗,包括在Maven项目中添加依赖、配置HikariDataSource对象以及实现数据库连接池的具体代码示例。
|
Ubuntu KVM 虚拟化
基于ARM64的Qemu/KVM学习环境搭建
基于ARM64的Qemu/KVM学习环境搭建
|
存储 数据采集 缓存
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
1391 0
|
负载均衡 Dubbo Java
最简最快了解RPC核心流程
本文主要以最简易最快速的方式介绍RPC调用核心流程,文中以Dubbo为例。同时,会写一个简易的RPC调用代码,方便理解和记忆核心组件和核心流程。
最简最快了解RPC核心流程
|
XML 数据采集 前端开发
深入解析网页结构解析模块BeautifulSoup
深入解析网页结构解析模块BeautifulSoup
358 0