天天看点

Istio vs. Linkerd:2023 年最佳服务网格

作者:科技狠活与软件技术

通过探索每个服务网格软件处理流量、安全性、可观察性、可扩展性及其社区支持水平的能力,了解哪种服务网格软件是最好的。

服务网格简介

服务网格是一个基础设施层,用于从应用程序中抽象出网络和安全性,以实现更好的可管理性和实施。服务网格有助于简化跨云和容器技术的分布式应用程序日益增长的网络复杂性。

服务网格是使用软件代理(sidecar 代理)与应用程序或微服务一起实现的。这些边车用于促进应用程序堆栈之间的服务到服务通信。随着网络使用边车从应用程序逻辑中抽象出来,安全和流量管理将很容易从一个中央位置进行管理。sidecar 队列称为数据平面,而管理 sidecar 的主机称为控制平面。

最近,随着云原生应用程序的兴起,Kubernetes 基础设施和 CI/CD 流程应用程序正在快速部署到生产中。但确保网络的可靠性和安全性仍然是最大的挑战之一。因此,越来越多的公司正在评估和采用服务网格软件。

最新的 DZone Refcard

服务网格的顶级开源软件

以下是 CNCF 领域中列出的一些开源服务网格软件的列表:

  1. Istio
  2. Linkered
  3. Consul
  4. Open service mesh
  5. Network service mesh

但是最流行的两个服务网格软件是 Istio 和 Linkerd。我们将对其进行评估,并帮助您选择在 2023 年对您更有意义的方案。

Istio 和 Linkerd 的快速介绍

Istio

Istio是一个开源服务网格平台,可简化和保护微服务之间的流量。Istio 为流量管理、安全性和可观察性提供专用基础设施,以帮助开发人员大规模处理 Kubernetes 和多个云中的微服务网络。

Linkerd

Linkerd 是一种轻量级开源服务网格软件,用于保护 Kubernetes 应用程序。Buoyant 开发了它。Linkerd 为 Kubernetes 中运行的所有微服务提供安全、流量管理和可见性功能。

Istio 和 Linkerd 如何工作?

Istio 和 Linkerd 提供控制和数据平面来实现服务网格。Istio 提供Envoy 代理作为数据平面的边车,而 Linkerd 使用 Linkerd-2 代理。截至 2023 年,Envoy Proxy 已被 1000 多家公司广泛使用,并由 300 多家公司贡献。

来到控制平面,服务网格软件都有构成控制平面的各种组件。Istio 控制平面(参见图 A)具有 Istiod、Pilot、Galley 和 Citadel 等子组件,而 Linkerd 具有目标服务、身份服务和代理注入器(参见图 B)。每个服务网格的组件都执行类似的活动——将网络策略级联到代理,通过颁发 TLS 证书来管理安全性,以及将具有特定配置的代理注入命名空间中的每个服务。

Istio vs. Linkerd:2023 年最佳服务网格

图 A:Istio 架构

Istio vs. Linkerd:2023 年最佳服务网格

图 B:Linkerd 架构

Istio 与 Linkerd:功能方面的比较

解决方案架构师、云工程师和平台工程师等工程团队通常会研究以找到适合其现代基础设施网络管理的服务网格软件。我们已经考虑了比较 Istio 和 Linkerd 的最高标准,这将帮助软件工程团队选择最好的服务网格软件。用于比较的前 6 大标准是流量管理、安全管理、可观察性、支持技术、性能和可扩展性以及社区贡献。

请阅读 Istio 和 Linkerd 之间的高级功能比较。

表格比较:Istio 与 Linkerd

Istio vs. Linkerd:2023 年最佳服务网格

流量管理:Istio 更好地管理网络

Service Mesh 都提供了流量路由、拆分、重试、断路器等基本的负载均衡功能,但 Istio 在流量管理能力上领先,原因如下:

  1. Istio 支持 VM,而 Linkerd 不支持。如果您计划为具有 Kubernetes 和 VM 工作负载的混合云实施服务网格,那么 Istio 会更有意义。
  2. Istio 确实支持 HTTP/3 协议,也提供延迟注入等高级能力,而 Linkerd 则不支持。Istio 将在开发尖端的弹性云应用程序时派上用场。
  3. 关于前端/边缘代理的支持,Istio 和 Linkerd 都支持第三方入口,如 NGINX、HA Proxy、Ambassador 等。但是 Istio 提供了自己的 Istio 入口网关,并允许配置 Envoy 代理作为网关(阅读 Envoy Gateway ) 这样开发人员和平台团队就不必再维护另一个软件了。
  4. Linkerd 中的出口规则可能很复杂(通过 DNS 和委托表 [DTAB] 实现)。在 Istio 中,您可以使用相同的入口对象(网关和虚拟服务)来配置出口流量。

安全管理:Istio 通过更多集成实现高度安全

Istio 和 Linkerd 以其在 L4 和 L7 层的安全实现而闻名。它们通过 mTLS 和基于 JWT 的身份验证提供更强大的身份,使您能够控制哪些流量可以到达服务网格中的 Pod。

但是从企业实现的角度来说,在与外部安全提供商的集成方面,Istio 做得很好。Istio 为几乎所有使用 OIDC 连接器的身份验证和授权提供程序提供更多集成。

例如,Istio 提供与 Google SSO、OAuth 2.0、SAML 和 Okta 的连接以实现更强大的身份验证,并支持所有外部证书颁发机构 (CA) 管理器,如 AWS CA、Let's Encrypt 等。

可观察性:Istio 和 Linkerd 相提并论

对网络健康状况和应用程序性能的可见性和可观察性对于主动采取行动至关重要。服务网格都提供指标、日志和跟踪,以了解网络和应用程序的性能和行为。Istio 和 Linkerd 为 HTTP 和 gRPC 流量生成延迟、错误、饱和度等指标。(Istio 可以为 HTTP/3 提供流量,所以这里有能力)。但是,这两种工具都不提供用于可视化的 UI;发出的数据可以从 CLI 中看到。因此,平台团队可以使用 Grafana 仪表板或开箱即用的供应商解决方案来访问信息。

Buoyant 为 Linkerd 提供了一个基于 Web 的仪表板,而 IMESH 为 Istio 提供了一个直观的 UI。

可扩展性:Linkerd 领先,但 Istio 也不甘落后

服务网格的性能在很大程度上取决于数据平面的版本。数据平面性能取决于连接数、目标请求、请求大小、可用 CPU 内核、代理过滤器数量等多种因素。由于 Linkerd 是为处理轻量级用例而构建的,仅处理 Kubernetes 负载,因此它消耗更少资源。

直到 2021 年初,重量级 Istio 以其资源密集型数据平面而闻名,这主要是由于使用了多个过滤器。然而,根据2021 年初对 Istio 1.6.8 的性能评估,与之前的版本相比,数据平面有了很好的改进。负载测试是在注入 1,000 个服务的 2,000 个特使代理上进行的,每秒允许 70,000 个请求。

有兴趣的可以查看Istio 负载测试的详细内容。

下面总结 Istio 性能和可扩展性测试的几点:

  1. Envoy 代理每秒通过代理的每 1000 个请求使用 0.5 个 vCPU 和 50 MB 内存。这
  2. 由于 Envoy 代理不会缓冲传输中的数据,因此请求和响应速率不会影响内存消耗。
  3. 对于 HTTP/1.1 协议和启用的 mTLS,以及每秒 1000 个请求的 1kb 负载,Envoy 代理将 3.12 毫秒添加到第 90 个百分位数的延迟。

2022 年 9 月,Istio 推出了Ambient Mesh,这是一个更快、更强大的版本,依次实现 L4 安全和 L7 网络管理。Istio Ambient mesh 的数据平面基于 Rust 构建,具有新的架构;因此,它应该很快。该项目处于测试阶段,将于 2023 年底正式发布,供生产使用。

社区支持:Istio 的贡献是 Linkerd 的 5 倍

Istio 和 Envoy 代理是两个由 500 多个组织贡献的开源项目。来自 Google、Microsoft、IBM、Lyft、Salesforce、SAP 等大型组织的开发人员为 Istio 和 Envoy Proxy 做出了巨大贡献。

另一方面,Linkerd 的贡献者有限,对该项目的贡献要少得多。超过 80% 的贡献是由 Buoyant(Linkerd 的创始人)做出的。

服务网格软件Git 贡献杰出贡献者参考链接对那个~500,000谷歌、IBM、红帽、Salesforce、VMware、英特尔、SAP、NetApp、微软、惠普点击这里左边120,000浮力 点击这里

结论

随着云和 Kubernetes 上微服务的复杂性增加,云架构师和平台团队将采用服务网格来简化网络和安全性。仅在 Kubernetes 上托管的工作负载较少的小型组织可以使用轻量级 Linkerd 服务网格。但是,如果具有许多微服务的应用程序分布在公共云中并服务于高 Web 流量,那么具有高级功能的 Istio 会更有意义。