2月5-7日QCon全球软件开发大会携手100+位大咖讲师落定北京,点击查看完整日程>> 了解详情
写点什么

服务网格 2022 :Gateway API 是最大惊喜,eBPF 不会改变游戏规则

  • 2023-01-11
    北京
  • 本文字数:2893 字

    阅读完需:约 9 分钟

服务网格 2022 :Gateway API是最大惊喜,eBPF不会改变游戏规则

本文最初发布于 Linkerd 官方博客。

 

今年对于 Linkerd 是个好年景。尽管软件行业的大部分都在经济衰退中苦苦挣扎,但 Linkerd 的应用却一直在增长。事实上,日志指标显示,运行 Linkerd 的稳定 Kubernetes 集群数量在 2022 年翻了一番。Linkerd 可能是唯一一个从 CNCF 毕业的服务网格,但它肯定不会因为毕业而放缓发展的脚步!

 

这种增长从何而来?为什么是现在?基于 2022 年与新采用者的交流,我们认为情况是这样的:由于极端的炒作,再加上炒作最厉害的项目相对并不成熟且比较复杂,服务网格在早期的名声并不好。早期的采用者决定等到一切尘埃落定时再说。现在,他们回来了,他们看到了第一次的事儿,正渴望着有一种不会让他们背负众所周知的操作复杂性的选择。

 

自然地,他们转向了 Linkerd,因为简单,它成了服务网格领域一个独特的存在。Linkerd 的主要优势在于它的数据平面。Linkerd 是唯一一个避开了 Envoy 的服务网格,它把重点放在了专用的边车(sidecar)“微代理”上。在 2018 年,这是一个有争议的决定;在 2022 年,事实证明这种方法可以带来巨大的回报。当其他项目花费时间为其数据平面的复杂性和资源消耗构建变通方案时,Linkerd 却专注于提供强大的功能,如多集群故障转移基于Gateway API的完整L7授权策略

 

但 2022 年,也并非完全像我们想象的那样。这一年里,即使是我们这些“头发花白”的老兵也得到了一些教训,同时也得到了一些真正的惊喜。以下是 2022 年让我们感到惊喜的几件事。

惊喜 1:Kubernetes 的 Gateway API 非常适合服务网格


到目前为止,Gateway API 是我们 2022 年最大的惊喜,实际上,它还让我们中途更改了计划。年中,当时我们正在最终确定 Linkerd 的 L7 授权功,Gateway API 在 Kubernetes 进入了 Beta 测试。当我们更深入地研究这个项目时,我们意识到了几件事:


  1. 它已经解决了我们正在 Linkerd 2.12 中处理的一个主要问题:如何以一种全面、可组合、kubernetes 式的方式描述一类 HTTP 流量(例如,“所有以/foo/开头的东西”或“所有有这个报文头的东西”)。

  2. 虽然已经计划在 Linkerd 中添加 CRD,但我们并不情愿,而 Gateway API 资源已经是 Kubernetes 的一部分。

  3. 它的设计很好。真的很好。虽然它最初是为处理 Ingress 配置而设计的,但核心原语足够灵活,而且可组合,因此,它实际上也适用于服务网格用例。

 

因此,我们放弃了最初的计划,转而采用Gateway API作为Linkerd授权策略的核心配置机制。尽管这会使 2.12 版本的发布推迟几个月,但我们知道,这是在为 Linkerd 的采用者做正确的事。

 

这个决定已经有了回报。在即将发布的 2.13 版本中,我们将利用 Gateway API 资源类型来实现诸如基于头的路由和可配置的断路等功能。Linkerd 还参与了GAMMA计划,这是 Gateway API 中的一个项目,目的是更好地追踪服务网格用例。

 

延伸阅读:Linkerd和Gateway API

 

惊喜 2:eBPF 是一项优化,而不是游戏规则改变者


当围绕服务网格 eBPF 的讨论在 2022 年年初达到顶峰时,我们决定进行更深入的研究。我们发现,那并没有我们希望的那么引人注目。虽然 eBPF 可以简化一些基本的服务网格任务,如转发原始 TCP 连接,但如果没有用户空间组件,它根本就无法处理 HTTP/2、mTLS 或其他 L7 任务,这意味着它无法带来根本性的改变——即使使用 eBPF,服务网格在集群上某个地方仍然会需要 L7 代理。

 

尤其是被大肆吹捧的“无边车 eBPF 服务网格”模型,感觉在可操作性和安全性方面是重大的倒退。将那种逻辑移到针对每个主机的 Envoy 代理中,将网络问题和节点上所有东西的 TLS 密钥资料混合在一起,这彻底违背了我们将事物容器化的初衷。eBPF 不是每个主机都需要的方式,营销资料中却将两者混为一谈,我们对此感到失望。

 

未来,我们确实计划研究将 eBPF 作为一种简化 Linkerd L4 特性集的方法,不过,将关键代码转移到内核中的前景还是让我们感到担忧,因为在内核中调试、观察和推理都非常困难。(更不用说eBPF引入的新的令人兴奋的攻击向量了。)

 

总的来说,我们对 eBPF 的调查并没有让我们真正相信 eBPF。但是与以往任何时候相比,我们都更相信边车仍然是服务网格的最佳模型,无论是出于操作还是安全考虑。

 

延伸阅读:eBPF、边车和服务网格的未来

 

惊喜 3:Ambient Mesh


很快,Istio 的无边车“Ambient Mesh”模式加入了无边车 eBPF 服务网格,该模式组合使用每主机和每服务代理。深入研究这种方法是我们的又一个学习经历。我们很高兴地看到,它的安全性更好,至少在这里是这样:例如,不同身份的 TLS 密钥资料在单独的进程中维护。

 

然而,取消边车的代价非常大:需要大量的新机器,其结果有很大的局限性,而且对性能有重大的影响。

 

总的来说,我们得出的结论是,它在生命周期管理和资源消耗方面的改进对 Linkerd 的用例并没有助益。我们的感觉是,Ambient Mesh 比其他任何东西都更能解决大规模运行 Envoy 的问题。

 

意料之中的事 1:容器排序仍然是 Kubernetes 的弱点


除了惊喜,2022 年,我们还看到了一些意料之中的情况。与前几年一样,Linkerd 的采用者继续与长期困扰 Kubernetes 的问题——缺少对容器排序的控制——做斗争。这体现在多个方面:


  • 需要访问网络的 Sidecar 容器需要在 linkd-init 容器之后运行;

  • 终止的作业需要有一种方式可以向其代理组件发出终止信号;

  • 重新启动或添加到现有集群的节点需要一种方法来暂停 Linkerd 网络初始化,直到 CNI 层初始化完成;

  • 等等。

 

在特定的情况下,这些问题都是可以解决的。但对于服务网格采用者来说,这类问题仍然是一个麻烦,并且严重地违反了我们的原则,即服务网格应该对应用程序透明。然而,随着臭名昭著的边车KEP走上了这条愚蠢的道路,我们可能还要忍受更长的时间。

 

虽然,关于另一个 KEP 的谣言甚嚣尘上……


就是这样,但经过多次讨论,我认为我们现在对如何做一种每个人都可以接受的形式有了很好的了解:)

——蒂姆·霍金(thockin.yaml)(@thockin)2022年11月11日

 

延伸阅读:在启动时到底发生了什么:Linkerd、初始化容器、CNI等等

 

意料之中的事 2:安全性仍然是采用 Linkerd 的主要动力


与前几年一样,采用 Linkerd 的主要动力仍然是安全性。Linkerd 的零配置Mutual TLS一直是该项目的一个主要吸引力来源,2022 年引入的L7授权策略完善了 Linkerd 的零信任特性集。

 

我们也很高兴地看到,市场显现出了日益成熟的迹象。几年前,“我们需要在传输过程中加密”是采用 mTLS 的主要理由。2022 年,我们听到许多采用者说,“是的,我们需要在传输过程中加密,但也需要使用真实的工作负载标识进行身份验证,以及在每个 Pod 上实现零信任授权”。零信任正变得越来越受欢迎,这已经不是什么秘密了,基于边车的服务网格如果不直接实现零信任原则,就什么都不是。边车模型再得一分!

 

像往常一样,我们也尽量保持项目的整洁,Linkerd出色地完成了年度安全审计

 

2023 年服务网格会带来什么?


2023 年有望成为 Linkerd 公司又一个辉煌的年份。我们已经有了一些令人兴奋不已的计划,从即将发布的 2.13 版本(包括基于头的路由和断路),到其他一些目前还保密的杀手级想法。一如既往,我们将专注于保持 Linkerd 简单、轻便和安全。

 

想参与 CNCF 第一个也是唯一一个毕业的服务网络吗?现在就是加入的好时机。

 

原文链接:

https://linkerd.io/2022/12/28/service-mesh-2022-recap-ebpf-gateway-api/index.html

2023-01-11 15:574865

评论

发布
暂无评论
发现更多内容

Java编辑器

ベ布小禅

4月日更

真假敏捷教练

escray

面试 面经 4月日更

颜色值JavaScript换算(HSV、RGB、十六进制颜色码)

空城机

JavaScript 大前端 颜色值换算

你看起来很美味?独家揭露视频推荐系统AI秘方

脑极体

不确定的海浪中,更需要数字化转型的定海神针

脑极体

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

《中寰卫星导航项目管理部负责人卜钢:智能网联行业的问题与前景》(采访提纲):

谙忆

重读《重构2》- 内联函数

顿晓

重构 4月日更

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

Scrum Patterns:小团队(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

感谢Github帮我斩获了8家大厂Offer

Java架构师迁哥

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

从程序员角度看湖南电信网络全崩,如何防范服务器被攻击以及解决方案

北游学Java

Java 网络安全 网络 服务器

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

升级JDK到1.8笔记

六维

jdk8 4月日更

[TcaplusDB知识库]TcaplusDB的高可用性和数据安全性介绍

TcaplusDB

数据库 nosql 数据 TcaplusDB

一个可递归遍历的Vue树型组件

空城机

JavaScript vue.js 大前端 4月日更

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

树莓派安装pytorch

IT蜗壳-Tango

4月日更

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

JVM-技术专题-MAT解析OOM问题

洛神灬殇

JVM

Spark测试用例生成apache iceberg结果

聚变

大数据 iceberg

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

服务网格 2022 :Gateway API是最大惊喜,eBPF不会改变游戏规则_云原生_William Morgan_InfoQ精选文章