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

【Linkerd】排障坐标系:五轴否证与 native/legacy 证据包

文章导航

分类入口
kubernetesnetwork
标签入口
#linkerd#troubleshooting#five-axes#native-sidecar#mTLS#destination#proxy-injector#v2.20

目录

「Pod Running 但流量没进 mesh」与「meshed 但 403/502」很少落在同一层。前者可能是 proxy-injector、native sidecar 启动顺序或 iptables/CNI;后者可能是 identity CSR、destination 空流、AuthorizationPolicy 或 linkerd2-proxy 健康。一上来重装控制面或改 ServiceProfile,会把可恢复的轴 3 问题放大成双故障。

本文是系列第 13 篇:按第 1 篇PLAN.md §八做症状 → 轴映射。口诀不变:先点名轴,再下钻组件native sidecar(2.20 默认)与 legacy init+sidecar 在轴 1–2 分列证据包。升级与 trust 门见第 12 篇。无 Linkerd 集群则不粘贴伪造 linkerd check / viz 指标。

本篇在系列中的位置

篇目 核心内容
第 12 篇 · 运维与升级 trust anchor 与 destination 内存门
第 13 篇 · 排障坐标系 五轴否证;native/legacy 证据包
第 14 篇 · 对照替代路径 istio-xds、Ambient、Cilium L4
系列目录 全部篇目

版本锚定:Linkerd 2.20(tag version-2.20)。linkerd check 分类以该版本 CLI 语义为准。Istio 侧排障五轴见 istio-xds/15——同名「五轴」不是同一坐标系


一、口诀

轴 1 注入与网格成员   — proxy-injector;namespace 注解;native sidecar vs init+sidecar;opaque ports
轴 2 身份与 mTLS      — identity CSR;工作负载 cert;issuer / trust anchor
轴 3 destination/发现 — destination.Get 流;EndpointSlice;端点富化(identity/zone)
轴 4 策略与 L7        — Server、AuthorizationPolicy、MeshTLSAuthentication;ServiceProfile;GAPI HTTPRoute
轴 5 数据面与健康     — linkerd2-proxy inbound/outbound;metrics/tap;destination 控制面 OOM

native vs legacy 分列:证据包标题须写明注入路径——例如 native-sidecar-2.20legacy-init-sidecar。轴 1 的「缺 proxy 容器」在 native 路径可能是 sidecar 启动门未满足;在 legacy 路径可能是 init 未完成。不可混贴 iptables 证据与 restartPolicy: Never Job 的 sidecar 语义。

flowchart TD
  symptom["Symptom"]
  symptom --> name["Name Linkerd axis first"]
  name --> a1["Axis1 inject membership"]
  name --> a2["Axis2 identity mTLS"]
  name --> a3["Axis3 destination discovery"]
  name --> a4["Axis4 policy L7"]
  name --> a5["Axis5 dataplane health"]
  a1 --> split["Split native vs legacy evidence"]

症状 → 轴(入口表)

症状(入口) 优先轴 先查 不要先做
Pod 无 linkerd-proxy / 未注入 1 namespace 注解、injector webhook、是否跳过注入 改 destination
Job/CronJob 未完成或永不 Ready 1 native sidecar 与完成语义;legacy init 退出码 当成应用 bug
TLS handshake error / 身份不匹配 2 工作负载 cert、issuer、trust anchor bundle 改 ServiceProfile 路由
无端点 / 错后端 / 发现延迟 3 Get() 流、EndpointSlice、Service 端口 重装 proxy-injector
403 / 策略拒绝 / 路由不命中 4 Server、AuthorizationPolicy、SP/GAPI 是否被加载 先升控制面
502 / 超时 / viz 无指标 5(先否证 1–4) proxy 日志、inbound/outbound;destination OOM 当成「对端未 mesh」
跨集群调用失败 2 + 11 共享 trust anchor、gateway、export 标签 单集群 destination 口诀

默认顺序:轴 1 成员资格 → 轴 2 握手 → 轴 3 端点 → 轴 4 策略/L7 → 轴 5 数据面。一次否证一轴。


二、注入失败

表象:Pod 未 mesh;无 linkerd-proxy 容器;流量绕过 sidecar;opaque 端口行为与预期不符。

分列证据包

路径 证据包要点
native sidecar(2.20 默认) Pod spec restartPolicy、sidecar 容器 restartPolicy: Always;启动门与主容器就绪顺序(第 2 篇
legacy init+sidecar linkerd-init 完成态;iptables 规则或 CNI 注解(第 3 篇
共用 linkerd.io/inject、namespace 注解;config.linkerd.io/skip-inbound-ports / opaque 配置
子问题 动作
webhook 未命中 1 查 proxy-injector、API server 调用失败
注入被跳过 1 查注解与版本门
重定向未生效 1→3 边界 先完成轴 1 再查流量是否到达 proxy

三、identity 失败

表象:meshed Pod 间 TLS handshake error;证书 SAN 与 ServiceAccount 不符;anchor 轮转后全挂。

子问题 核对
工作负载证书 CSR 是否由 identity 签发;自动轮转是否停滞
Issuer 是否由当前 trust anchor 签发(第 12 篇
Trust anchor bundle 窗口内是否已滚动全 mesh;multicluster 各集群是否一致
与 Envoy SDS 对照 外链 envoy/11;Linkerd 无 SDS,勿查 Secret xDS

「握手失败」在否证轴 1 后优先轴 2,不要先改 ServiceProfile(轴 4)。


四、destination 与策略

表象linkerd routes / viz 显示无路由;调用直连 ClusterIP 有响应、经 mesh 无端点;403;SP 校验 webhook 拒绝。

子问题 动作
空端点、错 subset 3 EndpointSlice、destination Get()第 7 篇
策略拒绝 4 AuthorizationPolicy、Server port(第 8 篇
SP 未生效 / 校验失败 4 sp-validator、CRD 字段(第 9 篇
GAPI 路由沉默 4 CRD 版本与字段是否 ⊆ GAPI 1.2.1(第 11 篇

与「对端未 mesh」区分:未 mesh 常表现为明文或非预期路径(轴 1);meshed 但空流是轴 3。勿把两者都说成「网络不通」。


五、数据面与健康

表象:502 Bad Gateway;请求超时;tap/metrics 无入站流量;destination Pod OOM 或内存持续上涨。

子问题 核对
proxy 进程健康 inbound/outbound 监听;是否与控制面 API 版本匹配
限流与 LB HTTP 429 风暴是否需 Load Biaser(第 10 篇
destination 控制面 2.20 内存重构是否已部署(第 12 篇);EndpointSlice churn
tap / metrics 轴 5 观测;非根因

轴 5 与轴 3 分界:destination 已推送端点且策略允许,但 proxy 仍 502 → 查 proxy 与对端 inbound;destination 未推送 → 留在轴 3–4。


六、与 istio-xds 五轴不混因果

项目 Linkerd 本系列 istio-xds 系列
控制面协议 linkerd2-proxy-api gRPC;per-target Get() xDS;type-subscription;ADS
排障入口 本文五轴 + native/legacy 分列 istio-xds/15
典型口令 「先点名轴」→ destination 流 / identity CSR Listener/Cluster warming、xDS NACK
数据面 linkerd2-proxy Envoy

同集群可能并存 Istio 与 Linkerd 的讨论第 14 篇,但证据包不可混贴

需要 xDS/istiod 全书坐标时,回到 istio-xds/;需要 Envoy Filter 坐标时,回到 envoy/


参考资料

本系列(A)

对照(勿混因果)

官方(A)


上一篇运维与升级

下一篇对照替代路径

读完这篇,下一步读什么

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


By .