土法炼钢 · 系统与基础设施

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

文章导航

分类入口
kubernetesnetwork
标签入口
#linkerd#istio#ambient#cilium#xds#comparison#selection#v2.20

目录

前 13 篇把一次 meshed 连接拆到五轴可归因:注入与成员、identity、mTLS、destination 流、策略与数据面。接下来的问题不是「Linkerd 功能全不全」,而是:什么时候专用 gRPC 控制面与 linkerd2-proxy 路径的税不值得付——需求停在 L3/L4、需要通用 xDS 多客户端、或 Ambient 已承接 sidecar-free 基线。

本文不做 CPU 或内存排行榜。跨方案资源比较需要固定工作负载、策略规模、是否开 mTLS、EndpointSlice churn 与 native sidecar 默认路径;单个百分比是口径欺骗。这里只钉机制分歧:控制面协议如何寻址、数据面由谁消费、排障落在哪套口令。istiod 推送图、NACK/warming、Ambient ztunnel 细节不重写——机制结论外链 istio-xds/ 全书;Cilium identity/map 全书外链 cilium/

本篇在系列中的位置

篇目 核心内容
第 13 篇 · 排障坐标系 五轴归因
第 14 篇 · 对照替代路径 istio-xds / Ambient / Cilium L4
第 15 篇 · 生态与制品边界 stable / edge / Buoyant
系列目录 全部篇目

版本锚定:Linkerd 2.20(源码 tag version-2.20,2026-06-23;edge edge-26.6.3)。对照结论是机制判断。Istio 站内钉 1.30.3;Cilium 站内钉 v1.20.0。不把 linkerd.io/docs/ live 站点冒充 2.20 能力。


一、istio-xds / xDS(外链,不重写)

Istio 控制面内核 已把 istiod、xDS 推送、NACK/warming、多集群扇出与排障五轴钉到可核对精度。第 14 篇对照(Istio 侧) 用一篇收住「Linkerd 不是另一个 xDS」。本篇只补 Linkerd 侧坐标,不重写 istiod 翻译层。

机制问题 istiod / xDS(外链) Linkerd 2.20(本系列)
控制面拓扑 单进程 istiod 多能力 destination ∥ identity ∥ proxy-injector 三 Deployment
代理协议 通用 xDS(LDS/RDS/CDS/EDS/…) linkerd2-proxy-api 专用 gRPC(destination / identity / inbound / tap)
发现寻址 type-subscription:按资源类型 + 名集合订阅 per-target:destination.Get(service-name) 流式推送
错误方言 ACK/NACK、warming、proxy-status gRPC 状态码、流断开重连;无通用资源级 NACK
数据面 Envoy(及 Ambient 多客户端) linkerd2-proxy(Rust,一对一 API)
证书路径 SDS 等 xDS 资源 identity CSR 专用 API;issuer / trust anchor 分层轮转
排障入口 第 15 篇五轴 + Envoy 系列 本系列五轴(注入 / identity / destination / 策略 / 数据面)

Linkerd 赢在的前提:团队接受「不跑 xDS」——不需要 waypoint/ztunnel/第三方 xDS 消费者共用同一推送语义;愿意用 destination 按目标流 + identity CSR 排障,而不是 istioctl proxy-config 资源树;mesh 范围以 linkerd2-proxy 为边界即可。

istiod/xDS 赢在的前提:已有 VirtualService/DestinationRule 存量或必须 GAMMA/多实现 HTTPRoute 翻译到同一 RDS/CDS;需要 Envoy Filter 生态、Ambient 双客户端或 waypoint 选择性 L7;排障编制已投资 xDS NACK/warming 口令(istio-xds/11istio-xds/15)。

把 Linkerd 当成「轻量 istiod」会在第一步指错组件:无端点先查 destination Get() 流与 EndpointSlice,而不是 CDS/EDS warming;握手失败先查 identity CSR 与 trust anchor,而不是 SDS「未就绪 vs 取证失败」状态机(对照 envoy/11)。


二、Ambient

Istio Ambient(ztunnel + waypoint + 可选 agentgateway)是 仍在 xDS 语义内 砍掉 per-Pod sidecar 的路径:istio-xds/13 钉住 ztunnel/waypoint 作为 xDS 客户端、L4 基线与选择性 L7 分工。与 Linkerd 的对比不是「谁更轻」口号,而是 税落在哪一层

机制问题 Ambient(外链) Linkerd 2.20
sidecar 税 节点级 ztunnel + 按需 waypoint per-Pod linkerd2-proxy(2.20 native sidecar 默认;legacy init+sidecar 仍支持)
控制面协议 xDS(Address、WorkloadAuthorization 等) 专用 destination / identity API
L4 基线 ztunnel 隧道 init/CNI 重定向 + proxy inbound/outbound
L7 选择性 waypoint Envoy ServiceProfile + policy CRD;GAPI 1.5.1 门(第 11 篇)
排障 istiod 五轴 + Ambient 客户端类型 本系列五轴;无 type-subscription

Ambient 赢在的前提:已选 Istio 生态、sidecar 内存/注入税不可接受,但仍要 xDS 统一翻译与 waypoint 上的 Envoy L7;编制能区分 ztunnel vs waypoint 失败(architecture/76 税地图)。

Linkerd 赢在的前提:不想承担 istiod + 多 xDS 客户端复杂度;接受 per-workload proxy 但希望专用 API 与三组件故障域分列;不需要 waypoint 与 ztunnel 双轨排障。

两者都不是 eBPF L4 CNI:Ambient 的 ztunnel 仍订阅 xDS;Linkerd 仍走用户态 proxy 跳。若需求止步于内核 identity + L3/L4,应先问 Cilium 叶,而不是在 Ambient 与 Linkerd 之间二选一。


三、Cilium L4

Cilium / eBPF 数据面 把转发与策略放在 BPF map + numeric identity 上,不生成 xDS 资源,也不经过 linkerd2-proxy。Hubble verdict 与 destination 空流、identity CSR 失败是不同方言(cilium/13 vs 本系列第 13 篇)。

机制问题 Cilium eBPF L4(外链) Linkerd mesh
是否 mesh CNI + 可选 L7 Envoy;非默认每跳 mTLS 代理 默认 meshed mTLS + 发现
策略键 numeric identity Server / AuthorizationPolicy + ServiceAccount 绑定证书
Service KPR 时 BPF LB kube-proxy + destination 端点富化
L7 可选;非主业 ServiceProfile、policy;非 Envoy Filter 链
观测 Hubble proxy metrics / tap;无 Hubble 同构
排障 identity / map / Hubble 五轴 injector→identity→destination→proxy 五轴

Cilium L4 赢在的前提:东西向只需 identity-centric NetworkPolicy +(可选)Hubble;不需要每连接 mTLS 与 mesh 发现流;愿意把 L7 交给独立网关或少数 sidecar(cilium/16 排除树)。

Linkerd 赢在的前提:要把 默认 meshed mTLS + 按目标发现流 当作一等能力;策略与路由要进 destination 响应;值班语言是「未 mesh / 握手失败 / 无端点」而不是「CNP deny / map 压力」。

同一集群可并存 Cilium CNI 与 Linkerd mesh,但排障必须先点名轴:连接被拒先分清 Hubble deny 与 AuthorizationPolicy;TLS 失败先分清 identity 证书与 Cilium 透明加密路径。联合 runbook 仍开放(第 16 篇),本篇不编造「告警字段已自动 join」。


四、机制差表(协议 × 数据面 × 排障坐标)

flowchart LR
  subgraph xds ["istiod / xDS path"]
    istiod["istiod"] -->|"type subscription"| envoy["Envoy / ztunnel / waypoint"]
  end
  subgraph ld ["Linkerd path"]
    dest["destination"] -->|"per-target Get stream"| lproxy["linkerd2-proxy"]
    ident["identity"] -->|"CSR sign"| lproxy
    inj["proxy-injector"] --> lproxy
  end
  subgraph cil ["Cilium L4 path"]
    bpf["BPF maps"] --> fwd["kernel forward"]
    id["identity allocator"] --> bpf
  end
路径 控制面协议 数据面引擎 排障主坐标 典型前提
istiod / xDS 通用 xDS gRPC Envoy(+ Ambient 客户端) NACK/warming、proxy-status、CDS/EDS 存量 Istio CRD 或 GAMMA;多 xDS 消费者
Ambient xDS(Address 等) ztunnel + waypoint Envoy 客户端类型 + istiod 五轴 Istio 生态内砍 sidecar;仍付 xDS 税
Linkerd 2.20 linkerd2-proxy-api linkerd2-proxy 注入 / CSR / Get() 流 / policy / proxy 专用 API 可接受;三组件分列运维
Cilium L4 无 xDS eBPF TC/XDP + map identity / map / Hubble 仅 L3/L4;mesh mTLS 非刚需

表后必须说清假设。Linkerd 不等于「没有控制面」——destination 内存与 EndpointSlice churn 仍是运维门(第 5、12 篇)。Ambient 不等于「没有 proxy」——waypoint 仍是 Envoy。Cilium 不等于「不能 L7」——L7 往往另开代理或 Gateway,机制不在本表同一列。

选型树见 第 16 篇。对照阅读路径:已读 istio-xds/14 的读者,用本篇补 Linkerd 侧排障坐标;已读本系列 01–13 的读者,用本篇决定何时应回到 istiod 或纯 CNI。


五、不写 CPU 榜

下列内容明确不在本篇

要做的事:用第四节表回答「协议 × 数据面 × 排障坐标」;用第五节边界把争论从海报拉回机制判据。产品级勾选综述见 observability/15,互补不替代。


参考资料

规范 / 官方文档 / 源码(A)

站内对照

实验台账


上一篇排障坐标系

下一篇生态与制品边界

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。

2026-08-11 · network / kubernetes

Istio / 网格控制面内核:从 CRD 到 xDS

补齐 Envoy 数据面 xDS 消费侧与 Mesh 选型叙事之间的控制面内核:istiod 推送图、CRD/HTTPRoute 翻译、Ambient 多客户端、NACK/warming 责任与排障对齐。


By .