服务网格已经成为现代云原生应用架构中至关重要的一部分,帮助团队在大规模分布式系统中管理微服务通信、提高安全性并优化性能。然而,随着技术的不断演进,关于服务网格架构的最佳实践出现了激烈的争论,尤其是关于 sidecar 与 sidecarless 模式的选择问题。这场争论的核心在于如何在性能、资源利用、安全性和操作复杂性之间取得最佳平衡。近年来,Cilium 引入了无 sidecar 架构的 eBPF 技术,而 Istio 也推出了 Ambient 模式,结合了传统 sidecar 与无 sidecar 的优点。与此同时,Linkerd 则坚守 sidecar 架构,并对新兴的无 sidecar 方法持保守态度。这篇文章将深入探讨这些服务网格架构的主要观点和争议,并分析每种方法的优势与挑战。
关于服务网格的 sidecar 与无 sidecar 的争论是随着 Cilium 的推出和各大服务网格技术的演变而逐渐加剧的,尤其是在 2021 年之后:
Cilium Service Mesh 的推出(2021 年 12 月) :Cilium 通过 eBPF 技术引入了无 sidecar 的服务网格架构,开始引发对传统 sidecar 模式的讨论。这一概念的提出标志着无 sidecar 架构的兴起。
Linkerd 与 Istio 的反应(2021 年 12 月至 2022 年初) :Linkerd 的创始人 William Morgan 及其团队对 Cilium 的无 sidecar 方法表示担忧,认为这种方法可能会带来安全和性能上的问题。这一讨论逐渐演变为对 sidecar 与无 sidecar 架构的更广泛争辩。
Istio 的 Ambient 概念(2022 年 5 月) :Istio 提出了 Ambient Mesh,尝试结合 sidecar 和主机级代理的优势,这进一步加剧了各方对服务网格架构的讨论。此时,业界对不同服务网格架构的看法开始分化。
专家观点的发表(2021 年 12 月至 2023 年) :多位行业专家如 Thomas Graf 和 William Morgan 等在不同场合发表了对 sidecar 与无 sidecar 架构的看法,形成了更为系统的争论。这些观点在多个会议和文章中被广泛讨论,推动了对服务网格架构的深入理解。
下表摘录了各服务网格提供商及用户的公开观点。
人物 | 职位/公司 | 观点 |
---|---|---|
Andrey Rybka | Bloomberg | 倾向于选择成熟度更高的 Istio,特别是在有 Google 等大公司支持的情况下。 |
Ara Pulido | Datadog 开发者关系专家 | 认为 eBPF 工具(如 Cilium)是 Kubernetes 网络扩展问题的解决方案,使用 Cilium 可以完全替代 kube-proxy,实现更细粒度的容器安全特性;移除 kube-proxy 后,操作简化,性能提升。 |
Dale Ragan | SAP Concur Technologies 首席软件设计工程师 | 认为 eBPF 在安全方面提供了更好的优势,可同时应用于整个集群和各个服务;正在使用 Cilium 替代 Flannel 作为其生产环境中的容器网络接口(CNI)插件,并测试 Isovalent 的专有 SecOps 插件。 |
Dan Wendlandt | Isovalent CEO | 认为 eBPF 和服务网格是互补的技术,eBPF 可作为服务网格的基础,为服务网格代理(如 Envoy)提供高效的数据进出服务。 |
David Ortiz | Constant Contact 首席软件工程师 | 对 Istio 的 Ambient Mesh 非常感兴趣,认为其显著简化了 Istio 的操作流程,尤其是在升级方面,计划尽快采用这一技术。 |
Filip Nikolic | PostFinance | 认为 eBPF 基础的无 sidecar 服务网格具有更高的网络性能和效率,并且安全实践也在不断进化。 |
Greg Otto | Comcast 云服务执行董事 | 对 Istio Ambient Mesh 感兴趣,计划在其成熟后进行评估;希望能够分别扩展和服务第 7 层(L7)和第 4 层(L4)功能,认为减少不必要的 L7 过滤可以减少安全暴露面和漏洞风险。 |
John Mitchell | 独立数字化转型顾问 | 认为 eBPF 正经历一个炒作周期,但它确实有潜力为 Kubernetes 提供高级网络安全特性,而无需改变应用程序代码。 |
Kasper Nissen | Lunar 的首席平台架构师 | 支持 sidecar 架构,认为它简单易用,并与其他容器技术相同;在全面部署服务网格后,资源消耗增加不多但功能增多;指出 sidecar 同步问题源于 Kubernetes 网络层的问题,建议在 Kubernetes 层面进行修复。 |
Louis Ryan | Solo.io CTO | 强调 Istio 1.23 版引入的 Ambient Mesh 的优势,包括减少 sidecar 的使用,简化架构,提高性能,降低复杂性,并增强了灵活性与可扩展性。他认为,Ambient Mesh 能够帮助团队更轻松地管理微服务架构。 |
Thomas Graf | Isovalent CTO | 主张通过 eBPF 和 Cilium 提供无边车的服务网格,优化 mTLS 认证,消除 sidecar 的使用,从而提高性能和安全性。认为分离认证握手和数据传输的模式能够实现更高效、更灵活的服务间认证,同时减少管理复杂性,并提供对多种网络协议的支持。 |
William Morgan | Linkerd 创始人兼 Buoyant CEO | 强烈批评无 sidecar 的 eBPF 方法,认为 sidecar 提供了更好的安全隔离和性能预测性,指出 sidecarless 架构可能重蹈 Linkerd 1 的覆辙。他认为,eBPF 和 sidecar 不是对立的,eBPF 可以用于网络优化,但不应替代 sidecar。主张继续使用更轻量的 sidecar 代理。 |
Zachary Butcher | Tetrate 创始工程师 | 对 Ambient Mesh 持审慎乐观态度,认为它有助于降低服务网格的采用难度,但当前性能表现较差、功能有限,距离生产就绪还有很长的路要走。他建议用户暂时不要在生产环境中使用 Ambient Mesh,直到其成熟度提高。 |
近年来,我有幸见证并参与了许多关于服务网格架构选择的讨论和实践。我认为服务网格选择不应仅仅基于技术特性的比较,更应考虑到团队的具体需求、现有技术栈的兼容性以及未来的扩展性。
在 sidecar 与 sidecarless 的选择问题上,我的看法是两者各有千秋。Sidecar 模型虽然在某些情况下可能会带来资源占用和管理复杂性的增加,但它提供了更细粒度的流量控制和安全策略实施,这对于需要高度精细化管理的企业环境是非常宝贵的。与此同时,sidecarless 模型,尤其是通过 eBPF 技术实现的,为服务网格带来了前所未有的性能优化和资源利用率提升,它对于构建高效率的大规模服务网格同样具有重要价值。
因此,我的建议是,企业在选择服务网格架构时,应该从自身的业务需求出发,综合考虑安全性、性能、成本以及团队的运维能力,选择最适合自己的服务网格解决方案。
总结下目前关于这三个流行的服务网格项目的主流看法:
不同的观点反映了各自对服务网格架构设计的偏好与关注点,不同企业应根据自身需求和技术背景选择合适的服务网格方案。
最后更新于 2024/10/08