【Linkerd】对照替代路径:istio-xds、Ambient 与 Cilium L4

💡 原文中文,约6500字,阅读约需16分钟。
📝

内容提要

本文对比Linkerd 2.20与Istio xDS、Ambient及Cilium L4的机制差异,聚焦控制面协议、数据面引擎与排障坐标。Linkerd采用专用gRPC API与per-Pod代理,适合接受专用API的团队;Istio xDS适合存量CRD或多客户端场景;Ambient在xDS内去sidecar;Cilium适合仅需L3/L4。不比较性能,仅提供机制选型依据。

🔎

延伸解读

机制分歧而非性能对比

本文明确不做 CPU 或内存排行榜,强调跨方案资源比较需固定工作负载、策略规模、mTLS 开关等条件,单个百分比是口径欺骗。选型应基于控制面协议、数据面引擎与排障坐标的机制差异,而非未经标定的性能数据。

专用 API 与通用 xDS 的取舍

Linkerd 采用专用 gRPC API 与 per-Pod 代理,适合接受专用 API、不需 xDS 多客户端的团队;Istio xDS 适合存量 CRD 或多客户端场景。若需求止步于 L3/L4,应先考虑 Cilium,而非在 Ambient 与 Linkerd 间二选一。

排障坐标决定选型

不同方案排障入口各异:Linkerd 查 destination Get() 流与 identity CSR,Istio 查 NACK/warming 与 proxy-status,Cilium 查 Hubble 与 map。选型时需考虑团队运维语言与排障习惯,避免将 Linkerd 误当轻量 istiod 而指错组件。

Q&A

Linkerd 2.20 与 Istio xDS 在控制面协议上有何主要区别?

Linkerd 2.20 使用专用的 gRPC API(linkerd2-proxy-api),包括 destination、identity、inbound 和 tap 等接口,而 Istio 使用通用的 xDS 协议(LDS/RDS/CDS/EDS 等)。Linkerd 的发现寻址是基于 per-target 的 destination.Get(service-name),而 Istio 是基于 type-subscription 按资源类型和名称集合订阅。

在什么情况下应该选择 Linkerd 而不是 Istio xDS?

当团队接受不运行 xDS,不需要 waypoint/ztunnel 或第三方 xDS 消费者共用推送语义,愿意使用 destination 按目标流和 identity CSR 进行排障,并且 mesh 范围以 linkerd2-proxy 为边界时,可以选择 Linkerd。

Istio Ambient 与 Linkerd 在数据面代理方式上有何不同?

Istio Ambient 使用节点级 ztunnel 和按需 waypoint,而 Linkerd 使用 per-Pod 的 linkerd2-proxy(2.20 默认 native sidecar,也支持 legacy init+sidecar)。Ambient 的控制面协议是 xDS,而 Linkerd 使用专用的 destination/identity API。

Cilium L4 与 Linkerd mesh 在安全机制上有何区别?

Cilium L4 使用基于 numeric identity 的 BPF map 进行策略实施,不提供默认的每跳 mTLS,而 Linkerd mesh 默认提供 meshed mTLS 和发现流。Cilium 的策略键是 numeric identity,而 Linkerd 使用 Server/AuthorizationPolicy 和 ServiceAccount 绑定证书。

在排障时,Linkerd 和 Istio 的入口有何不同?

Linkerd 的排障入口包括注入、identity CSR、destination Get() 流、策略和数据面,而 Istio 的排障入口包括 NACK/warming、proxy-status、CDS/EDS 等。例如,无端点时 Linkerd 先查 destination Get() 流和 EndpointSlice,而 Istio 先查 CDS/EDS warming。

Linkerd 和 Cilium 可以共存吗?排障时需要注意什么?

可以共存,但排障时必须先分清故障轴:连接被拒时先分清 Hubble deny 与 AuthorizationPolicy;TLS 失败时先分清 identity 证书与 Cilium 透明加密路径。

本文为什么不比较 Linkerd、Istio 和 Cilium 的性能?

因为跨方案资源比较需要固定工作负载、策略规模、是否开启 mTLS、EndpointSlice churn 和 native sidecar 默认路径等条件,单个百分比是口径欺骗。本文只聚焦机制分歧,不提供 CPU 或内存排行榜。

🏷️

标签

➡️

继续阅读