Linkerd 2.17:出口流量、速率限制和联邦服务

文摘   2024-12-10 10:33   中国香港  

作者: William Morgan

Photo by Aliaksei Semirski.

今天,我们很高兴地宣布 Linkerd 2.17 的发布。这个新版本引入了几个重大新功能:出口流量可视化和控制;速率限制;以及联邦服务,这是一个强大的多集群原语,可以将多个集群中的服务组合成一个逻辑服务。此版本还更新了 Linkerd,以支持 OpenTelemetry 进行分布式追踪。

Linkerd 2.17 是我们在去年十月宣布 Linkerd 可持续性后的首次重大发布。此次发布是多年来首次同时引入多个重要功能。尽管如此,我们仍然努力保持 Linkerd 的核心设计原则——简单性。例如,这些新功能旨在尽可能避免配置;如果无法避免,也会尽量保持配置最小、一致和原则性。毕竟,Linkerd 的简单性,即拒绝“服务网格复杂且必须复杂”的观念,是其受欢迎的关键,我们有责任在此次及每次发布中保持这一声誉。

继续阅读了解更多!

出口流量可视化和控制

Linkerd 2.17 引入了对离开 Kubernetes 集群的出口流量的可视化和控制。Kubernetes 本身没有理解出口流量的机制,仅提供了有限的限制手段,主要是 IP 范围和端口。通过 2.17 版本,Linkerd 现在提供了全面的 L7(即应用层)可视化和控制:你可以查看离开集群的所有流量的源、目的地和流量级别,包括主机名,并通过配置获取完整的 HTTP 路径或 gRPC 方法。你还可以部署出口安全策略,以相同的细粒度允许或禁止流量,从而通过 DNS 域而非 IP 范围和端口进行白名单或黑名单管理。

Linkerd 的出口功能不需要应用程序进行更改,并且只需最小配置即可开始使用。对于更高级的用法,出口配置基于 Gateway API 资源,允许你使用与 Linkerd 其他几乎所有方面相同的可扩展和 Kubernetes 原生配置原语来配置出口可视化和策略,包括动态流量路由、零信任授权策略等。

例如,启用整个集群的基本出口指标只需添加以下配置:

apiVersion: policy.linkerd.io/v1alpha1
kind: EgressNetwork
metadata:
  namespace: linkerd-egress
  name: all-egress-traffic
spec:
  trafficPolicy: Allow

查看出口文档[1]以获取更多信息。

速率限制

速率限制是一种可靠性机制,可以保护服务免受过载。与 Linkerd 的断路器功能[2]不同,后者是面向客户端的行为,旨在保护客户端免受故障服务的影响,速率限制则是服务器端的行为:由接收流量的服务强制执行,旨在保护其免受不当客户端的影响。

与出口功能类似,Linkerd 的速率限制功能旨在要求最小配置,同时仍具灵活性,适用于多种场景。例如,可以通过以下配置启用名为 “web-http” 的服务器的每秒 100 个请求的基本速率限制:

apiVersion: policy.linkerd.io/v1alpha1
kind: HTTPLocalRateLimitPolicy
metadata:
  namespace: emojivoto
  name: web-rlpolicy
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: web-http
  total:
    requestsPerSecond: 100

Linkerd 的速率限制功能还提供每个客户端的速率限制策略,确保速率限制在多个客户端之间“公平”分配。结合重试、超时、断路器、延迟感知负载均衡和动态流量路由,速率限制扩展了 Linkerd 已有的集群内分布式系统可靠性功能。

查看速率限制文档[3]以获取更多信息。

联邦服务

在 Linkerd 2.17 中,我们推出了一个令人兴奋的新多集群功能:联邦服务。联邦服务是多个集群中相同服务副本的逻辑联合。与联邦服务通信的客户端将自动在所有集群中的所有端点之间进行负载均衡,充分利用 Linkerd 的最佳延迟感知负载均衡能力。

通过联邦服务,应用程序代码与集群部署决策解耦——服务 Foo 与服务 Bar 只需调用 “Bar”,无需指定其所在集群。故障处理也变得透明和自动。Linkerd 将透明地处理多种情况,包括:

  • 整个集群宕机
  • 集群正常,但该集群上的服务宕机或出现故障(包括 L7 故障,例如返回 5xx 响应码)
  • 集群慢,或服务慢

在所有这些情况下,Linkerd 将自动在所有集群的所有服务端点之间进行负载均衡,使用其默认的延迟感知(延迟 EWMA)负载均衡将单个请求发送到最佳端点。

联邦服务旨在捕捉我们在多集群 Kubernetes 采用中看到的最新趋势:计划的大规模多集群 Kubernetes。Linkerd 的初始多集群功能是在 Linkerd 2.8 发布时设计的,适用于当时常见的临时点对点连接。然而,现代 Kubernetes 平台在多集群使用上往往更加有意,集群数量有时达到数百甚至数千个。联邦服务与如 Linkerd 2.14 中引入的平坦网络/容器到容器多集群功能一起,成为这一新类别 Kubernetes 采用的工具箱。

查看联邦服务文档[4]以获取更多信息。

Kubecon 伦敦的 Linkerd Day

我们很高兴地报告,CNCF 将于明年四月在 Kubecon 伦敦举办 Linkerd Day!许多 Linkerd 的维护者将出席,我们期待精彩的 Linkerd 演讲以及众多 Linkerd 用户。欢迎在伦敦与我们见面!

如何获得 Linkerd 2.17

edge-24.11.8[5] 版本是 Linkerd 2.17 的对应 edge 版本。请查看 Linkerd 发布页面[6]以了解更多信息。

Linkerd 的创建者 Buoyant 还为 Linkerd 2.17.0 发布了 Buoyant Enterprise,并发布了 Linkerd 2.17 的更新日志,提供了额外的指导和内容。

Linkerd 是为每个人服务的

Linkerd 是 CNCF 的毕业项目,致力于开放治理。如果你有功能请求、问题或意见,我们欢迎你加入我们快速增长的社区!Linkerd 托管在 GitHub 上,我们在 Slack、Twitter 和邮件列表上拥有活跃的社区。快来加入我们吧!

参考资料
[1]

出口文档: https://linkerd.io/2.17/features/egress/

[2]

Linkerd 的断路器功能: https://linkerd.io/2/reference/circuit-breaking/

[3]

速率限制文档: https://linkerd.io/2.17/features/rate-limiting/

[4]

联邦服务文档: https://linkerd.io/2.17/features/multicluster/#federated-services

[5]

edge-24.11.8: https://github.com/linkerd/linkerd2/releases/tag/edge-24.11.8

[6]

Linkerd 发布页面: https://linkerd.io/releases/


点击【阅读原文】阅读网站原文


CNCF概况(幻灯片)

扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请关注CNCF微信公众号。

CNCF
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
 最新文章